Copy the PGO runtime library to the release directory (take 2)

This is a reland of https://codereview.chromium.org/402993002/ with an additional check to make sure that the DLLs exist before trying to copy them.

BUG=395183

Review URL: https://codereview.chromium.org/405983003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284550 0039d316-1c4b-4281-b951-d872f2087c98
parent 7d54a195
...@@ -71,6 +71,18 @@ def CopyVsRuntimeDlls(output_dir, runtime_dirs): ...@@ -71,6 +71,18 @@ def CopyVsRuntimeDlls(output_dir, runtime_dirs):
""" """
assert sys.platform.startswith(('win32', 'cygwin')) assert sys.platform.startswith(('win32', 'cygwin'))
def copy_runtime_impl(target, source):
"""Copy |source| to |target| if it doesn't already exist or if it need to be
updated.
"""
if (os.path.isdir(os.path.dirname(target)) and
(not os.path.isfile(target) or
os.stat(target).st_mtime != os.stat(source).st_mtime)):
print 'Copying %s to %s...' % (source, target)
if os.path.exists(target):
os.unlink(target)
shutil.copy2(source, target)
def copy_runtime(target_dir, source_dir, dll_pattern): def copy_runtime(target_dir, source_dir, dll_pattern):
"""Copy both the msvcr and msvcp runtime DLLs, only if the target doesn't """Copy both the msvcr and msvcp runtime DLLs, only if the target doesn't
exist, but the target directory does exist.""" exist, but the target directory does exist."""
...@@ -78,15 +90,7 @@ def CopyVsRuntimeDlls(output_dir, runtime_dirs): ...@@ -78,15 +90,7 @@ def CopyVsRuntimeDlls(output_dir, runtime_dirs):
dll = dll_pattern % which dll = dll_pattern % which
target = os.path.join(target_dir, dll) target = os.path.join(target_dir, dll)
source = os.path.join(source_dir, dll) source = os.path.join(source_dir, dll)
# If gyp generated to that output dir, and the runtime isn't already copy_runtime_impl(target, source)
# there, then copy it over.
if (os.path.isdir(target_dir) and
(not os.path.isfile(target) or
os.stat(target).st_mtime != os.stat(source).st_mtime)):
print 'Copying %s to %s...' % (source, target)
if os.path.exists(target):
os.unlink(target)
shutil.copy2(source, target)
x86, x64 = runtime_dirs x86, x64 = runtime_dirs
out_debug = os.path.join(output_dir, 'Debug') out_debug = os.path.join(output_dir, 'Debug')
...@@ -107,6 +111,20 @@ def CopyVsRuntimeDlls(output_dir, runtime_dirs): ...@@ -107,6 +111,20 @@ def CopyVsRuntimeDlls(output_dir, runtime_dirs):
copy_runtime(out_debug_nacl64, x64, 'msvc%s120d.dll') copy_runtime(out_debug_nacl64, x64, 'msvc%s120d.dll')
copy_runtime(out_release_nacl64, x64, 'msvc%s120.dll') copy_runtime(out_release_nacl64, x64, 'msvc%s120.dll')
# Copy the PGO runtime library to the release directories.
if os.environ.get('GYP_MSVS_OVERRIDE_PATH'):
pgo_x86_runtime_dir = os.path.join(os.environ.get('GYP_MSVS_OVERRIDE_PATH'),
'VC', 'bin')
pgo_x64_runtime_dir = os.path.join(pgo_x86_runtime_dir, 'amd64')
pgo_runtime_dll = 'pgort120.dll'
source_x86 = os.path.join(pgo_x86_runtime_dir, pgo_runtime_dll)
if os.path.exists(source_x86):
copy_runtime_impl(os.path.join(out_release, pgo_runtime_dll), source_x86)
source_x64 = os.path.join(pgo_x64_runtime_dir, pgo_runtime_dll)
if os.path.exists(source_x64):
copy_runtime_impl(os.path.join(out_release_x64, pgo_runtime_dll),
source_x64)
def _GetDesiredVsToolchainHashes(): 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
......
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