blob: 4c6d7514f0a9f029d1f14bb5c7d61cd8949fc2a1 [file] [log] [blame]
# 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 = ""
}
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.")