win: implement cc_wrapper build variable
This allows usage on windows of non-goma build wrappers (e.g.
sccache[1]) for us lowly non-googlers.
We've been using this in Electron for several months[2].
[1]: https://github.com/mozilla/sccache
[2]: https://github.com/electron/electron/blob/d56617e5d009fc03f4faa684ca1e6fbe0e1d2e51/patches/common/chromium/windows_cc_wrapper.patch
Change-Id: I2de68eac93bfbf3343e04b3253330dfa28e6048b
Reviewed-on: https://chromium-review.googlesource.com/c/1343518
Commit-Queue: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#609852}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 72f650d9ec3e78b9c0c3f0c5642b5a9a2a499975
diff --git a/win/BUILD.gn b/win/BUILD.gn
index 43fecc6..07319b7 100644
--- a/win/BUILD.gn
+++ b/win/BUILD.gn
@@ -6,6 +6,7 @@
import("//build/config/compiler/compiler.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/win/visual_studio_version.gni")
+import("//build/toolchain/cc_wrapper.gni")
import("//build/toolchain/clang_static_analyzer.gni")
import("//build/toolchain/goma.gni")
import("//build/toolchain/toolchain.gni")
@@ -28,8 +29,14 @@
} else {
goma_prefix = "$goma_dir/gomacc "
}
+ clang_prefix = goma_prefix
} else {
goma_prefix = ""
+ if (cc_wrapper != "") {
+ clang_prefix = cc_wrapper + " "
+ } else {
+ clang_prefix = ""
+ }
}
# Copy the VS runtime DLL for the default toolchain to the root build directory
@@ -209,7 +216,7 @@
tool("asm") {
if (toolchain_args.current_cpu == "arm64") {
prefix = rebase_path("$clang_base_path/bin", root_build_dir)
- ml = "${goma_prefix}${prefix}/${clang_cl} --target=arm64-windows"
+ ml = "${clang_prefix}${prefix}/${clang_cl} --target=arm64-windows"
} else {
if (toolchain_args.current_cpu == "x64") {
ml = "ml64.exe /nologo"
@@ -397,7 +404,7 @@
msvc_toolchain("win_clang_" + win_build_host_cpu) {
environment = "environment." + win_build_host_cpu
prefix = rebase_path("$clang_base_path/bin", root_build_dir)
- cl = "${goma_prefix}$prefix/${clang_cl}"
+ cl = "${clang_prefix}$prefix/${clang_cl}"
sys_include_flags = "${build_cpu_toolchain_data.include_flags_imsvc}"
if (host_os != "win") {
# For win cross build.
@@ -449,7 +456,7 @@
msvc_toolchain("win_clang_" + target_name) {
environment = "environment." + toolchain_arch
prefix = rebase_path("$clang_base_path/bin", root_build_dir)
- cl = "${goma_prefix}$prefix/${clang_cl}"
+ cl = "${clang_prefix}$prefix/${clang_cl}"
if (toolchain_arch == "arm64") {
cl += " --target=arm64-windows"
}