Index: build/vs_toolchain.py |
diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py |
index a326f4b0cef7c2305a3811dc0eb2b16c5aea6c79..6a0e6c95e915775a415cad2db4f9eb5a0f48ffc9 100755 |
--- a/build/vs_toolchain.py |
+++ b/build/vs_toolchain.py |
@@ -21,6 +21,10 @@ json_data_file = os.path.join(script_dir, 'win_toolchain.json') |
import gyp |
+# Use MSVS2013 as the default toolchain. |
+CURRENT_DEFAULT_TOOLCHAIN_VERSION = '2013' |
+ |
+ |
def SetEnvironmentAndGetRuntimeDllDirs(): |
"""Sets up os.environ to use the depot_tools VS toolchain with gyp, and |
returns the location of the VS runtime DLLs so they can be copied into |
@@ -33,7 +37,7 @@ def SetEnvironmentAndGetRuntimeDllDirs(): |
# been downloaded before (in which case json_data_file will exist). |
if ((sys.platform in ('win32', 'cygwin') or os.path.exists(json_data_file)) |
and depot_tools_win_toolchain): |
- if not os.path.exists(json_data_file): |
+ if ShouldUpdateToolchain(): |
Update() |
with open(json_data_file, 'r') as tempf: |
toolchain_data = json.load(tempf) |
@@ -99,9 +103,9 @@ def _RegistryGetValue(key, value): |
def GetVisualStudioVersion(): |
- """Return GYP_MSVS_VERSION of Visual Studio, default to 2013 for now. |
+ """Return GYP_MSVS_VERSION of Visual Studio. |
""" |
- return os.environ.get('GYP_MSVS_VERSION', '2013') |
+ return os.environ.get('GYP_MSVS_VERSION', CURRENT_DEFAULT_TOOLCHAIN_VERSION) |
def DetectVisualStudioPath(): |
@@ -272,6 +276,19 @@ def _GetDesiredVsToolchainHashes(): |
return ['9ff97c632ae1fee0c98bcd53e71770eb3a0d8deb'] |
+def ShouldUpdateToolchain(): |
+ """Check if the toolchain should be upgraded.""" |
+ if not os.path.exists(json_data_file): |
+ return True |
+ with open(json_data_file, 'r') as tempf: |
+ toolchain_data = json.load(tempf) |
+ version = toolchain_data['version'] |
+ env_version = GetVisualStudioVersion() |
+ # If there's a mismatch between the version set in the environment and the one |
+ # in the json file then the toolchain should be updated. |
+ return version != env_version |
+ |
+ |
def Update(force=False): |
"""Requests an update of the toolchain to the specific hashes we have at |
this revision. The update outputs a .json of the various configuration |