Index: pylib/gyp/generator/msvs.py |
diff --git a/pylib/gyp/generator/msvs.py b/pylib/gyp/generator/msvs.py |
index e20cee1fe879c16e3bb52af3fc143e1ace09bc03..d1e91c1bc7cfc20df1dc5d164631873093258c4f 100644 |
--- a/pylib/gyp/generator/msvs.py |
+++ b/pylib/gyp/generator/msvs.py |
@@ -81,6 +81,7 @@ generator_additional_non_configuration_keys = [ |
'msvs_external_builder_out_dir', |
'msvs_external_builder_build_cmd', |
'msvs_external_builder_clean_cmd', |
+ 'msvs_external_builder_clcompile_cmd', |
] |
@@ -1862,6 +1863,14 @@ def _InitNinjaFlavor(options, target_list, target_dicts): |
'clean', |
'$(ProjectName)', |
] |
+ if not spec.get('msvs_external_builder_clcompile_cmd'): |
+ spec['msvs_external_builder_clcompile_cmd'] = [ |
+ sys.executable, |
+ '$(OutDir)/gyp-win-tool', |
+ 'cl-compile', |
+ '$(ProjectDir)', |
+ '$(SelectedFiles)', |
+ ] |
def CalculateVariables(default_variables, params): |
@@ -3233,7 +3242,9 @@ def _GenerateMSBuildProject(project, options, version, generator_flags): |
def _GetMSBuildExternalBuilderTargets(spec): |
"""Return a list of MSBuild targets for external builders. |
- Right now, only "Build" and "Clean" targets are generated. |
+ The "Build" and "Clean" targets are always generated. If the spec contains |
+ 'msvs_external_builder_clcompile_cmd', then the "ClCompile" target will also |
+ be generated, to support building selected C/C++ files. |
Arguments: |
spec: The gyp target spec. |
@@ -3252,7 +3263,17 @@ def _GetMSBuildExternalBuilderTargets(spec): |
clean_target = ['Target', {'Name': 'Clean'}] |
clean_target.append(['Exec', {'Command': clean_cmd}]) |
- return [build_target, clean_target] |
+ targets = [build_target, clean_target] |
+ |
+ if spec.get('msvs_external_builder_clcompile_cmd'): |
+ clcompile_cmd = _BuildCommandLineForRuleRaw( |
+ spec, spec['msvs_external_builder_clcompile_cmd'], |
+ False, False, False, False) |
+ clcompile_target = ['Target', {'Name': 'ClCompile'}] |
+ clcompile_target.append(['Exec', {'Command': clcompile_cmd}]) |
+ targets.append(clcompile_target) |
+ |
+ return targets |
def _GetMSBuildExtensions(props_files_of_rules): |