Source release v3.1.0
This commit is contained in:
108
third_party/gyp/MSVSSettings.py
vendored
108
third_party/gyp/MSVSSettings.py
vendored
@@ -2,7 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
"""Code to validate and convert settings of the Microsoft build tools.
|
||||
r"""Code to validate and convert settings of the Microsoft build tools.
|
||||
|
||||
This file contains code to validate and convert settings of the Microsoft
|
||||
build tools. The function ConvertToMSBuildSettings(), ValidateMSVSSettings(),
|
||||
@@ -314,7 +314,14 @@ def _MSBuildOnly(tool, name, setting_type):
|
||||
name: the name of the setting.
|
||||
setting_type: the type of this setting.
|
||||
"""
|
||||
|
||||
def _Translate(value, msbuild_settings):
|
||||
# Let msbuild-only properties get translated as-is from msvs_settings.
|
||||
tool_settings = msbuild_settings.setdefault(tool.msbuild_name, {})
|
||||
tool_settings[name] = value
|
||||
|
||||
_msbuild_validators[tool.msbuild_name][name] = setting_type.ValidateMSBuild
|
||||
_msvs_to_msbuild_converters[tool.msvs_name][name] = _Translate
|
||||
|
||||
|
||||
def _ConvertedToAdditionalOption(tool, msvs_name, flag):
|
||||
@@ -367,6 +374,35 @@ fix_vc_macro_slashes_regex = re.compile(
|
||||
r'(\$\((?:%s)\))(?:[\\/]+)' % "|".join(fix_vc_macro_slashes_regex_list)
|
||||
)
|
||||
|
||||
# Regular expression to detect keys that were generated by exclusion lists
|
||||
_EXCLUDED_SUFFIX_RE = re.compile('^(.*)_excluded$')
|
||||
|
||||
|
||||
def _ValidateExclusionSetting(setting, settings, error_msg, stderr=sys.stderr):
|
||||
"""Verify that 'setting' is valid if it is generated from an exclusion list.
|
||||
|
||||
If the setting appears to be generated from an exclusion list, the root name
|
||||
is checked.
|
||||
|
||||
Args:
|
||||
setting: A string that is the setting name to validate
|
||||
settings: A dictionary where the keys are valid settings
|
||||
error_msg: The message to emit in the event of error
|
||||
stderr: The stream receiving the error messages.
|
||||
"""
|
||||
# This may be unrecognized because it's an exclusion list. If the
|
||||
# setting name has the _excluded suffix, then check the root name.
|
||||
unrecognized = True
|
||||
m = re.match(_EXCLUDED_SUFFIX_RE, setting)
|
||||
if m:
|
||||
root_setting = m.group(1)
|
||||
unrecognized = root_setting not in settings
|
||||
|
||||
if unrecognized:
|
||||
# We don't know this setting. Give a warning.
|
||||
print >> stderr, error_msg
|
||||
|
||||
|
||||
def FixVCMacroSlashes(s):
|
||||
"""Replace macros which have excessive following slashes.
|
||||
|
||||
@@ -388,11 +424,11 @@ def ConvertVCMacrosToMSBuild(s):
|
||||
if '$' in s:
|
||||
replace_map = {
|
||||
'$(ConfigurationName)': '$(Configuration)',
|
||||
'$(InputDir)': '%(RootDir)%(Directory)',
|
||||
'$(InputDir)': '%(RelativeDir)',
|
||||
'$(InputExt)': '%(Extension)',
|
||||
'$(InputFileName)': '%(Filename)%(Extension)',
|
||||
'$(InputName)': '%(Filename)',
|
||||
'$(InputPath)': '%(FullPath)',
|
||||
'$(InputPath)': '%(Identity)',
|
||||
'$(ParentName)': '$(ProjectFileName)',
|
||||
'$(PlatformName)': '$(Platform)',
|
||||
'$(SafeInputName)': '%(Filename)',
|
||||
@@ -403,9 +439,6 @@ def ConvertVCMacrosToMSBuild(s):
|
||||
return s
|
||||
|
||||
|
||||
_EXCLUDED_SUFFIX_RE = re.compile('^(.*)_excluded$')
|
||||
|
||||
|
||||
def ConvertToMSBuildSettings(msvs_settings, stderr=sys.stderr):
|
||||
"""Converts MSVS settings (VS2008 and earlier) to MSBuild settings (VS2010+).
|
||||
|
||||
@@ -432,19 +465,12 @@ def ConvertToMSBuildSettings(msvs_settings, stderr=sys.stderr):
|
||||
print >> stderr, ('Warning: while converting %s/%s to MSBuild, '
|
||||
'%s' % (msvs_tool_name, msvs_setting, e))
|
||||
else:
|
||||
# This may be unrecognized because it's an exclusion list. If the
|
||||
# setting name has the _excluded suffix, then check the root name.
|
||||
unrecognized = True
|
||||
m = re.match(_EXCLUDED_SUFFIX_RE, msvs_setting)
|
||||
if m:
|
||||
root_msvs_setting = m.group(1)
|
||||
unrecognized = root_msvs_setting not in msvs_tool
|
||||
|
||||
if unrecognized:
|
||||
# We don't know this setting. Give a warning.
|
||||
print >> stderr, ('Warning: unrecognized setting %s/%s '
|
||||
'while converting to MSBuild.' %
|
||||
(msvs_tool_name, msvs_setting))
|
||||
_ValidateExclusionSetting(msvs_setting,
|
||||
msvs_tool,
|
||||
('Warning: unrecognized setting %s/%s '
|
||||
'while converting to MSBuild.' %
|
||||
(msvs_tool_name, msvs_setting)),
|
||||
stderr)
|
||||
else:
|
||||
print >> stderr, ('Warning: unrecognized tool %s while converting to '
|
||||
'MSBuild.' % msvs_tool_name)
|
||||
@@ -495,8 +521,12 @@ def _ValidateSettings(validators, settings, stderr):
|
||||
print >> stderr, ('Warning: for %s/%s, %s' %
|
||||
(tool_name, setting, e))
|
||||
else:
|
||||
print >> stderr, ('Warning: unrecognized setting %s/%s' %
|
||||
(tool_name, setting))
|
||||
_ValidateExclusionSetting(setting,
|
||||
tool_validators,
|
||||
('Warning: unrecognized setting %s/%s' %
|
||||
(tool_name, setting)),
|
||||
stderr)
|
||||
|
||||
else:
|
||||
print >> stderr, ('Warning: unrecognized tool %s' % tool_name)
|
||||
|
||||
@@ -508,6 +538,7 @@ _midl = _Tool('VCMIDLTool', 'Midl')
|
||||
_rc = _Tool('VCResourceCompilerTool', 'ResourceCompile')
|
||||
_lib = _Tool('VCLibrarianTool', 'Lib')
|
||||
_manifest = _Tool('VCManifestTool', 'Manifest')
|
||||
_masm = _Tool('MASM', 'MASM')
|
||||
|
||||
|
||||
_AddTool(_compile)
|
||||
@@ -516,6 +547,7 @@ _AddTool(_midl)
|
||||
_AddTool(_rc)
|
||||
_AddTool(_lib)
|
||||
_AddTool(_manifest)
|
||||
_AddTool(_masm)
|
||||
# Add sections only found in the MSBuild settings.
|
||||
_msbuild_validators[''] = {}
|
||||
_msbuild_validators['ProjectReference'] = {}
|
||||
@@ -560,6 +592,7 @@ _Same(_compile, 'UndefinePreprocessorDefinitions', _string_list) # /U
|
||||
_Same(_compile, 'UseFullPaths', _boolean) # /FC
|
||||
_Same(_compile, 'WholeProgramOptimization', _boolean) # /GL
|
||||
_Same(_compile, 'XMLDocumentationFileName', _file_name)
|
||||
_Same(_compile, 'CompileAsWinRT', _boolean) # /ZW
|
||||
|
||||
_Same(_compile, 'AssemblerOutput',
|
||||
_Enumeration(['NoListing',
|
||||
@@ -579,7 +612,8 @@ _Same(_compile, 'BrowseInformation',
|
||||
_Same(_compile, 'CallingConvention',
|
||||
_Enumeration(['Cdecl', # /Gd
|
||||
'FastCall', # /Gr
|
||||
'StdCall'])) # /Gz
|
||||
'StdCall', # /Gz
|
||||
'VectorCall'])) # /Gv
|
||||
_Same(_compile, 'CompileAs',
|
||||
_Enumeration(['Default',
|
||||
'CompileAsC', # /TC
|
||||
@@ -593,7 +627,12 @@ _Same(_compile, 'DebugInformationFormat',
|
||||
_Same(_compile, 'EnableEnhancedInstructionSet',
|
||||
_Enumeration(['NotSet',
|
||||
'StreamingSIMDExtensions', # /arch:SSE
|
||||
'StreamingSIMDExtensions2'])) # /arch:SSE2
|
||||
'StreamingSIMDExtensions2', # /arch:SSE2
|
||||
'AdvancedVectorExtensions', # /arch:AVX (vs2012+)
|
||||
'NoExtensions', # /arch:IA32 (vs2012+)
|
||||
# This one only exists in the new msbuild format.
|
||||
'AdvancedVectorExtensions2', # /arch:AVX2 (vs2013r2+)
|
||||
]))
|
||||
_Same(_compile, 'ErrorReporting',
|
||||
_Enumeration(['None', # /errorReport:none
|
||||
'Prompt', # /errorReport:prompt
|
||||
@@ -670,10 +709,7 @@ _MSVSOnly(_compile, 'UseUnicodeResponseFiles', _boolean)
|
||||
_MSBuildOnly(_compile, 'BuildingInIDE', _boolean)
|
||||
_MSBuildOnly(_compile, 'CompileAsManaged',
|
||||
_Enumeration([], new=['false',
|
||||
'true', # /clr
|
||||
'Pure', # /clr:pure
|
||||
'Safe', # /clr:safe
|
||||
'OldSyntax'])) # /clr:oldSyntax
|
||||
'true'])) # /clr
|
||||
_MSBuildOnly(_compile, 'CreateHotpatchableImage', _boolean) # /hotpatch
|
||||
_MSBuildOnly(_compile, 'MultiProcessorCompilation', _boolean) # /MP
|
||||
_MSBuildOnly(_compile, 'PreprocessOutputPath', _string) # /Fi
|
||||
@@ -848,13 +884,6 @@ _Moved(_link, 'UseLibraryDependencyInputs', 'ProjectReference', _boolean)
|
||||
# MSVS options not found in MSBuild.
|
||||
_MSVSOnly(_link, 'OptimizeForWindows98', _newly_boolean)
|
||||
_MSVSOnly(_link, 'UseUnicodeResponseFiles', _boolean)
|
||||
# These settings generate correctly in the MSVS output files when using
|
||||
# e.g. DelayLoadDLLs! or AdditionalDependencies! to exclude files from
|
||||
# configuration entries, but result in spurious artifacts which can be
|
||||
# safely ignored here. See crbug.com/246570
|
||||
_MSVSOnly(_link, 'AdditionalLibraryDirectories_excluded', _folder_list)
|
||||
_MSVSOnly(_link, 'DelayLoadDLLs_excluded', _file_list)
|
||||
_MSVSOnly(_link, 'AdditionalDependencies_excluded', _file_list)
|
||||
|
||||
# MSBuild options not found in MSVS.
|
||||
_MSBuildOnly(_link, 'BuildingInIDE', _boolean)
|
||||
@@ -1003,9 +1032,6 @@ _Same(_lib, 'TargetMachine', _target_machine_enumeration)
|
||||
# ProjectReference. We may want to validate that they are consistent.
|
||||
_Moved(_lib, 'LinkLibraryDependencies', 'ProjectReference', _boolean)
|
||||
|
||||
# TODO(jeanluc) I don't think these are genuine settings but byproducts of Gyp.
|
||||
_MSVSOnly(_lib, 'AdditionalLibraryDirectories_excluded', _folder_list)
|
||||
|
||||
_MSBuildOnly(_lib, 'DisplayLibrary', _string) # /LIST Visible='false'
|
||||
_MSBuildOnly(_lib, 'ErrorReporting',
|
||||
_Enumeration([], new=['PromptImmediately', # /ERRORREPORT:PROMPT
|
||||
@@ -1061,3 +1087,11 @@ _MSBuildOnly(_manifest, 'ManifestFromManagedAssembly',
|
||||
_MSBuildOnly(_manifest, 'OutputResourceManifests', _string) # /outputresource
|
||||
_MSBuildOnly(_manifest, 'SuppressDependencyElement', _boolean) # /nodependency
|
||||
_MSBuildOnly(_manifest, 'TrackerLogDirectory', _folder_name)
|
||||
|
||||
|
||||
# Directives for MASM.
|
||||
# See "$(VCTargetsPath)\BuildCustomizations\masm.xml" for the schema of the
|
||||
# MSBuild MASM settings.
|
||||
|
||||
# Options that have the same name in MSVS and MSBuild.
|
||||
_Same(_masm, 'UseSafeExceptionHandlers', _boolean) # /safeseh
|
||||
|
||||
Reference in New Issue
Block a user