diff options
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 6 | ||||
-rw-r--r-- | mesonbuild/compilers/cython.py | 10 |
2 files changed, 14 insertions, 2 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 619bf7c..92d9bdd 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -2234,10 +2234,14 @@ class NinjaBackend(backends.Backend): description = 'Compiling Cython source $in' command = compiler.get_exelist() - args = ['$ARGS', '$in'] + depargs = compiler.get_dependency_gen_args('$out', '$DEPFILE') + depfile = '$out.dep' if depargs else None + + args = depargs + ['$ARGS', '$in'] args += NinjaCommandArg.list(compiler.get_output_args('$out'), Quoting.none) self.add_rule(NinjaRule(rule, command + args, [], description, + depfile=depfile, extra='restat = 1')) def generate_rust_compile_rules(self, compiler): diff --git a/mesonbuild/compilers/cython.py b/mesonbuild/compilers/cython.py index 763279e..9bbfebe 100644 --- a/mesonbuild/compilers/cython.py +++ b/mesonbuild/compilers/cython.py @@ -7,7 +7,7 @@ from __future__ import annotations import typing as T from .. import coredata -from ..mesonlib import EnvironmentException, OptionKey +from ..mesonlib import EnvironmentException, OptionKey, version_compare from .compilers import Compiler if T.TYPE_CHECKING: @@ -40,6 +40,14 @@ class CythonCompiler(Compiler): # compiler might though return [] + def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]: + if version_compare(self.version, '>=0.29.33'): + return ['-M'] + return [] + + def get_depfile_suffix(self) -> str: + return 'dep' + def sanity_check(self, work_dir: str, environment: 'Environment') -> None: code = 'print("hello world")' with self.cached_compile(code, environment.coredata) as p: |