aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Schneider <nioncode+git@gmail.com>2016-02-23 00:22:08 +0100
committerNicolas Schneider <nioncode+git@gmail.com>2016-02-23 01:04:27 +0100
commited6c0e1fa6a1d1709ace6b3e8c26d1a2d1546cb2 (patch)
treefeca95492835910dec13fbd02b89e3bd22e619b5
parentd79f402769a7e590e3bf4ab4e9bdf28650d44c92 (diff)
downloadmeson-ed6c0e1fa6a1d1709ace6b3e8c26d1a2d1546cb2.zip
meson-ed6c0e1fa6a1d1709ace6b3e8c26d1a2d1546cb2.tar.gz
meson-ed6c0e1fa6a1d1709ace6b3e8c26d1a2d1546cb2.tar.bz2
vs2010: merge all generators into single command invocation
MSBuild does not allow multiple CustomBuildStep elements. Therefore, all input / output files and generator commands must be concatenated and put into a single CustomBuildStep.
-rw-r--r--mesonbuild/backend/vs2010backend.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py
index fef8a91..6d97cdd 100644
--- a/mesonbuild/backend/vs2010backend.py
+++ b/mesonbuild/backend/vs2010backend.py
@@ -39,6 +39,9 @@ class Vs2010Backend(backends.Backend):
def generate_custom_generator_commands(self, target, parent_node):
idgroup = ET.SubElement(parent_node, 'ItemDefinitionGroup')
all_output_files = []
+ commands = []
+ inputs = []
+ outputs = []
for genlist in target.get_generated_sources():
if isinstance(genlist, build.CustomTarget):
all_output_files += [os.path.join(self.get_target_dir(genlist), i) for i in genlist.output]
@@ -67,11 +70,14 @@ class Vs2010Backend(backends.Backend):
args = [x.replace("@SOURCE_DIR@", self.environment.get_source_dir()).replace("@BUILD_DIR@", self.get_target_private_dir(target))
for x in args]
fullcmd = [exe_file] + args
- cbs = ET.SubElement(idgroup, 'CustomBuildStep')
- ET.SubElement(cbs, 'Command').text = ' '.join(self.special_quote(fullcmd))
- ET.SubElement(cbs, 'Inputs').text = infilename
- ET.SubElement(cbs, 'Outputs').text = ';'.join(outfiles)
- ET.SubElement(cbs, 'Message').text = 'Generating sources from %s.' % infilename
+ commands.append(' '.join(self.special_quote(fullcmd)))
+ inputs.append(infilename)
+ outputs.extend(outfiles)
+ cbs = ET.SubElement(idgroup, 'CustomBuildStep')
+ ET.SubElement(cbs, 'Command').text = '\r\n'.join(commands)
+ ET.SubElement(cbs, 'Inputs').text = ";".join(inputs)
+ ET.SubElement(cbs, 'Outputs').text = ';'.join(outputs)
+ ET.SubElement(cbs, 'Message').text = 'Generating custom sources.'
pg = ET.SubElement(parent_node, 'PropertyGroup')
ET.SubElement(pg, 'CustomBuildBeforeTargets').text = 'ClCompile'
return all_output_files