summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build_extra/toolchain/validate.gni22
-rwxr-xr-xtools/setup.py11
2 files changed, 19 insertions, 14 deletions
diff --git a/build_extra/toolchain/validate.gni b/build_extra/toolchain/validate.gni
index 79c013e8d..a1fe7189b 100644
--- a/build_extra/toolchain/validate.gni
+++ b/build_extra/toolchain/validate.gni
@@ -2,14 +2,18 @@
import("//build/toolchain/cc_wrapper.gni")
-# Verify that cc_wrapper is correctly set up on Windows.
-if (is_win && cc_wrapper != "" && custom_toolchain == "") {
- suggested_toolchain = "//build_extra/toolchain/win:win_clang_$target_cpu"
+# Verify that the cc_wrapper/toolchain combo correctly set up on Windows.
+if (is_win && cc_wrapper != "") {
+ cc_wrapper_toolchain = "//build_extra/toolchain/win:win_clang_$target_cpu"
+ toolchain_supports_cc_wrapper = cc_wrapper_toolchain == default_toolchain &&
+ cc_wrapper_toolchain == host_toolchain
- # Use print instead of assert with message for readability.
- print(
- "The 'cc_wrapper' option isn't supported by the default Windows toolchain.")
- print("To make it work, add the option:")
- print(" custom_toolchain=\"$suggested_toolchain\"")
- assert(custom_toolchain != "")
+ if (!toolchain_supports_cc_wrapper) {
+ # Using print instead of assert-with-message for readability of the output.
+ print("The 'cc_wrapper' option isn't supported by the default Windows" +
+ " toolchain. To make it work, add these gn arguments:")
+ print(" custom_toolchain=\"$cc_wrapper_toolchain\"")
+ print(" host_toolchain=\"$cc_wrapper_toolchain\"")
+ assert(toolchain_supports_cc_wrapper)
+ }
}
diff --git a/tools/setup.py b/tools/setup.py
index 9dff9eb20..737f80017 100755
--- a/tools/setup.py
+++ b/tools/setup.py
@@ -59,12 +59,13 @@ def get_gn_args():
# Check if ccache or sccache are in the path, and if so we set cc_wrapper.
cc_wrapper = find_executable("ccache") or find_executable("sccache")
if cc_wrapper:
- out += [r'cc_wrapper="%s"' % cc_wrapper]
- # Windows needs a custom toolchain for cc_wrapper to work.
+ out += ['cc_wrapper="%s"' % cc_wrapper]
+ # For cc_wrapper to work on Windows, we need to select our own toolchain
+ # by overriding 'custom_toolchain' and 'host_toolchain'.
+ # TODO: Is there a way to use it without the involvement of args.gn?
if os.name == "nt":
- out += [
- 'custom_toolchain="//build_extra/toolchain/win:win_clang_x64"'
- ]
+ tc = "//build_extra/toolchain/win:win_clang_x64"
+ out += ['custom_toolchain="%s"' % tc, 'host_toolchain="%s"' % tc]
print "DENO_BUILD_ARGS:", out