From 6ea24ee9e29a03c42665be8f1ec2f9c635fb985a Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Thu, 1 Dec 2022 00:27:51 -0500 Subject: backends: handle cython ninja rules a bit more idiomatically We want to use as much default ninja behavior as we can, so reuse $out instead of repeating the output file as a string in $ARGS, and raise that into the build rule so it is only listed once. --- mesonbuild/backend/ninjabackend.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'mesonbuild') diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 5722cbb..619bf7c 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1703,8 +1703,6 @@ class NinjaBackend(backends.Backend): for src in target.get_sources(): if src.endswith('.pyx'): output = os.path.join(self.get_target_private_dir(target), f'{src}.{ext}') - args = args.copy() - args += cython.get_output_args(output) element = NinjaBuildElement( self.all_outputs, [output], self.compiler_to_rule_name(cython), @@ -1725,9 +1723,7 @@ class NinjaBackend(backends.Backend): else: ssrc = os.path.join(gen.get_subdir(), ssrc) if ssrc.endswith('.pyx'): - args = args.copy() output = os.path.join(self.get_target_private_dir(target), f'{ssrc}.{ext}') - args += cython.get_output_args(output) element = NinjaBuildElement( self.all_outputs, [output], self.compiler_to_rule_name(cython), @@ -2235,9 +2231,14 @@ class NinjaBackend(backends.Backend): def generate_cython_compile_rules(self, compiler: 'Compiler') -> None: rule = self.compiler_to_rule_name(compiler) - command = compiler.get_exelist() + ['$ARGS', '$in'] description = 'Compiling Cython source $in' - self.add_rule(NinjaRule(rule, command, [], description, extra='restat = 1')) + command = compiler.get_exelist() + + args = ['$ARGS', '$in'] + args += NinjaCommandArg.list(compiler.get_output_args('$out'), Quoting.none) + self.add_rule(NinjaRule(rule, command + args, [], + description, + extra='restat = 1')) def generate_rust_compile_rules(self, compiler): rule = self.compiler_to_rule_name(compiler) -- cgit v1.1