Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1098)

Side by Side Diff: pylib/gyp/generator/msvs.py

Issue 23464051: Avoid MSB8012 in GYP (Closed) Base URL: https://chromium.googlesource.com/external/gyp.git@master
Patch Set: only windows Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | test/lib/TestGyp.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 copy 5 import copy
6 import ntpath 6 import ntpath
7 import os 7 import os
8 import posixpath 8 import posixpath
9 import re 9 import re
10 import subprocess 10 import subprocess
(...skipping 1185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1196 if product_extension: 1196 if product_extension:
1197 suffix = '.' + product_extension 1197 suffix = '.' + product_extension
1198 elif msbuild: 1198 elif msbuild:
1199 suffix = '$(TargetExt)' 1199 suffix = '$(TargetExt)'
1200 prefix = spec.get('product_prefix', '') 1200 prefix = spec.get('product_prefix', '')
1201 product_name = spec.get('product_name', '$(ProjectName)') 1201 product_name = spec.get('product_name', '$(ProjectName)')
1202 out_file = ntpath.join(out_dir, prefix + product_name + suffix) 1202 out_file = ntpath.join(out_dir, prefix + product_name + suffix)
1203 return out_file, vc_tool, msbuild_tool 1203 return out_file, vc_tool, msbuild_tool
1204 1204
1205 1205
1206 def _GetOutputTargetExt(spec):
1207 """Returns the extension for this target, including the dot
1208
1209 If product_extension is specified, set target_extension to this to avoid
1210 MSB8012, returns None otherwise. Ignores any target_extension settings in
1211 the input files.
1212
1213 Arguments:
1214 spec: The target dictionary containing the properties of the target.
1215 Returns:
1216 A string with the extension, or None
1217 """
1218 target_extension = spec.get('product_extension')
1219 if target_extension:
1220 return '.' + target_extension
1221 return None
1222
1223
1206 def _GetDefines(config): 1224 def _GetDefines(config):
1207 """Returns the list of preprocessor definitions for this configuation. 1225 """Returns the list of preprocessor definitions for this configuation.
1208 1226
1209 Arguments: 1227 Arguments:
1210 config: The dictionary that defines the special processing to be done 1228 config: The dictionary that defines the special processing to be done
1211 for this configuration. 1229 for this configuration.
1212 Returns: 1230 Returns:
1213 The list of preprocessor definitions. 1231 The list of preprocessor definitions.
1214 """ 1232 """
1215 defines = [] 1233 defines = []
(...skipping 1429 matching lines...) Expand 10 before | Expand all | Expand 10 after
2645 'shared_library': 'Link', 2663 'shared_library': 'Link',
2646 'loadable_module': 'Link', 2664 'loadable_module': 'Link',
2647 'static_library': 'Lib', 2665 'static_library': 'Lib',
2648 } 2666 }
2649 msbuild_tool = msbuild_tool_map.get(spec['type']) 2667 msbuild_tool = msbuild_tool_map.get(spec['type'])
2650 if msbuild_tool: 2668 if msbuild_tool:
2651 msbuild_settings = config['finalized_msbuild_settings'] 2669 msbuild_settings = config['finalized_msbuild_settings']
2652 out_file = msbuild_settings[msbuild_tool].get('OutputFile') 2670 out_file = msbuild_settings[msbuild_tool].get('OutputFile')
2653 if out_file: 2671 if out_file:
2654 msbuild_attributes['TargetPath'] = _FixPath(out_file) 2672 msbuild_attributes['TargetPath'] = _FixPath(out_file)
2673 target_ext = msbuild_settings[msbuild_tool].get('TargetExt')
2674 if target_ext:
2675 msbuild_attributes['TargetExt'] = target_ext
2655 2676
2656 return msbuild_attributes 2677 return msbuild_attributes
2657 2678
2658 2679
2659 def _GetMSBuildConfigurationGlobalProperties(spec, configurations, build_file): 2680 def _GetMSBuildConfigurationGlobalProperties(spec, configurations, build_file):
2660 # TODO(jeanluc) We could optimize out the following and do it only if 2681 # TODO(jeanluc) We could optimize out the following and do it only if
2661 # there are actions. 2682 # there are actions.
2662 # TODO(jeanluc) Handle the equivalent of setting 'CYGWIN=nontsec'. 2683 # TODO(jeanluc) Handle the equivalent of setting 'CYGWIN=nontsec'.
2663 new_paths = [] 2684 new_paths = []
2664 cygwin_dirs = spec.get('msvs_cygwin_dirs', ['.'])[0] 2685 cygwin_dirs = spec.get('msvs_cygwin_dirs', ['.'])[0]
(...skipping 15 matching lines...) Expand all
2680 _AddConditionalProperty(properties, condition, 'IntDir', 2701 _AddConditionalProperty(properties, condition, 'IntDir',
2681 attributes['IntermediateDirectory']) 2702 attributes['IntermediateDirectory'])
2682 _AddConditionalProperty(properties, condition, 'OutDir', 2703 _AddConditionalProperty(properties, condition, 'OutDir',
2683 attributes['OutputDirectory']) 2704 attributes['OutputDirectory'])
2684 _AddConditionalProperty(properties, condition, 'TargetName', 2705 _AddConditionalProperty(properties, condition, 'TargetName',
2685 attributes['TargetName']) 2706 attributes['TargetName'])
2686 2707
2687 if attributes.get('TargetPath'): 2708 if attributes.get('TargetPath'):
2688 _AddConditionalProperty(properties, condition, 'TargetPath', 2709 _AddConditionalProperty(properties, condition, 'TargetPath',
2689 attributes['TargetPath']) 2710 attributes['TargetPath'])
2711 if attributes.get('TargetExt'):
2712 _AddConditionalProperty(properties, condition, 'TargetExt',
2713 attributes['TargetExt'])
2690 2714
2691 if new_paths: 2715 if new_paths:
2692 _AddConditionalProperty(properties, condition, 'ExecutablePath', 2716 _AddConditionalProperty(properties, condition, 'ExecutablePath',
2693 new_paths) 2717 new_paths)
2694 tool_settings = msbuild_settings.get('', {}) 2718 tool_settings = msbuild_settings.get('', {})
2695 for name, value in sorted(tool_settings.iteritems()): 2719 for name, value in sorted(tool_settings.iteritems()):
2696 formatted_value = _GetValueFormattedForMSBuild('', name, value) 2720 formatted_value = _GetValueFormattedForMSBuild('', name, value)
2697 _AddConditionalProperty(properties, condition, name, formatted_value) 2721 _AddConditionalProperty(properties, condition, name, formatted_value)
2698 return _GetMSBuildPropertyGroup(spec, None, properties) 2722 return _GetMSBuildPropertyGroup(spec, None, properties)
2699 2723
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
2800 msbuild_settings = configuration['msbuild_settings'] 2824 msbuild_settings = configuration['msbuild_settings']
2801 MSVSSettings.ValidateMSBuildSettings(msbuild_settings) 2825 MSVSSettings.ValidateMSBuildSettings(msbuild_settings)
2802 else: 2826 else:
2803 converted = True 2827 converted = True
2804 msvs_settings = configuration.get('msvs_settings', {}) 2828 msvs_settings = configuration.get('msvs_settings', {})
2805 msbuild_settings = MSVSSettings.ConvertToMSBuildSettings(msvs_settings) 2829 msbuild_settings = MSVSSettings.ConvertToMSBuildSettings(msvs_settings)
2806 include_dirs, resource_include_dirs = _GetIncludeDirs(configuration) 2830 include_dirs, resource_include_dirs = _GetIncludeDirs(configuration)
2807 libraries = _GetLibraries(spec) 2831 libraries = _GetLibraries(spec)
2808 library_dirs = _GetLibraryDirs(configuration) 2832 library_dirs = _GetLibraryDirs(configuration)
2809 out_file, _, msbuild_tool = _GetOutputFilePathAndTool(spec, msbuild=True) 2833 out_file, _, msbuild_tool = _GetOutputFilePathAndTool(spec, msbuild=True)
2834 target_ext = _GetOutputTargetExt(spec)
2810 defines = _GetDefines(configuration) 2835 defines = _GetDefines(configuration)
2811 if converted: 2836 if converted:
2812 # Visual Studio 2010 has TR1 2837 # Visual Studio 2010 has TR1
2813 defines = [d for d in defines if d != '_HAS_TR1=0'] 2838 defines = [d for d in defines if d != '_HAS_TR1=0']
2814 # Warn of ignored settings 2839 # Warn of ignored settings
2815 ignored_settings = ['msvs_prebuild', 'msvs_postbuild', 'msvs_tool_files'] 2840 ignored_settings = ['msvs_prebuild', 'msvs_postbuild', 'msvs_tool_files']
2816 for ignored_setting in ignored_settings: 2841 for ignored_setting in ignored_settings:
2817 value = configuration.get(ignored_setting) 2842 value = configuration.get(ignored_setting)
2818 if value: 2843 if value:
2819 print ('Warning: The automatic conversion to MSBuild does not handle ' 2844 print ('Warning: The automatic conversion to MSBuild does not handle '
(...skipping 17 matching lines...) Expand all
2837 'AdditionalIncludeDirectories', resource_include_dirs) 2862 'AdditionalIncludeDirectories', resource_include_dirs)
2838 # Add in libraries, note that even for empty libraries, we want this 2863 # Add in libraries, note that even for empty libraries, we want this
2839 # set, to prevent inheriting default libraries from the enviroment. 2864 # set, to prevent inheriting default libraries from the enviroment.
2840 _ToolSetOrAppend(msbuild_settings, 'Link', 'AdditionalDependencies', 2865 _ToolSetOrAppend(msbuild_settings, 'Link', 'AdditionalDependencies',
2841 libraries) 2866 libraries)
2842 _ToolAppend(msbuild_settings, 'Link', 'AdditionalLibraryDirectories', 2867 _ToolAppend(msbuild_settings, 'Link', 'AdditionalLibraryDirectories',
2843 library_dirs) 2868 library_dirs)
2844 if out_file: 2869 if out_file:
2845 _ToolAppend(msbuild_settings, msbuild_tool, 'OutputFile', out_file, 2870 _ToolAppend(msbuild_settings, msbuild_tool, 'OutputFile', out_file,
2846 only_if_unset=True) 2871 only_if_unset=True)
2872 if target_ext:
2873 _ToolAppend(msbuild_settings, msbuild_tool, 'TargetExt', target_ext,
2874 only_if_unset=True)
2847 # Add defines. 2875 # Add defines.
2848 _ToolAppend(msbuild_settings, 'ClCompile', 2876 _ToolAppend(msbuild_settings, 'ClCompile',
2849 'PreprocessorDefinitions', defines) 2877 'PreprocessorDefinitions', defines)
2850 _ToolAppend(msbuild_settings, 'ResourceCompile', 2878 _ToolAppend(msbuild_settings, 'ResourceCompile',
2851 'PreprocessorDefinitions', defines) 2879 'PreprocessorDefinitions', defines)
2852 # Add disabled warnings. 2880 # Add disabled warnings.
2853 _ToolAppend(msbuild_settings, 'ClCompile', 2881 _ToolAppend(msbuild_settings, 'ClCompile',
2854 'DisableSpecificWarnings', disabled_warnings) 2882 'DisableSpecificWarnings', disabled_warnings)
2855 # Turn on precompiled headers if appropriate. 2883 # Turn on precompiled headers if appropriate.
2856 if precompiled_header: 2884 if precompiled_header:
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
3227 action_spec.extend( 3255 action_spec.extend(
3228 # TODO(jeanluc) 'Document' for all or just if as_sources? 3256 # TODO(jeanluc) 'Document' for all or just if as_sources?
3229 [['FileType', 'Document'], 3257 [['FileType', 'Document'],
3230 ['Command', command], 3258 ['Command', command],
3231 ['Message', description], 3259 ['Message', description],
3232 ['Outputs', outputs] 3260 ['Outputs', outputs]
3233 ]) 3261 ])
3234 if additional_inputs: 3262 if additional_inputs:
3235 action_spec.append(['AdditionalInputs', additional_inputs]) 3263 action_spec.append(['AdditionalInputs', additional_inputs])
3236 actions_spec.append(action_spec) 3264 actions_spec.append(action_spec)
OLDNEW
« no previous file with comments | « no previous file | test/lib/TestGyp.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698