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

Unified Diff: build/vs_toolchain.py

Issue 2743423002: Copy *all* UCRT DLLs to the output directory (Closed)
Patch Set: Created 3 years, 9 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/vs_toolchain.py
diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py
index d2b819793d3f3b4527836b247df3272cd8c3b9e0..b785fc9322f2532d57238213b3f25c7251250926 100755
--- a/build/vs_toolchain.py
+++ b/build/vs_toolchain.py
@@ -209,7 +209,7 @@ def _CopyRuntime2013(target_dir, source_dir, dll_pattern):
_CopyRuntimeImpl(target, source)
-def _CopyUCRTRuntime(target_dir, source_dir, dll_pattern, suffix):
+def _CopyUCRTRuntime(target_dir, source_dir, target_cpu, dll_pattern, suffix):
"""Copy both the msvcp and vccorlib runtime DLLs, only if the target doesn't
exist, but the target directory does exist."""
for file_part in ('msvcp', 'vccorlib', 'vcruntime'):
@@ -217,14 +217,16 @@ def _CopyUCRTRuntime(target_dir, source_dir, dll_pattern, suffix):
target = os.path.join(target_dir, dll)
source = os.path.join(source_dir, dll)
_CopyRuntimeImpl(target, source)
- # OS installs of Visual Studio (and all installs of Windows 10) put the
- # universal CRT files in c:\Windows\System32\downlevel - look for them there
- # to support DEPOT_TOOLS_WIN_TOOLCHAIN=0.
- if os.path.exists(os.path.join(source_dir, 'downlevel')):
- ucrt_src_glob = os.path.join(source_dir, 'downlevel', 'api-ms-win-*.dll')
- else:
- ucrt_src_glob = os.path.join(source_dir, 'api-ms-win-*.dll')
- ucrt_files = glob.glob(ucrt_src_glob)
+ # Copy the UCRT files needed by VS 2015 from the Windows SDK. This location
+ # includes the api-ms-win-crt-*.dll files that are not found in the Windows
+ # directory. These files are needed for component builds.
+ # If WINDOWSSDKDIR is not set use the default SDK path. This will be the case
+ # when DEPOT_TOOLS_WIN_TOOLCHAIN=0 and vcvarsall.bat has not been run.
+ win_sdk_dir = os.path.normpath(
+ os.environ.get('WINDOWSSDKDIR',
+ 'C:\\Program Files (x86)\\Windows Kits\\10'))
+ ucrt_dll_dirs = os.path.join(win_sdk_dir, r'Redist\ucrt\DLLs', target_cpu)
+ ucrt_files = glob.glob(os.path.join(ucrt_dll_dirs, 'api-ms-win-*.dll'))
assert len(ucrt_files) > 0
for ucrt_src_file in ucrt_files:
file_part = os.path.basename(ucrt_src_file)
@@ -240,7 +242,8 @@ def _CopyRuntime(target_dir, source_dir, target_cpu, debug):
suffix = "d.dll" if debug else ".dll"
if GetVisualStudioVersion() in ['2015', '2017']:
# VS 2017 uses the same CRT DLLs as VS 2015.
- _CopyUCRTRuntime(target_dir, source_dir, '%s140' + suffix, suffix)
+ _CopyUCRTRuntime(target_dir, source_dir, target_cpu, '%s140' + suffix,
+ suffix)
else:
_CopyRuntime2013(target_dir, source_dir, 'msvc%s120' + suffix)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698