Commit 02343c66 authored by brucedawson's avatar brucedawson Committed by Commit bot

Switch to VS 2015 Update 3

VS 2015 Update 3 offers numerous improvements such as improved
language conformance, fixes to avoid linker crashes, and
improved code-gen for faster performance. Update 3 also resolves
some problems with incremental linking silently falling back to
a full link.

It also fixes an internal compiler error in /analyze builds.

The landmines change is needed because otherwise things like the
out\Release\cdb directory do not get regenerated.

The process for creating this package is:
- Create a clean Windows VM running Windows Server 2012 R2 (en_windows_server_2012_r2_vl_with_update_x64_dvd_6052766.iso, SHA1: 247EAEE5628850A41F0C51471656AAFB2492EA08, Standard Edition)
- Install depot tools, run ‘gclient’, and add depot_tools to the path
- Install VS 2015 Professional Update 3 - must have been installed after July 12th to get the latest fixes - with these settings and nothing else:
 * Visual C++ and make sure the three nodes underneath are also selected
 * Under Universal Windows App Development Tools make sure the "Tools (1.4.1) and Windows 10 SDK (10.0.14393)" and the "Windows 10 SDK (10.0.10586)" nodes are selected and nothing else
- Copy the *Debugger and Tools*.msi installers from another machine and run them. The 10.0.14393 versions (Anniversary Edition) should be used.
- Then run:
    python depot_tools\win_toolchain\package_from_installed.py 2015

It is also possible to package the 14393 SDK by running this command,
but that change is being saved for later:
    python depot_tools\win_toolchain\package_from_installed.py 2015 -w 10.0.14393.0

BUG=627216,636468,427616,637456

Review-Url: https://codereview.chromium.org/2106203002
Cr-Commit-Position: refs/heads/master@{#417157}
parent 34509f0a
...@@ -44,7 +44,7 @@ def print_landmines(): ...@@ -44,7 +44,7 @@ def print_landmines():
print ('Improper dependency for create_nmf.py broke in r240802, ' print ('Improper dependency for create_nmf.py broke in r240802, '
'fixed in r240860.') 'fixed in r240860.')
if (platform() == 'win' and gyp_msvs_version().startswith('2015')): if (platform() == 'win' and gyp_msvs_version().startswith('2015')):
print 'Switch to VS2015 Update 2' print 'Switch to VS2015 Update 3'
print 'Need to clobber everything due to an IDL change in r154579 (blink)' print 'Need to clobber everything due to an IDL change in r154579 (blink)'
print 'Need to clobber everything due to gen file moves in r175513 (Blink)' print 'Need to clobber everything due to gen file moves in r175513 (Blink)'
if (platform() != 'ios'): if (platform() != 'ios'):
......
...@@ -305,12 +305,8 @@ def _GetDesiredVsToolchainHashes(): ...@@ -305,12 +305,8 @@ def _GetDesiredVsToolchainHashes():
"""Load a list of SHA1s corresponding to the toolchains that we want installed """Load a list of SHA1s corresponding to the toolchains that we want installed
to build with.""" to build with."""
if GetVisualStudioVersion() == '2015': if GetVisualStudioVersion() == '2015':
if bool(int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN_PRERELEASE', '0'))): # Update 3 final with patches with 10.0.10586.0 SDK.
# Update 3 final with patches. return ['d5dc33b15d1b2c086f2f6632e2fd15882f80dbd3']
return ['d5dc33b15d1b2c086f2f6632e2fd15882f80dbd3']
else:
# Update 2.
return ['95ddda401ec5678f15eeed01d2bee08fcbc5ee97']
else: else:
return ['03a4e939cd325d6bc5216af41b92d02dda1366a6'] return ['03a4e939cd325d6bc5216af41b92d02dda1366a6']
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
import glob
import hashlib import hashlib
import os import os
import shutil import shutil
...@@ -77,6 +78,7 @@ def _CopyCDBToOutput(output_dir, target_arch): ...@@ -77,6 +78,7 @@ def _CopyCDBToOutput(output_dir, target_arch):
dst_winext_dir = os.path.join(output_dir, 'winext') dst_winext_dir = os.path.join(output_dir, 'winext')
src_winxp_dir = os.path.join(src_dir, 'winxp') src_winxp_dir = os.path.join(src_dir, 'winxp')
dst_winxp_dir = os.path.join(output_dir, 'winxp') dst_winxp_dir = os.path.join(output_dir, 'winxp')
src_crt_dir = os.path.join(win_sdk_dir, r'Redist\ucrt\DLLs', src_arch)
_ConditionalMkdir(dst_winext_dir) _ConditionalMkdir(dst_winext_dir)
_ConditionalMkdir(dst_winxp_dir) _ConditionalMkdir(dst_winxp_dir)
# Note that the outputs from the "copy_cdb_to_output" target need to # Note that the outputs from the "copy_cdb_to_output" target need to
...@@ -89,6 +91,9 @@ def _CopyCDBToOutput(output_dir, target_arch): ...@@ -89,6 +91,9 @@ def _CopyCDBToOutput(output_dir, target_arch):
_CopyImpl('uext.dll', dst_winext_dir, src_winext_dir) _CopyImpl('uext.dll', dst_winext_dir, src_winext_dir)
_CopyImpl('exts.dll', dst_winxp_dir, src_winxp_dir) _CopyImpl('exts.dll', dst_winxp_dir, src_winxp_dir)
_CopyImpl('ntsdexts.dll', dst_winxp_dir, src_winxp_dir) _CopyImpl('ntsdexts.dll', dst_winxp_dir, src_winxp_dir)
for dll_path in glob.glob(os.path.join(src_crt_dir, 'api-ms-win-*.dll')):
_CopyImpl(os.path.split(dll_path)[1], output_dir, src_crt_dir)
_CopyImpl('ucrtbase.dll', output_dir, src_crt_dir)
return 0 return 0
......
...@@ -19,6 +19,47 @@ if (is_win) { ...@@ -19,6 +19,47 @@ if (is_win) {
"$root_out_dir/cdb/winext/uext.dll", "$root_out_dir/cdb/winext/uext.dll",
"$root_out_dir/cdb/winxp/exts.dll", "$root_out_dir/cdb/winxp/exts.dll",
"$root_out_dir/cdb/winxp/ntsdexts.dll", "$root_out_dir/cdb/winxp/ntsdexts.dll",
"$root_out_dir/cdb/api-ms-win-core-console-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-datetime-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-debug-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-errorhandling-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-file-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-file-l1-2-0.dll",
"$root_out_dir/cdb/api-ms-win-core-file-l2-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-handle-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-heap-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-interlocked-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-libraryloader-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-localization-l1-2-0.dll",
"$root_out_dir/cdb/api-ms-win-core-memory-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-namedpipe-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-processenvironment-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-processthreads-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-processthreads-l1-1-1.dll",
"$root_out_dir/cdb/api-ms-win-core-profile-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-rtlsupport-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-string-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-synch-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-synch-l1-2-0.dll",
"$root_out_dir/cdb/api-ms-win-core-sysinfo-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-timezone-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-core-util-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-conio-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-convert-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-environment-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-filesystem-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-heap-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-locale-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-math-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-multibyte-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-private-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-process-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-runtime-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-stdio-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-string-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-time-l1-1-0.dll",
"$root_out_dir/cdb/api-ms-win-crt-utility-l1-1-0.dll",
"$root_out_dir/cdb/ucrtbase.dll",
] ]
args = [ args = [
rebase_path("$root_out_dir/cdb", root_out_dir), rebase_path("$root_out_dir/cdb", root_out_dir),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment