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

Unified Diff: build/toolchain/win/setup_toolchain.py

Issue 126073005: GN: Autodetect Visual Studio versions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
« build/gyp_chromium ('K') | « build/toolchain/win/BUILD.gn ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/toolchain/win/setup_toolchain.py
diff --git a/build/toolchain/win/setup_toolchain.py b/build/toolchain/win/setup_toolchain.py
index 162c2e16cef6cbd5609ad9b02c39229b5c83ecd7..bceafd121be44b6c0c2271ea8c40462937493fd7 100644
--- a/build/toolchain/win/setup_toolchain.py
+++ b/build/toolchain/win/setup_toolchain.py
@@ -2,10 +2,23 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import errno
import os
import re
+import subprocess
import sys
+"""
+Copies the given "win tool" (which the toolchain uses to wrap compiler
+invocations) and the environment blocks for the 32-bit and 64-bit builds on
+Windows to the build directory.
+
+The arguments are the visual studio install location and the location of the
+win tool. The script assumes that the root build directory is the current dir
+and the files will be written to the current directory.
+"""
+
+
def ExtractImportantEnvironment():
"""Extracts environment variables required for the toolchain from the
current environment."""
@@ -36,48 +49,6 @@ def ExtractImportantEnvironment():
return result
-# VC setup will add a path like this in 32-bit mode:
-# c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN
-# And this in 64-bit mode:
-# c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64
-# Note that in 64-bit it's duplicated but the 64-bit one comes first.
-#
-# What we get as the path when running this will depend on which VS setup
-# script you've run. The following two functions try to do this.
-
-# For 32-bit compiles remove anything that ends in "\VC\WIN\amd64".
-def FixupPath32(path):
- find_64 = re.compile("VC\\\\BIN\\\\amd64\\\\*$", flags=re.IGNORECASE)
-
- for i in range(len(path)):
- if find_64.search(path[i]):
- # Found 32-bit path, insert the 64-bit one immediately before it.
- dir_64 = path[i].rstrip("\\")
- dir_64 = dir_64[:len(dir_64) - 6] # Trim off "\amd64".
- path[i] = dir_64
- break
- return path
-
-# For 64-bit compiles, append anything ending in "\VC\BIN" with "\amd64" as
-# long as that thing isn't already in the list, and append it immediately
-# before the non-amd64-one.
-def FixupPath64(path):
- find_32 = re.compile("VC\\\\BIN\\\\*$", flags=re.IGNORECASE)
-
- for i in range(len(path)):
- if find_32.search(path[i]):
- # Found 32-bit path, insert the 64-bit one immediately before it.
- dir_32 = path[i]
- if dir_32[len(dir_32) - 1] == '\\':
- dir_64 = dir_32 + "amd64"
- else:
- dir_64 = dir_32 + "\\amd64"
- path.insert(i, dir_64)
- break
-
- return path
-
-
def FormatAsEnvironmentBlock(envvar_dict):
"""Format as an 'environment block' directly suitable for CreateProcess.
Briefly this is a list of key=value\0, terminated by an additional \0. See
@@ -89,6 +60,7 @@ def FormatAsEnvironmentBlock(envvar_dict):
block += nul
return block
+
def CopyTool(source_path):
"""Copies the given tool to the current directory, including a warning not
to edit it."""
@@ -102,22 +74,27 @@ def CopyTool(source_path):
'# Generated by setup_toolchain.py do not edit.\n']
+ tool_source[1:]))
+if len(sys.argv) != 3:
+ print 'Usage setup_toolchain.py <visual studio path> <win tool path>'
+ sys.exit(2)
+vs_path = sys.argv[1]
+tool_source = sys.argv[2]
-# Find the tool source, it's the first argument, and copy it.
-if len(sys.argv) != 2:
- print "Need one argument (win_tool source path)."
- sys.exit(1)
-CopyTool(sys.argv[1])
+CopyTool(tool_source)
important_env_vars = ExtractImportantEnvironment()
path = important_env_vars["PATH"].split(";")
-important_env_vars["PATH"] = ";".join(FixupPath32(path))
+# Add 32-bit compiler path to the beginning and write the block.
+path32 = [os.path.join(vs_path, "VC\\BIN")] + path
+important_env_vars["PATH"] = ";".join(path32)
environ = FormatAsEnvironmentBlock(important_env_vars)
with open('environment.x86', 'wb') as env_file:
env_file.write(environ)
-important_env_vars["PATH"] = ";".join(FixupPath64(path))
+# Add 64-bit compiler path to the beginning and write the block.
+path64 = [os.path.join(vs_path, "VC\\BIN\\amd64")] + path
+important_env_vars["PATH"] = ";".join(path64)
environ = FormatAsEnvironmentBlock(important_env_vars)
with open('environment.x64', 'wb') as env_file:
env_file.write(environ)
« build/gyp_chromium ('K') | « build/toolchain/win/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698