| # Copyright 2014 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/toolchain/goma.gni") |
| import("//build/toolchain/rbe.gni") |
| |
| # Defines the configuration of cc wrapper |
| # ccache: a c/c++ compiler cache which can greatly reduce recompilation times. |
| # icecc, distcc: it takes compile jobs from a build and distributes them among |
| # remote machines allowing a parallel build. |
| # |
| # TIPS |
| # |
| # 1) ccache |
| # Set clang_use_chrome_plugins=false if using ccache 3.1.9 or earlier, since |
| # these versions don't support -Xclang. (3.1.10 and later will silently |
| # ignore -Xclang, so it doesn't matter if you disable clang_use_chrome_plugins |
| # or not). |
| # |
| # Use ccache 3.2 or later to avoid clang unused argument warnings: |
| # https://bugzilla.samba.org/show_bug.cgi?id=8118 |
| # |
| # To avoid -Wparentheses-equality clang warnings, at some cost in terms of |
| # speed, you can do: |
| # export CCACHE_CPP2=yes |
| # |
| # 2) icecc |
| # Set clang_use_chrome_plugins=false because icecc cannot distribute custom |
| # clang libraries. |
| # |
| # To use icecc and ccache together, set cc_wrapper = "ccache" with |
| # export CCACHE_PREFIX=icecc |
| |
| declare_args() { |
| # Set to "ccache", "icecc" or "distcc". Probably doesn't work on windows. |
| cc_wrapper = "" |
| |
| if (is_starboard) { |
| enable_sccache = getenv("SCCACHE") == "1" |
| } |
| } |
| |
| if (is_starboard) { |
| declare_args() { |
| # Set to false to completely ignore the cc_wrapper. |
| enable_cc_wrapper = true |
| } |
| assert(enable_cc_wrapper || cc_wrapper == "", |
| "Do not set `cc_wrapper` if you set `enable_cc_wrapper` to false.") |
| } |
| |
| if (is_starboard && getenv("SCCACHE") == "") { |
| enable_sccache = host_os == "win" && cobalt_fastbuild |
| } |
| |
| if (is_starboard && enable_sccache) { |
| _set_sccache_gcs_bucket = getenv("SCCACHE_GCS_BUCKET") != "" |
| _set_sccache_gcs_key_path = getenv("SCCACHE_GCS_KEY_PATH") != "" |
| _set_sccache_gcs_oauth_url = getenv("SCCACHE_GCS_OAUTH_URL") != "" |
| _set_sccache_gcs_rw_mode = getenv("SCCACHE_GCS_RW_MODE") != "" |
| _set_sccache_dir = getenv("SCCACHE_DIR") != "" |
| assert(_set_sccache_dir || |
| (_set_sccache_gcs_bucket && |
| (_set_sccache_gcs_key_path || _set_sccache_gcs_oauth_url) && |
| _set_sccache_gcs_rw_mode), |
| "Set Sccache environment variables before use.") |
| } |
| |
| if (is_starboard && cc_wrapper == "" && enable_cc_wrapper) { |
| # TODO(https://crbug.com/gn/273): Use sccache locally as well. |
| if (enable_sccache) { |
| cc_wrapper = "sccache" |
| } else if (host_os != "win") { |
| cc_wrapper = "ccache" |
| } |
| print("Build Accelerator: " + cc_wrapper) |
| } |
| |
| assert(!use_goma || cc_wrapper == "", |
| "use_goma and cc_wrapper can not be used together.") |
| assert(!use_remoteexec || cc_wrapper == "", |
| "use_remoteexec and cc_wrapper can not be used together.") |