summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/toolchain/cc_wrapper.gni
blob: 6186070e3d045e10ab8378d162ec757aaa9cc721 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 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_remoteexec || cc_wrapper == "",
       "use_remoteexec and cc_wrapper can not be used together.")