Index: build/toolchain/gcc_toolchain.gni |
diff --git a/build/toolchain/gcc_toolchain.gni b/build/toolchain/gcc_toolchain.gni |
index 41766ce920985f529a5312ef61122ce389739593..74dbf073586502a8ec3899acd8b84be818d52cd8 100644 |
--- a/build/toolchain/gcc_toolchain.gni |
+++ b/build/toolchain/gcc_toolchain.gni |
@@ -4,6 +4,8 @@ |
import("//build/config/nacl/config.gni") |
import("//build/config/sanitizers/sanitizers.gni") |
+import("//build/toolchain/ccache.gni") |
+import("//build/toolchain/goma.gni") |
import("//build/toolchain/toolchain.gni") |
# This value will be inherited in the toolchain below. |
@@ -73,6 +75,12 @@ concurrent_links = exec_script("get_concurrent_links.py", [], "value") |
# default setting. |
# - is_nacl_glibc |
# Whether NaCl code is built using Glibc instead of Newlib. |
+# - use_ccache |
+# Override the global use_ccache setting, useful to opt-out of ccache in |
+# a particular toolchain by setting use_ccache = false in it. |
+# - use_goma |
+# Override the global use_goma setting, useful to opt-out of goma in a |
+# particular toolchain by setting use_gome = false in it. |
template("gcc_toolchain") { |
toolchain(target_name) { |
assert(defined(invoker.cc), "gcc_toolchain() must specify a \"cc\" value") |
@@ -84,6 +92,21 @@ template("gcc_toolchain") { |
assert(defined(invoker.toolchain_os), |
"gcc_toolchain() must specify a \"toolchain_os\"") |
+ if (defined(invoker.use_ccache)) { |
+ use_ccache = invoker.use_ccache |
+ } |
+ if (defined(invoker.use_goma)) { |
+ use_goma = invoker.use_goma |
+ } |
+ if (use_goma) { |
+ assert(!use_ccache, "Goma and ccache can't be used together.") |
+ compiler_prefix = "$goma_dir/gomacc " |
+ } else if (use_ccache) { |
+ compiler_prefix = "ccache " |
+ } else { |
+ compiler_prefix = "" |
+ } |
+ |
# This define changes when the toolchain changes, forcing a rebuild. |
# Nothing should ever use this define. |
if (defined(invoker.rebuild_define)) { |
@@ -92,11 +115,8 @@ template("gcc_toolchain") { |
rebuild_string = "" |
} |
- # We can't do string interpolation ($ in strings) on things with dots in |
- # them. To allow us to use $cc below, for example, we create copies of |
- # these values in our scope. |
- cc = invoker.cc |
- cxx = invoker.cxx |
+ cc = compiler_prefix + invoker.cc |
+ cxx = compiler_prefix + invoker.cxx |
ar = invoker.ar |
ld = invoker.ld |
if (defined(invoker.readelf)) { |