GN: support compiler_prefix, use it for ccache on bots.
This makes it considerably easier to use ccache with the Android NDK.
You can now just set
compiler_prefix = "ccache"
ndk = "/path/to/ndk"
and we'll use the NDK clang, wrapped with ccache.
The name compiler_prefix is stolen from / compatible with Chrome.
If you have ccache, you can just always leave compiler_prefix="ccache" enabled.
This should make it an unusual thing for humans to have to change cc or cxx.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2281163002
Review-Url: https://codereview.chromium.org/2281163002
diff --git a/gn/BUILD.gn b/gn/BUILD.gn
index fc518ff..da627d7 100644
--- a/gn/BUILD.gn
+++ b/gn/BUILD.gn
@@ -17,6 +17,8 @@
extra_cflags = ""
extra_cflags_c = ""
extra_cflags_cc = ""
+
+ compiler_prefix = ""
}
config("no_rtti") {
@@ -125,32 +127,34 @@
tool("cc") {
depfile = "{{output}}.d"
- command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} $extra_cflags $extra_cflags_c -c {{source}} -o {{output}}"
+ command = "$compiler_prefix $cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} $extra_cflags $extra_cflags_c -c {{source}} -o {{output}}"
depsformat = "gcc"
outputs = [
"{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
]
- description = "$cc ... $extra_cflags $extra_cflags_c -o {{output}}"
+ description =
+ "$compiler_prefix $cc ... $extra_cflags $extra_cflags_c -o {{output}}"
}
tool("cxx") {
depfile = "{{output}}.d"
- command = "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} $extra_cflags $extra_cflags_cc -c {{source}} -o {{output}}"
+ command = "$compiler_prefix $cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} $extra_cflags $extra_cflags_cc -c {{source}} -o {{output}}"
depsformat = "gcc"
outputs = [
"{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
]
- description = "$cxx ... $extra_cflags $extra_cflags_cc -o {{output}}"
+ description =
+ "$compiler_prefix $cxx ... $extra_cflags $extra_cflags_cc -o {{output}}"
}
tool("asm") {
depfile = "{{output}}.d"
- command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{asmflags}} -c {{source}} -o {{output}}"
+ command = "$compiler_prefix $cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{asmflags}} -c {{source}} -o {{output}}"
depsformat = "gcc"
outputs = [
"{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
]
- description = "$cc ... -o {{output}}"
+ description = "$compiler_prefix $cc ... -o {{output}}"
}
tool("alink") {
@@ -171,22 +175,22 @@
rpath = "-Wl,-install_name,@rpath/$soname"
}
- command = "$cxx -shared {{ldflags}} {{inputs}} {{solibs}} {{libs}} $rpath -o {{output}}"
+ command = "$compiler_prefix $cxx -shared {{ldflags}} {{inputs}} {{solibs}} {{libs}} $rpath -o {{output}}"
outputs = [
"{{root_out_dir}}/$soname",
]
output_prefix = "lib"
default_output_extension = ".so"
- description = "$cxx -shared ... -o {{output}}"
+ description = "$compiler_prefix $cxx -shared ... -o {{output}}"
pool = ":link_pool"
}
tool("link") {
- command = "$cxx {{ldflags}} {{inputs}} {{solibs}} {{libs}} -o {{output}}"
+ command = "$compiler_prefix $cxx {{ldflags}} {{inputs}} {{solibs}} {{libs}} -o {{output}}"
outputs = [
"{{root_out_dir}}/{{target_output_name}}{{output_extension}}",
]
- description = "$cxx ... -o {{output}}"
+ description = "$compiler_prefix $cxx ... -o {{output}}"
pool = ":link_pool"
}