| OLD | NEW |
| 1 # Copyright (c) 2012 Google Inc. All rights reserved. | 1 # Copyright (c) 2012 Google Inc. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import collections | 5 import collections |
| 6 import copy | 6 import copy |
| 7 import ntpath | 7 import ntpath |
| 8 import os | 8 import os |
| 9 import posixpath | 9 import posixpath |
| 10 import re | 10 import re |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 | 74 |
| 75 generator_additional_non_configuration_keys = [ | 75 generator_additional_non_configuration_keys = [ |
| 76 'msvs_cygwin_dirs', | 76 'msvs_cygwin_dirs', |
| 77 'msvs_cygwin_shell', | 77 'msvs_cygwin_shell', |
| 78 'msvs_large_pdb', | 78 'msvs_large_pdb', |
| 79 'msvs_shard', | 79 'msvs_shard', |
| 80 'msvs_external_builder', | 80 'msvs_external_builder', |
| 81 'msvs_external_builder_out_dir', | 81 'msvs_external_builder_out_dir', |
| 82 'msvs_external_builder_build_cmd', | 82 'msvs_external_builder_build_cmd', |
| 83 'msvs_external_builder_clean_cmd', | 83 'msvs_external_builder_clean_cmd', |
| 84 'msvs_external_builder_clcompile_cmd', |
| 84 ] | 85 ] |
| 85 | 86 |
| 86 | 87 |
| 87 # List of precompiled header related keys. | 88 # List of precompiled header related keys. |
| 88 precomp_keys = [ | 89 precomp_keys = [ |
| 89 'msvs_precompiled_header', | 90 'msvs_precompiled_header', |
| 90 'msvs_precompiled_source', | 91 'msvs_precompiled_source', |
| 91 ] | 92 ] |
| 92 | 93 |
| 93 | 94 |
| (...skipping 1761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1855 ] | 1856 ] |
| 1856 if not spec.get('msvs_external_builder_clean_cmd'): | 1857 if not spec.get('msvs_external_builder_clean_cmd'): |
| 1857 spec['msvs_external_builder_clean_cmd'] = [ | 1858 spec['msvs_external_builder_clean_cmd'] = [ |
| 1858 path_to_ninja, | 1859 path_to_ninja, |
| 1859 '-C', | 1860 '-C', |
| 1860 '$(OutDir)', | 1861 '$(OutDir)', |
| 1861 '-t', | 1862 '-t', |
| 1862 'clean', | 1863 'clean', |
| 1863 '$(ProjectName)', | 1864 '$(ProjectName)', |
| 1864 ] | 1865 ] |
| 1866 if not spec.get('msvs_external_builder_clcompile_cmd'): |
| 1867 spec['msvs_external_builder_clcompile_cmd'] = [ |
| 1868 sys.executable, |
| 1869 '$(OutDir)/gyp-win-tool', |
| 1870 'cl-compile', |
| 1871 '$(ProjectDir)', |
| 1872 '$(SelectedFiles)', |
| 1873 ] |
| 1865 | 1874 |
| 1866 | 1875 |
| 1867 def CalculateVariables(default_variables, params): | 1876 def CalculateVariables(default_variables, params): |
| 1868 """Generated variables that require params to be known.""" | 1877 """Generated variables that require params to be known.""" |
| 1869 | 1878 |
| 1870 generator_flags = params.get('generator_flags', {}) | 1879 generator_flags = params.get('generator_flags', {}) |
| 1871 | 1880 |
| 1872 # Select project file format version (if unset, default to auto detecting). | 1881 # Select project file format version (if unset, default to auto detecting). |
| 1873 msvs_version = MSVSVersion.SelectVisualStudioVersion( | 1882 msvs_version = MSVSVersion.SelectVisualStudioVersion( |
| 1874 generator_flags.get('msvs_version', 'auto')) | 1883 generator_flags.get('msvs_version', 'auto')) |
| (...skipping 1351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3226 # has_run_as = _WriteMSVSUserFile(project.path, version, spec) | 3235 # has_run_as = _WriteMSVSUserFile(project.path, version, spec) |
| 3227 | 3236 |
| 3228 easy_xml.WriteXmlIfChanged(content, project.path, pretty=True, win32=True) | 3237 easy_xml.WriteXmlIfChanged(content, project.path, pretty=True, win32=True) |
| 3229 | 3238 |
| 3230 return missing_sources | 3239 return missing_sources |
| 3231 | 3240 |
| 3232 | 3241 |
| 3233 def _GetMSBuildExternalBuilderTargets(spec): | 3242 def _GetMSBuildExternalBuilderTargets(spec): |
| 3234 """Return a list of MSBuild targets for external builders. | 3243 """Return a list of MSBuild targets for external builders. |
| 3235 | 3244 |
| 3236 Right now, only "Build" and "Clean" targets are generated. | 3245 The "Build" and "Clean" targets are always generated. If the spec contains |
| 3246 'msvs_external_builder_clcompile_cmd', then the "ClCompile" target will also |
| 3247 be generated, to support building selected C/C++ files. |
| 3237 | 3248 |
| 3238 Arguments: | 3249 Arguments: |
| 3239 spec: The gyp target spec. | 3250 spec: The gyp target spec. |
| 3240 Returns: | 3251 Returns: |
| 3241 List of MSBuild 'Target' specs. | 3252 List of MSBuild 'Target' specs. |
| 3242 """ | 3253 """ |
| 3243 build_cmd = _BuildCommandLineForRuleRaw( | 3254 build_cmd = _BuildCommandLineForRuleRaw( |
| 3244 spec, spec['msvs_external_builder_build_cmd'], | 3255 spec, spec['msvs_external_builder_build_cmd'], |
| 3245 False, False, False, False) | 3256 False, False, False, False) |
| 3246 build_target = ['Target', {'Name': 'Build'}] | 3257 build_target = ['Target', {'Name': 'Build'}] |
| 3247 build_target.append(['Exec', {'Command': build_cmd}]) | 3258 build_target.append(['Exec', {'Command': build_cmd}]) |
| 3248 | 3259 |
| 3249 clean_cmd = _BuildCommandLineForRuleRaw( | 3260 clean_cmd = _BuildCommandLineForRuleRaw( |
| 3250 spec, spec['msvs_external_builder_clean_cmd'], | 3261 spec, spec['msvs_external_builder_clean_cmd'], |
| 3251 False, False, False, False) | 3262 False, False, False, False) |
| 3252 clean_target = ['Target', {'Name': 'Clean'}] | 3263 clean_target = ['Target', {'Name': 'Clean'}] |
| 3253 clean_target.append(['Exec', {'Command': clean_cmd}]) | 3264 clean_target.append(['Exec', {'Command': clean_cmd}]) |
| 3254 | 3265 |
| 3255 return [build_target, clean_target] | 3266 targets = [build_target, clean_target] |
| 3267 |
| 3268 if spec.get('msvs_external_builder_clcompile_cmd'): |
| 3269 clcompile_cmd = _BuildCommandLineForRuleRaw( |
| 3270 spec, spec['msvs_external_builder_clcompile_cmd'], |
| 3271 False, False, False, False) |
| 3272 clcompile_target = ['Target', {'Name': 'ClCompile'}] |
| 3273 clcompile_target.append(['Exec', {'Command': clcompile_cmd}]) |
| 3274 targets.append(clcompile_target) |
| 3275 |
| 3276 return targets |
| 3256 | 3277 |
| 3257 | 3278 |
| 3258 def _GetMSBuildExtensions(props_files_of_rules): | 3279 def _GetMSBuildExtensions(props_files_of_rules): |
| 3259 extensions = ['ImportGroup', {'Label': 'ExtensionSettings'}] | 3280 extensions = ['ImportGroup', {'Label': 'ExtensionSettings'}] |
| 3260 for props_file in props_files_of_rules: | 3281 for props_file in props_files_of_rules: |
| 3261 extensions.append(['Import', {'Project': props_file}]) | 3282 extensions.append(['Import', {'Project': props_file}]) |
| 3262 return [extensions] | 3283 return [extensions] |
| 3263 | 3284 |
| 3264 | 3285 |
| 3265 def _GetMSBuildExtensionTargets(targets_files_of_rules): | 3286 def _GetMSBuildExtensionTargets(targets_files_of_rules): |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3333 action_spec.extend( | 3354 action_spec.extend( |
| 3334 # TODO(jeanluc) 'Document' for all or just if as_sources? | 3355 # TODO(jeanluc) 'Document' for all or just if as_sources? |
| 3335 [['FileType', 'Document'], | 3356 [['FileType', 'Document'], |
| 3336 ['Command', command], | 3357 ['Command', command], |
| 3337 ['Message', description], | 3358 ['Message', description], |
| 3338 ['Outputs', outputs] | 3359 ['Outputs', outputs] |
| 3339 ]) | 3360 ]) |
| 3340 if additional_inputs: | 3361 if additional_inputs: |
| 3341 action_spec.append(['AdditionalInputs', additional_inputs]) | 3362 action_spec.append(['AdditionalInputs', additional_inputs]) |
| 3342 actions_spec.append(action_spec) | 3363 actions_spec.append(action_spec) |
| OLD | NEW |