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

Side by Side Diff: build/config/compiler/BUILD.gn

Issue 2120233002: Enable gold threaded link (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: +linux_use_bundled_binutils condition Created 4 years, 5 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 unified diff | Download patch
« no previous file with comments | « build/common.gypi ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import("//build/config/android/config.gni") 5 import("//build/config/android/config.gni")
6 import("//build/config/chrome_build.gni") 6 import("//build/config/chrome_build.gni")
7 import("//build/config/compiler/compiler.gni") 7 import("//build/config/compiler/compiler.gni")
8 import("//build/config/nacl/config.gni") 8 import("//build/config/nacl/config.gni")
9 import("//build/toolchain/cc_wrapper.gni") 9 import("//build/toolchain/cc_wrapper.gni")
10 import("//build/toolchain/toolchain.gni") 10 import("//build/toolchain/toolchain.gni")
(...skipping 19 matching lines...) Expand all
30 treat_warnings_as_errors = true 30 treat_warnings_as_errors = true
31 31
32 # Normally, Android builds are lightly optimized, even for debug builds, to 32 # Normally, Android builds are lightly optimized, even for debug builds, to
33 # keep binary size down. Setting this flag to true disables such optimization 33 # keep binary size down. Setting this flag to true disables such optimization
34 android_full_debug = false 34 android_full_debug = false
35 35
36 # Whether to use the binary binutils checked into third_party/binutils. 36 # Whether to use the binary binutils checked into third_party/binutils.
37 # These are not multi-arch so cannot be used except on x86 and x86-64 (the 37 # These are not multi-arch so cannot be used except on x86 and x86-64 (the
38 # only two architectures that are currently checked in). Turn this off when 38 # only two architectures that are currently checked in). Turn this off when
39 # you are using a custom toolchain and need to control -B in cflags. 39 # you are using a custom toolchain and need to control -B in cflags.
40 linux_use_bundled_binutils = 40 linux_use_bundled_binutils =
Lei Zhang 2016/08/29 17:55:43 I'm happy this CL landed, but now I'm trying to ro
Nico 2016/08/29 17:56:50 I'd ask on gn-dev what best practice is supposed t
Dirk Pranke 2016/08/29 18:11:05 There's a number of different possible options, bu
41 is_linux && (current_cpu == "x64" || current_cpu == "x86") 41 is_linux && (current_cpu == "x64" || current_cpu == "x86")
42 binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin", 42 binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin",
43 root_build_dir) 43 root_build_dir)
44 44
45 # Compile in such a way as to make it possible for the profiler to unwind full 45 # Compile in such a way as to make it possible for the profiler to unwind full
46 # stack frames. Setting this flag has a large effect on the performance of the 46 # stack frames. Setting this flag has a large effect on the performance of the
47 # generated code than just setting profiling, but gives the profiler more 47 # generated code than just setting profiling, but gives the profiler more
48 # information to analyze. 48 # information to analyze.
49 # Requires profiling to be set to true. 49 # Requires profiling to be set to true.
50 enable_full_stack_frames_for_profiling = false 50 enable_full_stack_frames_for_profiling = false
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 201
202 # The x86 toolchain currently has problems with stack-protector. 202 # The x86 toolchain currently has problems with stack-protector.
203 if (is_android && current_cpu == "x86") { 203 if (is_android && current_cpu == "x86") {
204 cflags += [ "-fno-stack-protector" ] 204 cflags += [ "-fno-stack-protector" ]
205 } else { 205 } else {
206 cflags += [ "-fstack-protector" ] 206 cflags += [ "-fstack-protector" ]
207 } 207 }
208 } 208 }
209 209
210 # Linker warnings. 210 # Linker warnings.
211 if ( fatal_linker_warnings && 211 if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") &&
212 !(is_chromeos && current_cpu == "arm") &&
213 !(is_android && use_order_profiling) && !is_mac && !is_ios) { 212 !(is_android && use_order_profiling) && !is_mac && !is_ios) {
214 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 213 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580
215 # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1 214 # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1
216 # crbug.com/485542 215 # crbug.com/485542
217 ldflags += [ "-Wl,--fatal-warnings" ] 216 ldflags += [ "-Wl,--fatal-warnings" ]
218 } 217 }
219 } 218 }
220 219
221 if (is_clang && is_debug) { 220 if (is_clang && is_debug) {
222 # Allow comparing the address of references and 'this' against 0 221 # Allow comparing the address of references and 'this' against 0
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 # Let clang find the ld.gold in the NDK. 310 # Let clang find the ld.gold in the NDK.
312 ldflags += [ "--gcc-toolchain=$_rebased_android_toolchain_root" ] 311 ldflags += [ "--gcc-toolchain=$_rebased_android_toolchain_root" ]
313 } 312 }
314 313
315 # Use -mstackrealign due to a bug on ia32 Jelly Bean. 314 # Use -mstackrealign due to a bug on ia32 Jelly Bean.
316 # See crbug.com/521527 315 # See crbug.com/521527
317 if (current_cpu == "x86") { 316 if (current_cpu == "x86") {
318 cflags += [ "-mstackrealign" ] 317 cflags += [ "-mstackrealign" ]
319 } 318 }
320 } else { 319 } else {
321 ldflags += [ 320 ldflags += [ "-B$gold_path" ]
322 "-B$gold_path", 321
323 # Experimentation found that using four linking threads 322 if (linux_use_bundled_binutils) {
324 # saved ~20% of link time. 323 ldflags += [
325 # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thr ead/thread/281527606915bb36 324 # Experimentation found that using four linking threads
326 # Only apply this to the target linker, since the host 325 # saved ~20% of link time.
327 # linker might not be gold, but isn't used much anyway. 326 # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_t hread/thread/281527606915bb36
328 # TODO(raymes): Disable threading because gold is frequently 327 # Only apply this to the target linker, since the host
329 # crashing on the bots: crbug.com/161942. 328 # linker might not be gold, but isn't used much anyway.
330 #"-Wl,--threads", 329 "-Wl,--threads",
331 #"-Wl,--thread-count=4", 330 "-Wl,--thread-count=4",
332 ] 331 ]
332 }
333 } 333 }
334 334
335 if (gdb_index) { 335 if (gdb_index) {
336 ldflags += [ "-Wl,--gdb-index" ] 336 ldflags += [ "-Wl,--gdb-index" ]
337 } 337 }
338 338
339 # TODO(thestig): Make this flag work with GN. 339 # TODO(thestig): Make this flag work with GN.
340 #if (!is_official_build && !is_chromeos && !(is_asan || is_lsan || is_tsan | | is_msan)) { 340 #if (!is_official_build && !is_chromeos && !(is_asan || is_lsan || is_tsan | | is_msan)) {
341 # ldflags += [ 341 # ldflags += [
342 # "-Wl,--detect-odr-violations", 342 # "-Wl,--detect-odr-violations",
(...skipping 1223 matching lines...) Expand 10 before | Expand all | Expand 10 after
1566 1566
1567 if (is_ios || is_mac) { 1567 if (is_ios || is_mac) {
1568 # On Mac and iOS, this enables support for ARC (automatic ref-counting). 1568 # On Mac and iOS, this enables support for ARC (automatic ref-counting).
1569 # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html. 1569 # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html.
1570 config("enable_arc") { 1570 config("enable_arc") {
1571 common_flags = [ "-fobjc-arc" ] 1571 common_flags = [ "-fobjc-arc" ]
1572 cflags_objc = common_flags 1572 cflags_objc = common_flags
1573 cflags_objcc = common_flags 1573 cflags_objcc = common_flags
1574 } 1574 }
1575 } 1575 }
OLDNEW
« no previous file with comments | « build/common.gypi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698