Index: pylib/gyp/generator/msvs.py |
diff --git a/pylib/gyp/generator/msvs.py b/pylib/gyp/generator/msvs.py |
index 357dcfa08b4921a90835151cfb92890351ce3744..7cbf0f686a3d4b5335fa94287fa40cb5ab87dd6f 100644 |
--- a/pylib/gyp/generator/msvs.py |
+++ b/pylib/gyp/generator/msvs.py |
@@ -205,6 +205,10 @@ def _ConvertSourcesToFilterHierarchy(sources, prefix=None, excluded=None, |
def _ToolAppend(tools, tool_name, setting, value, only_if_unset=False): |
if not value: return |
+ _ToolSetOrAppend(tools, tool_name, setting, value, only_if_unset) |
+ |
+ |
+def _ToolSetOrAppend(tools, tool_name, setting, value, only_if_unset=False): |
# TODO(bradnelson): ugly hack, fix this more generally!!! |
if 'Directories' in setting or 'Dependencies' in setting: |
if type(value) == str: |
@@ -233,7 +237,7 @@ def _ConfigPlatform(config_data): |
def _ConfigBaseName(config_name, platform_name): |
if config_name.endswith('_' + platform_name): |
- return config_name[0:-len(platform_name)-1] |
+ return config_name[0:-len(platform_name) - 1] |
else: |
return config_name |
@@ -271,7 +275,7 @@ def _BuildCommandLineForRuleRaw(spec, cmd, cygwin_shell, has_input_path, |
'`cygpath -m "${INPUTPATH}"`') |
for i in direct_cmd] |
direct_cmd = ['\\"%s\\"' % i.replace('"', '\\\\\\"') for i in direct_cmd] |
- #direct_cmd = gyp.common.EncodePOSIXShellList(direct_cmd) |
+ # direct_cmd = gyp.common.EncodePOSIXShellList(direct_cmd) |
direct_cmd = ' '.join(direct_cmd) |
# TODO(quote): regularize quoting path names throughout the module |
cmd = '' |
@@ -307,7 +311,7 @@ def _BuildCommandLineForRuleRaw(spec, cmd, cygwin_shell, has_input_path, |
# If the argument starts with a slash or dash, it's probably a command line |
# switch |
arguments = [i if (i[:1] in "/-") else _FixPath(i) for i in cmd[1:]] |
- arguments = [i.replace('$(InputDir)','%INPUTDIR%') for i in arguments] |
+ arguments = [i.replace('$(InputDir)', '%INPUTDIR%') for i in arguments] |
arguments = [MSVSSettings.FixVCMacroSlashes(i) for i in arguments] |
if quote_cmd: |
# Support a mode for using cmd directly. |
@@ -721,7 +725,7 @@ def _EscapeCommandLineArgumentForMSBuild(s): |
"""Escapes a Windows command-line argument for use by MSBuild.""" |
def _Replace(match): |
- return (len(match.group(1))/2*4)*'\\' + '\\"' |
+ return (len(match.group(1)) / 2 * 4) * '\\' + '\\"' |
# Escape all quotes so that they are interpreted literally. |
s = quote_replacer_regex2.sub(_Replace, s) |
@@ -1042,6 +1046,10 @@ def _AddConfigurationToMSVSProject(p, spec, config_type, config_name, config): |
# Add in user specified msvs_settings. |
msvs_settings = config.get('msvs_settings', {}) |
MSVSSettings.ValidateMSVSSettings(msvs_settings) |
+ |
+ # Prevent default library inheritance from the environment. |
+ _ToolAppend(tools, 'VCLinkerTool', 'AdditionalDependencies', ['$(NOINHERIT)']) |
+ |
for tool in msvs_settings: |
settings = config['msvs_settings'][tool] |
for setting in settings: |
@@ -1807,7 +1815,7 @@ def GenerateOutput(target_list, target_dicts, data, params): |
if generator_flags.get('msvs_error_on_missing_sources', False): |
raise GypError(error_message) |
else: |
- print >>sys.stdout, "Warning: " + error_message |
+ print >> sys.stdout, "Warning: " + error_message |
def _GenerateMSBuildFiltersFile(filters_path, source_files, |
@@ -2742,8 +2750,10 @@ def _FinalizeMSBuildSettings(spec, configuration): |
'AdditionalIncludeDirectories', include_dirs) |
_ToolAppend(msbuild_settings, 'ResourceCompile', |
'AdditionalIncludeDirectories', resource_include_dirs) |
- # Add in libraries. |
- _ToolAppend(msbuild_settings, 'Link', 'AdditionalDependencies', libraries) |
+ # Add in libraries, note that even for empty libraries, we want this |
+ # set, to prevent inheriting default libraries from the enviroment. |
+ _ToolSetOrAppend(msbuild_settings, 'Link', 'AdditionalDependencies', |
+ libraries) |
if out_file: |
_ToolAppend(msbuild_settings, msbuild_tool, 'OutputFile', out_file, |
only_if_unset=True) |
@@ -2777,8 +2787,7 @@ def _GetValueFormattedForMSBuild(tool_name, name, value): |
if type(value) == list: |
# For some settings, VS2010 does not automatically extends the settings |
# TODO(jeanluc) Is this what we want? |
- if name in ['AdditionalDependencies', |
- 'AdditionalIncludeDirectories', |
+ if name in ['AdditionalIncludeDirectories', |
'AdditionalLibraryDirectories', |
'AdditionalOptions', |
'DelayLoadDLLs', |