diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-06-19 18:52:13 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-06-19 14:09:57 -0400 |
commit | cccb932f8f38222dffc6d487b6f7d2d1c648096f (patch) | |
tree | cc36e360fe0c44608273b36093b0e3f51d3b67de | |
parent | 9baa740aa1f3564322f594b50684b320f0d4b298 (diff) | |
download | meson-cccb932f8f38222dffc6d487b6f7d2d1c648096f.zip meson-cccb932f8f38222dffc6d487b6f7d2d1c648096f.tar.gz meson-cccb932f8f38222dffc6d487b6f7d2d1c648096f.tar.bz2 |
Expand magic markers on custom and run targets too. Closes #1681.
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 9a48c4e..b1f6d85 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -510,12 +510,12 @@ int dummy; cmd_type = 'meson_exe.py custom' else: cmd_type = 'custom' - if target.depfile is not None: rel_dfile = os.path.join(self.get_target_dir(target), target.depfile) abs_pdir = os.path.join(self.environment.get_build_dir(), self.get_target_dir(target)) os.makedirs(abs_pdir, exist_ok=True) elem.add_item('DEPFILE', rel_dfile) + cmd = self.replace_paths(target, cmd) elem.add_item('COMMAND', cmd) elem.add_item('description', desc.format(target.name, cmd_type)) elem.write(outfile) @@ -564,7 +564,9 @@ int dummy; else: cmd.append(target.command) cmd += arg_strings + elem.add_dep(deps) + cmd = self.replace_paths(target, cmd) elem.add_item('COMMAND', cmd) elem.add_item('description', 'Running external command %s.' % target.name) elem.add_item('pool', 'console') @@ -1649,6 +1651,16 @@ rule FORTRAN_DEP_HACK continue self.generate_genlist_for_target(genlist, target, outfile) + def replace_paths(self, target, args): + source_target_dir = self.get_target_source_dir(target) + relout = self.get_target_private_dir(target) + args = [x.replace("@SOURCE_DIR@", self.build_to_src).replace("@BUILD_DIR@", relout) + for x in args] + args = [x.replace("@CURRENT_SOURCE_DIR@", source_target_dir) for x in args] + args = [x.replace("@SOURCE_ROOT@", self.build_to_src).replace("@BUILD_ROOT@", '.') + for x in args] + return args + def generate_genlist_for_target(self, genlist, target, outfile): generator = genlist.get_generator() exe = generator.get_exe() @@ -1682,11 +1694,7 @@ rule FORTRAN_DEP_HACK if sole_output == '': outfilelist = outfilelist[len(generator.outputs):] relout = self.get_target_private_dir(target) - args = [x.replace("@SOURCE_DIR@", self.build_to_src).replace("@BUILD_DIR@", relout) - for x in args] - args = [x.replace("@CURRENT_SOURCE_DIR@", source_target_dir) for x in args] - args = [x.replace("@SOURCE_ROOT@", self.build_to_src).replace("@BUILD_ROOT@", '.') - for x in args] + args = self.replace_paths(target, args) cmdlist = exe_arr + self.replace_extra_args(args, genlist) elem = NinjaBuildElement(self.all_outputs, outfiles, rulename, infilename) if generator.depfile is not None: |