aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2022-12-01 00:27:51 -0500
committerNirbheek Chauhan <nirbheek@centricular.com>2023-02-19 02:55:58 +0530
commit47188d680e593ca0925bf940e34c649e87ae2138 (patch)
treed6ba5106d7efb749de1fe646dfac8bfea797fb9f
parentd4923076fa49f180fee828c40de5947d1a1796f6 (diff)
downloadmeson-47188d680e593ca0925bf940e34c649e87ae2138.zip
meson-47188d680e593ca0925bf940e34c649e87ae2138.tar.gz
meson-47188d680e593ca0925bf940e34c649e87ae2138.tar.bz2
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.
-rw-r--r--mesonbuild/backend/ninjabackend.py13
1 files changed, 7 insertions, 6 deletions
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)