diff options
Diffstat (limited to 'mesonbuild/backend')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 15 | ||||
-rw-r--r-- | mesonbuild/backend/vs2010backend.py | 10 |
2 files changed, 24 insertions, 1 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index d2ba49f..2e6e351 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1814,6 +1814,19 @@ rule FORTRAN_DEP_HACK relout = self.get_target_private_dir(target) args = self.replace_paths(target, args) cmdlist = exe_arr + self.replace_extra_args(args, genlist) + if generator.capture: + exe_data = self.serialize_executable( + cmdlist[0], + cmdlist[1:], + self.environment.get_build_dir(), + capture=outfiles[0] + ) + cmd = self.environment.get_build_command() + ['--internal', 'exe', exe_data] + abs_pdir = os.path.join(self.environment.get_build_dir(), self.get_target_dir(target)) + os.makedirs(abs_pdir, exist_ok=True) + else: + cmd = cmdlist + elem = NinjaBuildElement(self.all_outputs, outfiles, rulename, infilename) if generator.depfile is not None: elem.add_item('DEPFILE', depfile) @@ -1822,7 +1835,7 @@ rule FORTRAN_DEP_HACK elem.add_item('DESC', 'Generating {!r}.'.format(sole_output)) if isinstance(exe, build.BuildTarget): elem.add_dep(self.get_target_filename(exe)) - elem.add_item('COMMAND', cmdlist) + elem.add_item('COMMAND', cmd) elem.write(outfile) def scan_fortran_module_outputs(self, target): diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py index cb8dad6..2d18b0e 100644 --- a/mesonbuild/backend/vs2010backend.py +++ b/mesonbuild/backend/vs2010backend.py @@ -128,6 +128,16 @@ class Vs2010Backend(backends.Backend): .replace("@BUILD_ROOT@", self.environment.get_build_dir()) for x in args] cmd = exe_arr + self.replace_extra_args(args, genlist) + if generator.capture: + exe_data = self.serialize_executable( + cmd[0], + cmd[1:], + self.environment.get_build_dir(), + capture=outfiles[0] + ) + cmd = self.environment.get_build_command() + ['--internal', 'exe', exe_data] + abs_pdir = os.path.join(self.environment.get_build_dir(), self.get_target_dir(target)) + os.makedirs(abs_pdir, exist_ok=True) cbs = ET.SubElement(idgroup, 'CustomBuild', Include=infilename) ET.SubElement(cbs, 'Command').text = ' '.join(self.quote_arguments(cmd)) ET.SubElement(cbs, 'Outputs').text = ';'.join(outfiles) |