| # Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| # 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 && cc_wrapper == "") { |
| # TODO(https://crbug.com/gn/273): Use sccache locally as well. |
| if (host_os == "win" && cobalt_fastbuild) { |
| cc_wrapper = "sccache.exe" |
| } else if (host_os != "win") { |
| cc_wrapper = "ccache" |
| } |
| } |
| |
| assert(!use_goma || cc_wrapper == "", |
| "use_goma and cc_wrapper can not be used together.") |
| assert(!use_rbe || cc_wrapper == "", |
| "use_rbe and cc_wrapper can not be used together.") |