#!/usr/bin/env python # Copyright (c) 2012 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """ This script is based on chromium/chromium/master/tools/clang/scripts/update.py. It is used on Windows platforms to copy the correct msdia*.dll to the clang folder, as a "gclient hook". """ import os import shutil import stat import sys # Path constants. (All of these should be absolute paths.) THIS_DIR = os.path.abspath(os.path.dirname(__file__)) LLVM_BUILD_DIR = os.path.abspath(os.path.join(THIS_DIR, '..', '..', 'third_party', 'llvm-build', 'Release+Asserts')) def GetDiaDll(): """Get the location of msdia*.dll for the platform.""" # Bump after VC updates. DIA_DLL = { '2013': 'msdia120.dll', '2015': 'msdia140.dll', '2017': 'msdia140.dll', '2019': 'msdia140.dll', } # Don't let vs_toolchain overwrite our environment. environ_bak = os.environ sys.path.append(os.path.join(THIS_DIR, '..', '..', 'build')) import vs_toolchain win_sdk_dir = vs_toolchain.SetEnvironmentAndGetSDKDir() msvs_version = vs_toolchain.GetVisualStudioVersion() if bool(int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN', '1'))): dia_path = os.path.join(win_sdk_dir, '..', 'DIA SDK', 'bin', 'amd64') else: if 'GYP_MSVS_OVERRIDE_PATH' in os.environ: vs_path = os.environ['GYP_MSVS_OVERRIDE_PATH'] else: vs_path = vs_toolchain.DetectVisualStudioPath() dia_path = os.path.join(vs_path, 'DIA SDK', 'bin', 'amd64') os.environ = environ_bak return os.path.join(dia_path, DIA_DLL[msvs_version]) def CopyFile(src, dst): """Copy a file from src to dst.""" print("Copying %s to %s" % (str(src), str(dst))) shutil.copy(src, dst) def CopyDiaDllTo(target_dir): # This script always wants to use the 64-bit msdia*.dll. dia_dll = GetDiaDll() CopyFile(dia_dll, target_dir) def main(): CopyDiaDllTo(os.path.join(LLVM_BUILD_DIR, 'bin')) return 0 if __name__ == '__main__': sys.exit(main())