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

Unified Diff: tools/clang/scripts/update.py

Issue 2848113002: clang: Link lld against tcmalloc. (Closed)
Patch Set: Created 3 years, 8 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: tools/clang/scripts/update.py
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index e7abcb704bca7bf7335005c6bfce08b61ee05717..75a5c0e376f26e36cf4d229735227676501a7c52 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -34,7 +34,7 @@ if use_head_revision:
CLANG_REVISION = 'HEAD'
# This is incremented when pushing a new build of Clang at the same revision.
-CLANG_SUB_REVISION=1
+CLANG_SUB_REVISION=2
PACKAGE_VERSION = "%s-%s" % (CLANG_REVISION, CLANG_SUB_REVISION)
@@ -66,11 +66,10 @@ LLVM_BUILD_TOOLS_DIR = os.path.abspath(
os.path.join(LLVM_DIR, '..', 'llvm-build-tools'))
STAMP_FILE = os.path.normpath(
os.path.join(LLVM_DIR, '..', 'llvm-build', 'cr_build_revision'))
-BINUTILS_DIR = os.path.join(THIRD_PARTY_DIR, 'binutils')
-BINUTILS_BIN_DIR = os.path.join(BINUTILS_DIR, BINUTILS_DIR,
- 'Linux_x64', 'Release', 'bin')
-BFD_PLUGINS_DIR = os.path.join(BINUTILS_DIR, 'Linux_x64', 'Release',
- 'lib', 'bfd-plugins')
+BINUTILS_DIR = os.path.join(THIRD_PARTY_DIR, 'binutils', 'Linux_x64', 'Release')
+BINUTILS_BIN_DIR = os.path.join(BINUTILS_DIR, 'bin')
+BINUTILS_LIB_DIR = os.path.join(BINUTILS_DIR, 'lib')
+BFD_PLUGINS_DIR = os.path.join(BINUTILS_LIB_DIR, 'bfd-plugins')
VERSION = '5.0.0'
ANDROID_NDK_DIR = os.path.join(
CHROMIUM_DIR, 'third_party', 'android_tools', 'ndk')
@@ -503,7 +502,7 @@ def UpdateClang(args):
binutils_incdir = ''
if sys.platform.startswith('linux'):
- binutils_incdir = os.path.join(BINUTILS_DIR, 'Linux_x64/Release/include')
+ binutils_incdir = os.path.join(BINUTILS_DIR, 'include')
if args.bootstrap:
print 'Building bootstrap compiler'
@@ -565,6 +564,11 @@ def UpdateClang(args):
os.path.join(LLVM_BOOTSTRAP_INSTALL_DIR, 'lib', 'LLVMgold.so'),
os.path.join(BFD_PLUGINS_DIR, 'LLVMgold.so')])
+ # Link against binutils's copy of tcmalloc to speed up the linker by ~10%.
+ tcmalloc_ldflags = [
+ '-L' + BINUTILS_LIB_DIR, '-ltcmalloc_minimal',
+ '-Wl,-rpath,\\$ORIGIN/../../../binutils/Linux_x64/Release/lib']
hans 2017/04/28 23:23:26 Does package.py need an update to include the .so?
pcc1 2017/04/28 23:27:16 The .so is part of binutils, so wouldn't it come w
+
lto_cflags = ['-flto=thin']
lto_ldflags = ['-fuse-ld=lld']
if args.gcc_toolchain:
@@ -577,7 +581,7 @@ def UpdateClang(args):
'-DCMAKE_CXX_COMPILER=' + cxx,
'-DCMAKE_C_FLAGS=' + ' '.join(lto_cflags),
'-DCMAKE_CXX_FLAGS=' + ' '.join(lto_cflags),
- '-DCMAKE_EXE_LINKER_FLAGS=' + ' '.join(lto_ldflags),
+ '-DCMAKE_EXE_LINKER_FLAGS=' + ' '.join(lto_ldflags + tcmalloc_ldflags),
'-DCMAKE_SHARED_LINKER_FLAGS=' + ' '.join(lto_ldflags),
'-DCMAKE_MODULE_LINKER_FLAGS=' + ' '.join(lto_ldflags)]
@@ -585,6 +589,10 @@ def UpdateClang(args):
lto_env = os.environ.copy()
lto_env['PATH'] = BINUTILS_BIN_DIR + os.pathsep + lto_env.get('PATH', '')
+ # Also need to make sure that tblgen can find the tcmalloc DSO.
+ lto_env['LD_LIBRARY_PATH'] = \
+ BINUTILS_LIB_DIR + os.pathsep + lto_env.get('LD_LIBRARY_PATH', '')
+
RmCmakeCache('.')
RunCommand(['cmake'] + lto_cmake_args + [LLVM_DIR], env=lto_env)
RunCommand(['ninja', 'LLVMgold', 'lld'], env=lto_env)
« 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