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"
     }