Index: build/vs_toolchain.py |
diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py |
index 0ff51815212da7198fc521eedaf1f45ffefe5cd6..61a3559859f7d38e0d5d21ea2c27eaaef3eab1f7 100755 |
--- a/build/vs_toolchain.py |
+++ b/build/vs_toolchain.py |
@@ -218,6 +218,28 @@ def _CopyUCRTRuntime(target_dir, source_dir, target_cpu, dll_pattern, suffix): |
os.path.join(source_dir, 'ucrtbase' + suffix)) |
+def FindVCToolsRoot(): |
+ """In VS2017 the PGO runtime dependencies are located in |
+ {toolchain_root}/VC/Tools/MSVC/{x.y.z}/bin/Host{target_cpu}/{target_cpu}/, the |
+ {version_number} part is likely to change in case of a minor update of the |
+ toolchain so we don't hardcode this value here (except for the major number). |
+ |
+ This returns the '{toolchain_root}/VC/Tools/MSVC/{x.y.z}/bin/' path. |
+ |
+ This function should only be called when using VS2017. |
+ """ |
+ assert GetVisualStudioVersion() == '2017' |
+ assert ('GYP_MSVS_OVERRIDE_PATH' in os.environ) |
+ vc_tools_msvc_root = os.path.join(os.environ['GYP_MSVS_OVERRIDE_PATH'], |
+ 'VC', 'Tools', 'MSVC') |
+ for directory in os.listdir(vc_tools_msvc_root): |
+ if not os.path.isdir(os.path.join(vc_tools_msvc_root, directory)): |
+ continue |
+ if re.match('14\.\d+\.\d+', directory): |
+ return os.path.join(vc_tools_msvc_root, directory, 'bin') |
+ raise Exception('Unable to find the VC tools directory.') |
+ |
+ |
def _CopyPGORuntime(target_dir, target_cpu): |
"""Copy the runtime dependencies required during a PGO build. |
""" |
@@ -229,20 +251,7 @@ def _CopyPGORuntime(target_dir, target_cpu): |
'VC', 'bin') |
pgo_x64_runtime_dir = os.path.join(pgo_x86_runtime_dir, 'amd64') |
elif env_version == '2017': |
- # In VS2017 the PGO runtime dependencies are located in |
- # {toolchain_root}/VC/Tools/MSVC/{x.y.z}/bin/Host{target_cpu}/{target_cpu}/, |
- # the {version_number} part is likely to change in case of a minor update of |
- # the toolchain so we don't hardcode this value here (except for the major |
- # number). |
- vc_tools_msvc_root = os.path.join(os.environ.get('GYP_MSVS_OVERRIDE_PATH'), |
- 'VC', 'Tools', 'MSVC') |
- pgo_runtime_root = None |
- for directory in os.listdir(vc_tools_msvc_root): |
- if not os.path.isdir(os.path.join(vc_tools_msvc_root, directory)): |
- continue |
- if re.match('14\.\d+\.\d+', directory): |
- pgo_runtime_root = os.path.join(vc_tools_msvc_root, directory, 'bin') |
- break |
+ pgo_runtime_root = FindVCToolsRoot() |
assert pgo_runtime_root |
# There's no version of pgosweep.exe in HostX64/x86, so we use the copy |
# from HostX86/x86. |