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

Side by Side Diff: build/toolchain/gcc_toolchain.gni

Issue 1660053005: Add option cc_wrapper to GN (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rename to cc_wrapper Created 4 years, 10 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/toolchain/cros/BUILD.gn ('k') | build/toolchain/linux/BUILD.gn » ('j') | 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/nacl/config.gni") 5 import("//build/config/nacl/config.gni")
6 import("//build/config/sanitizers/sanitizers.gni") 6 import("//build/config/sanitizers/sanitizers.gni")
7 import("//build/toolchain/ccache.gni") 7 import("//build/toolchain/cc_wrapper.gni")
8 import("//build/toolchain/goma.gni") 8 import("//build/toolchain/goma.gni")
9 import("//build/toolchain/toolchain.gni") 9 import("//build/toolchain/toolchain.gni")
10 10
11 # This value will be inherited in the toolchain below. 11 # This value will be inherited in the toolchain below.
12 if (is_cfi) { 12 if (is_cfi) {
13 concurrent_links = 13 concurrent_links =
14 exec_script("get_concurrent_links.py", [ "--lto" ], "value") 14 exec_script("get_concurrent_links.py", [ "--lto" ], "value")
15 } else { 15 } else {
16 concurrent_links = exec_script("get_concurrent_links.py", [], "value") 16 concurrent_links = exec_script("get_concurrent_links.py", [], "value")
17 } 17 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 # When set to true, is_asan, is_msan, etc.will all be set to false. Often 73 # When set to true, is_asan, is_msan, etc.will all be set to false. Often
74 # secondary toolchains do not want to run with sanitizers. 74 # secondary toolchains do not want to run with sanitizers.
75 # - is_clang 75 # - is_clang
76 # Whether to use clang instead of gcc. 76 # Whether to use clang instead of gcc.
77 # - is_component_build 77 # - is_component_build
78 # Whether to forcibly enable or disable component builds for this 78 # Whether to forcibly enable or disable component builds for this
79 # toolchain; if not specified, the toolchain will inherit the 79 # toolchain; if not specified, the toolchain will inherit the
80 # default setting. 80 # default setting.
81 # - is_nacl_glibc 81 # - is_nacl_glibc
82 # Whether NaCl code is built using Glibc instead of Newlib. 82 # Whether NaCl code is built using Glibc instead of Newlib.
83 # - use_ccache 83 # - cc_wrapper
84 # Override the global use_ccache setting, useful to opt-out of ccache in 84 # Override the global cc_wrapper setting. e.g. "ccache" or "icecc".
85 # a particular toolchain by setting use_ccache = false in it. 85 # useful to opt-out of cc_wrapper in a particular toolchain by setting
86 # cc_wrapper = "" in it.
86 # - use_goma 87 # - use_goma
87 # Override the global use_goma setting, useful to opt-out of goma in a 88 # Override the global use_goma setting, useful to opt-out of goma in a
88 # particular toolchain by setting use_gome = false in it. 89 # particular toolchain by setting use_gome = false in it.
89 # - use_gold 90 # - use_gold
90 # Override the global use_gold setting, useful if the particular 91 # Override the global use_gold setting, useful if the particular
91 # toolchain has a custom link step that is not actually using Gold. 92 # toolchain has a custom link step that is not actually using Gold.
92 template("gcc_toolchain") { 93 template("gcc_toolchain") {
93 toolchain(target_name) { 94 toolchain(target_name) {
94 assert(defined(invoker.cc), "gcc_toolchain() must specify a \"cc\" value") 95 assert(defined(invoker.cc), "gcc_toolchain() must specify a \"cc\" value")
95 assert(defined(invoker.cxx), "gcc_toolchain() must specify a \"cxx\" value") 96 assert(defined(invoker.cxx), "gcc_toolchain() must specify a \"cxx\" value")
96 assert(defined(invoker.ar), "gcc_toolchain() must specify a \"ar\" value") 97 assert(defined(invoker.ar), "gcc_toolchain() must specify a \"ar\" value")
97 assert(defined(invoker.ld), "gcc_toolchain() must specify a \"ld\" value") 98 assert(defined(invoker.ld), "gcc_toolchain() must specify a \"ld\" value")
98 assert(defined(invoker.toolchain_cpu), 99 assert(defined(invoker.toolchain_cpu),
99 "gcc_toolchain() must specify a \"toolchain_cpu\"") 100 "gcc_toolchain() must specify a \"toolchain_cpu\"")
100 assert(defined(invoker.toolchain_os), 101 assert(defined(invoker.toolchain_os),
101 "gcc_toolchain() must specify a \"toolchain_os\"") 102 "gcc_toolchain() must specify a \"toolchain_os\"")
102 103
103 if (defined(invoker.use_ccache)) { 104 if (defined(invoker.cc_wrapper)) {
104 use_ccache = invoker.use_ccache 105 cc_wrapper = invoker.cc_wrapper
105 } 106 }
106 if (defined(invoker.use_goma)) { 107 if (defined(invoker.use_goma)) {
107 use_goma = invoker.use_goma 108 use_goma = invoker.use_goma
108 } 109 }
109 if (use_goma) { 110 if (use_goma) {
110 assert(!use_ccache, "Goma and ccache can't be used together.") 111 assert(cc_wrapper == "", "Goma and cc_wrapper can't be used together.")
111 compiler_prefix = "$goma_dir/gomacc " 112 compiler_prefix = "$goma_dir/gomacc "
112 } else if (use_ccache) { 113 } else if (cc_wrapper != "") {
113 compiler_prefix = "ccache " 114 compiler_prefix = cc_wrapper + " "
114 } else { 115 } else {
115 compiler_prefix = "" 116 compiler_prefix = ""
116 } 117 }
117 118
118 # This define changes when the toolchain changes, forcing a rebuild. 119 # This define changes when the toolchain changes, forcing a rebuild.
119 # Nothing should ever use this define. 120 # Nothing should ever use this define.
120 if (defined(invoker.rebuild_define)) { 121 if (defined(invoker.rebuild_define)) {
121 rebuild_string = "-D" + invoker.rebuild_define + " " 122 rebuild_string = "-D" + invoker.rebuild_define + " "
122 } else { 123 } else {
123 rebuild_string = "" 124 rebuild_string = ""
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 is_tsan = false 419 is_tsan = false
419 is_ubsan = false 420 is_ubsan = false
420 is_ubsan_vptr = false 421 is_ubsan_vptr = false
421 } 422 }
422 } 423 }
423 424
424 forward_variables_from(invoker, [ "deps" ]) 425 forward_variables_from(invoker, [ "deps" ])
425 } 426 }
426 } 427 }
427 428
428 declare_args() {
429 clang_dir = "//third_party/llvm-build/Release+Asserts"
430 }
431
432 # This is a shorthand for gcc_toolchain instances based on the 429 # This is a shorthand for gcc_toolchain instances based on the
433 # Chromium-built version of Clang. Only the toolchain_cpu and 430 # Chromium-built version of Clang. Only the toolchain_cpu and
434 # toolchain_os variables need to be specified by the invoker, and 431 # toolchain_os variables need to be specified by the invoker, and
435 # optionally toolprefix if it's a cross-compile case. Note that for 432 # optionally toolprefix if it's a cross-compile case. Note that for
436 # a cross-compile case this toolchain requires a config to pass the 433 # a cross-compile case this toolchain requires a config to pass the
437 # appropriate -target option, or else it will actually just be doing 434 # appropriate -target option, or else it will actually just be doing
438 # a native compile. The invoker can optionally override use_gold too. 435 # a native compile. The invoker can optionally override use_gold too.
439 template("clang_toolchain") { 436 template("clang_toolchain") {
440 assert(defined(invoker.toolchain_cpu), 437 assert(defined(invoker.toolchain_cpu),
441 "clang_toolchain() must specify a \"toolchain_cpu\"") 438 "clang_toolchain() must specify a \"toolchain_cpu\"")
442 assert(defined(invoker.toolchain_os), 439 assert(defined(invoker.toolchain_os),
443 "clang_toolchain() must specify a \"toolchain_os\"") 440 "clang_toolchain() must specify a \"toolchain_os\"")
444 if (defined(invoker.toolprefix)) { 441 if (defined(invoker.toolprefix)) {
445 toolprefix = invoker.toolprefix 442 toolprefix = invoker.toolprefix
446 } else { 443 } else {
447 toolprefix = "" 444 toolprefix = ""
448 } 445 }
449 446
450 gcc_toolchain(target_name) { 447 gcc_toolchain(target_name) {
451 prefix = rebase_path(clang_dir + "/bin", root_build_dir) 448 prefix = rebase_path("//third_party/llvm-build/Release+Asserts/bin",
449 root_build_dir)
452 cc = "$prefix/clang" 450 cc = "$prefix/clang"
453 cxx = "$prefix/clang++" 451 cxx = "$prefix/clang++"
454 ld = cxx 452 ld = cxx
455 is_clang = true 453 is_clang = true
456 454
457 readelf = "${toolprefix}readelf" 455 readelf = "${toolprefix}readelf"
458 ar = "${toolprefix}ar" 456 ar = "${toolprefix}ar"
459 nm = "${toolprefix}nm" 457 nm = "${toolprefix}nm"
460 458
461 forward_variables_from(invoker, 459 forward_variables_from(invoker,
462 [ 460 [
463 "toolchain_cpu", 461 "toolchain_cpu",
464 "toolchain_os", 462 "toolchain_os",
465 "use_gold", 463 "use_gold",
466 ]) 464 ])
467 } 465 }
468 } 466 }
OLDNEW
« no previous file with comments | « build/toolchain/cros/BUILD.gn ('k') | build/toolchain/linux/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698