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

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

Issue 9390017: Added support of the PlatformToolset property to Gyp (MSBuild only). (Closed) Base URL: http://git.chromium.org/external/gyp.git@master
Patch Set: msbuild_toolset Created 8 years, 10 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 | « pylib/gyp/MSVSNew.py ('k') | no next file » | 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 815 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 guid = default_config.get('msvs_guid') 826 guid = default_config.get('msvs_guid')
827 if guid: 827 if guid:
828 if VALID_MSVS_GUID_CHARS.match(guid) is None: 828 if VALID_MSVS_GUID_CHARS.match(guid) is None:
829 raise ValueError('Invalid MSVS guid: "%s". Must match regex: "%s".' % 829 raise ValueError('Invalid MSVS guid: "%s". Must match regex: "%s".' %
830 (guid, VALID_MSVS_GUID_CHARS.pattern)) 830 (guid, VALID_MSVS_GUID_CHARS.pattern))
831 guid = '{%s}' % guid 831 guid = '{%s}' % guid
832 guid = guid or MSVSNew.MakeGuid(proj_path) 832 guid = guid or MSVSNew.MakeGuid(proj_path)
833 return guid 833 return guid
834 834
835 835
836 def _GetMsbuildToolsetOfProject(proj_path, spec):
837 """Get the platform toolset for the project.
838
839 Arguments:
840 proj_path: Path of the vcproj or vcxproj file to generate.
841 spec: The target dictionary containing the properties of the target.
842 Returns:
843 the platform toolset string or None.
844 """
845 # Pluck out the default configuration.
846 default_config = _GetDefaultConfiguration(spec)
847 return default_config.get('msbuild_toolset')
848
849
836 def _GenerateProject(project, options, version, generator_flags): 850 def _GenerateProject(project, options, version, generator_flags):
837 """Generates a vcproj file. 851 """Generates a vcproj file.
838 852
839 Arguments: 853 Arguments:
840 project: the MSVSProject object. 854 project: the MSVSProject object.
841 options: global generator options. 855 options: global generator options.
842 version: the MSVSVersion object. 856 version: the MSVSVersion object.
843 generator_flags: dict of generator-specific flags. 857 generator_flags: dict of generator-specific flags.
844 """ 858 """
845 default_config = _GetDefaultConfiguration(project.spec) 859 default_config = _GetDefaultConfiguration(project.spec)
(...skipping 785 matching lines...) Expand 10 before | Expand all | Expand 10 after
1631 build_file = gyp.common.BuildFile(qualified_target) 1645 build_file = gyp.common.BuildFile(qualified_target)
1632 # Create object for this project. 1646 # Create object for this project.
1633 obj = MSVSNew.MSVSProject( 1647 obj = MSVSNew.MSVSProject(
1634 _FixPath(proj_path), 1648 _FixPath(proj_path),
1635 name=spec['target_name'], 1649 name=spec['target_name'],
1636 guid=guid, 1650 guid=guid,
1637 spec=spec, 1651 spec=spec,
1638 build_file=build_file, 1652 build_file=build_file,
1639 config_platform_overrides=overrides, 1653 config_platform_overrides=overrides,
1640 fixpath_prefix=fixpath_prefix) 1654 fixpath_prefix=fixpath_prefix)
1655 # Set project toolset if any (MS build only)
1656 if msvs_version.UsesVcxproj():
1657 obj.set_msbuild_toolset(_GetMsbuildToolsetOfProject(proj_path, spec))
1641 projects[qualified_target] = obj 1658 projects[qualified_target] = obj
1642 # Set all the dependencies 1659 # Set all the dependencies
1643 for project in projects.values(): 1660 for project in projects.values():
1644 deps = project.spec.get('dependencies', []) 1661 deps = project.spec.get('dependencies', [])
1645 deps = [projects[d] for d in deps] 1662 deps = [projects[d] for d in deps]
1646 project.set_dependencies(deps) 1663 project.set_dependencies(deps)
1647 return projects 1664 return projects
1648 1665
1649 1666
1650 def CalculateVariables(default_variables, params): 1667 def CalculateVariables(default_variables, params):
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after
2394 condition = _GetConfigurationCondition(name, settings) 2411 condition = _GetConfigurationCondition(name, settings)
2395 character_set = msbuild_attributes.get('CharacterSet') 2412 character_set = msbuild_attributes.get('CharacterSet')
2396 _AddConditionalProperty(properties, condition, 'ConfigurationType', 2413 _AddConditionalProperty(properties, condition, 'ConfigurationType',
2397 msbuild_attributes['ConfigurationType']) 2414 msbuild_attributes['ConfigurationType'])
2398 if character_set: 2415 if character_set:
2399 _AddConditionalProperty(properties, condition, 'CharacterSet', 2416 _AddConditionalProperty(properties, condition, 'CharacterSet',
2400 character_set) 2417 character_set)
2401 return _GetMSBuildPropertyGroup(spec, 'Configuration', properties) 2418 return _GetMSBuildPropertyGroup(spec, 'Configuration', properties)
2402 2419
2403 2420
2421 def _GetMSBuildLocalProperties(msbuild_toolset):
2422 # Currently the only local property we support is PlatformToolset
2423 properties = {}
2424 if msbuild_toolset:
2425 properties = [
2426 ['PropertyGroup', {'Label': 'Locals'},
2427 ['PlatformToolset', msbuild_toolset],
2428 ]
2429 ]
2430 return properties
2431
2432
2404 def _GetMSBuildPropertySheets(configurations): 2433 def _GetMSBuildPropertySheets(configurations):
2405 user_props = r'$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props' 2434 user_props = r'$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props'
2406 return [ 2435 return [
2407 ['ImportGroup', 2436 ['ImportGroup',
2408 {'Label': 'PropertySheets'}, 2437 {'Label': 'PropertySheets'},
2409 ['Import', 2438 ['Import',
2410 {'Project': user_props, 2439 {'Project': user_props,
2411 'Condition': "exists('%s')" % user_props, 2440 'Condition': "exists('%s')" % user_props,
2412 'Label': 'LocalAppDataPlatform' 2441 'Label': 'LocalAppDataPlatform'
2413 } 2442 }
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
2827 'Project', 2856 'Project',
2828 {'xmlns': 'http://schemas.microsoft.com/developer/msbuild/2003', 2857 {'xmlns': 'http://schemas.microsoft.com/developer/msbuild/2003',
2829 'ToolsVersion': version.ProjectVersion(), 2858 'ToolsVersion': version.ProjectVersion(),
2830 'DefaultTargets': 'Build' 2859 'DefaultTargets': 'Build'
2831 }] 2860 }]
2832 2861
2833 content += _GetMSBuildProjectConfigurations(configurations) 2862 content += _GetMSBuildProjectConfigurations(configurations)
2834 content += _GetMSBuildGlobalProperties(spec, project.guid, project_file_name) 2863 content += _GetMSBuildGlobalProperties(spec, project.guid, project_file_name)
2835 content += import_default_section 2864 content += import_default_section
2836 content += _GetMSBuildConfigurationDetails(spec, project.build_file) 2865 content += _GetMSBuildConfigurationDetails(spec, project.build_file)
2866 content += _GetMSBuildLocalProperties(project.msbuild_toolset)
2837 content += import_cpp_props_section 2867 content += import_cpp_props_section
2838 content += _GetMSBuildExtensions(props_files_of_rules) 2868 content += _GetMSBuildExtensions(props_files_of_rules)
2839 content += _GetMSBuildPropertySheets(configurations) 2869 content += _GetMSBuildPropertySheets(configurations)
2840 content += macro_section 2870 content += macro_section
2841 content += _GetMSBuildConfigurationGlobalProperties(spec, configurations, 2871 content += _GetMSBuildConfigurationGlobalProperties(spec, configurations,
2842 project.build_file) 2872 project.build_file)
2843 content += _GetMSBuildToolSettingsSections(spec, configurations) 2873 content += _GetMSBuildToolSettingsSections(spec, configurations)
2844 content += _GetMSBuildSources( 2874 content += _GetMSBuildSources(
2845 spec, sources, exclusions, extension_to_rule_name, actions_spec, 2875 spec, sources, exclusions, extension_to_rule_name, actions_spec,
2846 sources_handled_by_action, list_excluded) 2876 sources_handled_by_action, list_excluded)
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
2926 action_spec.extend( 2956 action_spec.extend(
2927 # TODO(jeanluc) 'Document' for all or just if as_sources? 2957 # TODO(jeanluc) 'Document' for all or just if as_sources?
2928 [['FileType', 'Document'], 2958 [['FileType', 'Document'],
2929 ['Command', command], 2959 ['Command', command],
2930 ['Message', description], 2960 ['Message', description],
2931 ['Outputs', outputs] 2961 ['Outputs', outputs]
2932 ]) 2962 ])
2933 if additional_inputs: 2963 if additional_inputs:
2934 action_spec.append(['AdditionalInputs', additional_inputs]) 2964 action_spec.append(['AdditionalInputs', additional_inputs])
2935 actions_spec.append(action_spec) 2965 actions_spec.append(action_spec)
OLDNEW
« no previous file with comments | « pylib/gyp/MSVSNew.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698