aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Yun Peng <pcloudy@google.com>2016-04-11 14:41:29 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-04-12 13:57:37 +0000
commit511d49b2f9ddcee12a0c39302f47984910a5233e (patch)
tree97af6e1b462f75f220ce6420676da8bbfa7475bc /tools
parent93c0fbb812d3a3a68d3870954a8fbf4cd51d682e (diff)
Refactor wrapper script msvc_tools.py to make path configure easiler
Also fixed a small bug. -- Change-Id: I05dab2f4a5d6216f2972b0cd2cb62506f5b1cb06 Reviewed-on: https://bazel-review.googlesource.com/#/c/3326/ MOS_MIGRATED_REVID=119529809
Diffstat (limited to 'tools')
-rw-r--r--tools/cpp/wrapper/bin/pydir/msvc_tools.py157
1 files changed, 92 insertions, 65 deletions
diff --git a/tools/cpp/wrapper/bin/pydir/msvc_tools.py b/tools/cpp/wrapper/bin/pydir/msvc_tools.py
index cca2c68ba7..ef6ae79304 100644
--- a/tools/cpp/wrapper/bin/pydir/msvc_tools.py
+++ b/tools/cpp/wrapper/bin/pydir/msvc_tools.py
@@ -27,6 +27,12 @@ MAX_DRIVE_LENGTH = 3 # The maximum length of a drive.
ASSEMBLY_AS_C_SOURCE = '/Tc'
LIB_SUFFIX = '.lib'
+VC_PATH = 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0'
+VC_VERSION = '140'
+PLATFORM_SDK_PATH = 'C:\\Program Files (x86)\\Windows Kits'
+PLATFORM_SDK_VERSION = '10.0.10240.0'
+TMP_PATH = 'C:\\Windows\\Temp'
+
class Error(Exception):
"""Base class for all script-specific errors."""
@@ -289,10 +295,93 @@ class WindowsRunner(object):
return None
def SetupEnvironment(self, build_arch):
- pass
+ """Setup proper path for running.
+
+ Args:
+ build_arch: Either 'x64' or 'x86', which binary architecture to build for.
+
+ Returns:
+ An environment suitable for running on Windows.
+ """
+
+ common_paths = [
+ 'C:\\Windows',
+ 'C:\\Windows\\system32',
+ 'C:\\Windows\\System32\\Wbem',
+ os.path.join(VC_PATH, 'Common7\\IDE'),
+ os.path.join(VC_PATH,
+ 'Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow'),
+ os.path.join(VC_PATH, 'Common7\\Tools'),
+ os.path.join(VC_PATH, 'VC\\VCPackages'),
+ ]
+
+ x86_paths = [
+ os.path.join(VC_PATH, 'VC\\bin'),
+ os.path.join(VC_PATH, 'VC\\redist\\x86\\Microsoft.VC' + VC_VERSION +
+ '.CRT'),
+ os.path.join(PLATFORM_SDK_PATH, 'bin\\x86'),
+ ] + common_paths
+
+ x64_paths = [
+ os.path.join(VC_PATH, 'VC\\bin\\x86_amd64'),
+ os.path.join(VC_PATH, 'VC\\bin'),
+ os.path.join(VC_PATH, 'VC\\redist\\x64\\Microsoft.VC' + VC_VERSION +
+ '.CRT'),
+ os.path.join(VC_PATH, 'VC\\redist\\x86\\Microsoft.VC' + VC_VERSION +
+ '.CRT'),
+ os.path.join(PLATFORM_SDK_PATH, 'bin\\x64'),
+ ] + common_paths
+
+ path = x86_paths if build_arch == 'x86' else x64_paths
+
+ include = [
+ os.path.join(VC_PATH, 'VC\\INCLUDE'),
+ os.path.join(VC_PATH, 'VC\\ATLMFC\\INCLUDE'),
+ os.path.join(PLATFORM_SDK_PATH, '10\\include', PLATFORM_SDK_VERSION,
+ 'ucrt'),
+ os.path.join(PLATFORM_SDK_PATH, '8.1\\include'),
+ os.path.join(PLATFORM_SDK_PATH, '8.1\\include\\um'),
+ os.path.join(PLATFORM_SDK_PATH, '8.1\\include\\shared'),
+ os.path.join(PLATFORM_SDK_PATH, '8.1\\include\\winrt'),
+ os.path.join(PLATFORM_SDK_PATH, 'NETFXSDK\\4.6.1\\include\\um'),
+ ]
+
+ x86_lib_path = [
+ os.path.join(VC_PATH, 'VC\\bin'),
+ os.path.join(VC_PATH, 'VC\\LIB'),
+ os.path.join(VC_PATH, 'VC\\ATLMFC\\LIB'),
+ os.path.join(VC_PATH,
+ 'VC\\redist\\x86\\Microsoft.VC' + VC_VERSION + '.CRT'),
+ os.path.join(PLATFORM_SDK_PATH, '10\\lib', PLATFORM_SDK_VERSION,
+ 'ucrt\\x86'),
+ os.path.join(PLATFORM_SDK_PATH, '8.1\\lib\\winv6.3\\um\\x86'),
+ os.path.join(PLATFORM_SDK_PATH, 'NETFXSDK\\4.6.1\\lib\\um\\x86'),
+ ]
+
+ x64_lib_path = [
+ os.path.join(VC_PATH, 'VC\\bin\\x86_amd64'),
+ os.path.join(VC_PATH, 'VC\\LIB\\amd64'),
+ os.path.join(VC_PATH, 'VC\\ATLMFC\\LIB\\amd64'),
+ os.path.join(VC_PATH,
+ 'VC\\redist\\x64\\Microsoft.VC' + VC_VERSION + '.CRT'),
+ os.path.join(PLATFORM_SDK_PATH, '10\\lib', PLATFORM_SDK_VERSION,
+ 'ucrt\\x64'),
+ os.path.join(PLATFORM_SDK_PATH, '8.1\\lib\\winv6.3\\um\\x64'),
+ os.path.join(PLATFORM_SDK_PATH, 'NETFXSDK\\4.6.1\\lib\\um\\x64'),
+ ]
+
+ lib = x86_lib_path if build_arch == 'x86' else x64_lib_path
+
+ build_env = os.environ.copy()
+ build_env['PATH'] = ';'.join([build_env['PATH']] + path)
+ build_env['INCLUDE'] = ';'.join(include)
+ build_env['LIB'] = ';'.join(lib)
+ build_env['TEMP'] = TMP_PATH
+ build_env['TMP'] = TMP_PATH
+ return build_env
def RunBinary(self, binary, args, build_arch, parser):
- """Runs binary under wine with the passed args.
+ """Runs binary on Windows with the passed args.
Args:
binary: The binary to run.
@@ -330,70 +419,8 @@ class WindowsRunner(object):
# Setup the Windows paths and the build environment.
# TODO(pcloudy): make these paths configurable
- self.SetupEnvironment(build_arch)
- path = [
- 'C:\\Program Files\\Microsoft DNX\\Dnvm\\',
- 'C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX '
- '4.6.1 Tools\\x64\\',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio '
- '14.0\\Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Team '
- 'Tools\\Performance Tools\\x64',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\VCPackages',
- 'C:\\Program Files (x86)\\MSBuild\\14.0\\bin\\amd64',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\x64',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\Windows Performance '
- 'Toolkit\\',
- 'C:\\Windows', 'C:\\Windows\\system32', 'C:\\Windows\\System32\\Wbem'
- ]
+ build_env = self.SetupEnvironment(build_arch)
- include = [
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\INCLUDE',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio '
- '14.0\\VC\\ATLMFC\\INCLUDE',
- 'C:\\Program Files (x86)\\Windows Kits\\10'
- '\\include\\10.0.10240.0\\ucrt',
- 'C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\include\\um',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\\\shared',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\\\um',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\\\winrt',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\INCLUDE',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio '
- '14.0\\VC\\ATLMFC\\INCLUDE',
- 'C:\\Program Files (x86)\\Windows Kits\\10\\'
- 'include\\10.0.10240.0\\ucrt',
- 'C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\include\\um',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\\\shared',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\\\um',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\include\\\\winrt'
- ]
-
- lib = [
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\LIB\\amd64',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio '
- '14.0\\VC\\ATLMFC\\LIB\\amd64',
- 'C:\\Program Files (x86)\\Windows Kits\\10\\lib'
- '\\10.0.10240.0\\ucrt\\x64',
- 'C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\lib\\um\\x64',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\lib\\winv6.3\\um\\x64',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\LIB',
- 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0'
- '\\VC\\ATLMFC\\LIB',
- 'C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.10240.0'
- '\\ucrt\\x86',
- 'C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\lib\\um\\x86',
- 'C:\\Program Files (x86)\\Windows Kits\\8.1\\lib\\winv6.3\\um\\x86'
- ]
-
- build_env = os.environ.copy()
- build_env['PATH'] += ';'.join[build_env['PATH'] + path]
- build_env['INCLUDE'] = ';'.join(include)
- build_env['LIB'] = ';'.join(lib)
- build_env['TEMP'] = 'C:\\Windows\\Temp'
- build_env['TMP'] = 'C:\\Windows\\Temp'
# Construct a large regular expression for all filters.
output_filter = re.compile('(' + ')|('.join(filters) + ')')
includes_filter = re.compile(r'Note: including file:\s+(.*)')