[build] use ccache

This commit is contained in:
Konstantin Käfer
2015-12-02 11:29:36 +01:00
parent e1390f4f6f
commit 8bfc5de1dc
2 changed files with 49 additions and 13 deletions

View File

@@ -30,64 +30,64 @@ matrix:
# OS X - Xcode 7 - Debug
- os: osx
osx_image: xcode7
compiler: ": xcode-debug"
compiler: clang
env: FLAVOR=osx BUILDTYPE=Debug
# OS X/Node.js 5 - Xcode 7
- os: osx
osx_image: xcode7
compiler: ": node5-xcode"
compiler: clang
env: FLAVOR=node NODE_VERSION=5
# OS X/Node.js 4 - Xcode 7
- os: osx
osx_image: xcode7
compiler: ": node4-xcode"
compiler: clang
env: FLAVOR=node NODE_VERSION=4
# OS X/Node.js 0.10 - Xcode 7
- os: osx
osx_image: xcode7
compiler: ": node0.10-xcode"
compiler: clang
env: FLAVOR=node NODE_VERSION=0.10
# Linux/Node.js 5 - Clang 3.5 - Release
- os: linux
compiler: ": node5-clang35-release"
env: FLAVOR=node BUILDTYPE=Release NODE_VERSION=5 _CXX=clang++-3.5 _CC=clang-3.5
env: FLAVOR=node BUILDTYPE=Release NODE_VERSION=5 _CXX=clang++-3.5 _CC=clang-3.5 CCACHE=1
addons: *clang35
# Linux/Node.js 4 - Clang 3.5 - Release
- os: linux
compiler: ": node4-clang35-release"
env: FLAVOR=node BUILDTYPE=Release NODE_VERSION=4 _CXX=clang++-3.5 _CC=clang-3.5
env: FLAVOR=node BUILDTYPE=Release NODE_VERSION=4 _CXX=clang++-3.5 _CC=clang-3.5 CCACHE=1
addons: *clang35
# Linux/Node.js 0.10 - Clang 3.5 - Release
- os: linux
compiler: ": node0.10-clang35-release"
env: FLAVOR=node BUILDTYPE=Release NODE_VERSION=0.10 _CXX=clang++-3.5 _CC=clang-3.5
env: FLAVOR=node BUILDTYPE=Release NODE_VERSION=0.10 _CXX=clang++-3.5 _CC=clang-3.5 CCACHE=1
addons: *clang35
# Linux - GCC 4.9 - Release
- os: linux
compiler: ": linux-gcc49-release"
env: FLAVOR=linux BUILDTYPE=Release _CXX=g++-4.9 _CC=gcc-4.9
env: FLAVOR=linux BUILDTYPE=Release _CXX=g++-4.9 _CC=gcc-4.9 CCACHE=1
addons: *gcc49
# Linux - Clang 3.5 - Debug
- os: linux
compiler: ": linux-clang35-debug"
env: FLAVOR=linux BUILDTYPE=Debug _CXX=clang++-3.5 _CC=clang-3.5
env: FLAVOR=linux BUILDTYPE=Debug _CXX=clang++-3.5 _CC=clang-3.5 CCACHE=1
addons: *clang35
# Linux - Clang 3.5 - Release
- os: linux
compiler: ": linux-clang35-release"
env: FLAVOR=linux BUILDTYPE=Release _CXX=clang++-3.5 _CC=clang-3.5
env: FLAVOR=linux BUILDTYPE=Release _CXX=clang++-3.5 _CC=clang-3.5 CCACHE=1
addons: *clang35
# clang-tidy - Clang 3.8 - Release
@@ -96,6 +96,13 @@ matrix:
env: FLAVOR=linux ACTION=tidy BUILDTYPE=Release _CXX=clang++-3.8 _CC=clang-3.8 AWS_ACCESS_KEY_ID=
addons: *clang38-tidy
cache:
directories:
- $HOME/.ccache
- $HOME/.cache/pip
- $HOME/build/mapbox/mapbox-gl-native/.binaries
- $HOME/build/mapbox/mapbox-gl-native/.scripts
env:
global:
- TERM: dumb
@@ -113,14 +120,15 @@ env:
- KIF_SCREENSHOTS="${TRAVIS_BUILD_DIR}/screenshots"
before_install:
- if [ ! -z "${_CXX}" ]; then export CXX="${_CXX}" ; fi
- if [ ! -z "${_CC}" ]; then export CC="${_CC}" ; fi
- ${CXX} --version
- source ./scripts/set_compiler.sh
- source ./scripts/travis_helper.sh
install:
- ./scripts/${FLAVOR}/install.sh
before_script:
- if command -v ccache >/dev/null 2>&1; then ccache --zero-stats ; fi
script:
- ./scripts/${FLAVOR}/${ACTION:-run}.sh
@@ -128,6 +136,7 @@ after_failure:
- "[ -f ./scripts/${FLAVOR}/after_failure.sh ] && ./scripts/${FLAVOR}/after_failure.sh"
after_script:
- if command -v ccache >/dev/null 2>&1; then ccache --show-stats ; fi
- "[ -f ./scripts/${FLAVOR}/after_script.sh ] && ./scripts/${FLAVOR}/after_script.sh"
notifications:

27
scripts/set_compiler.sh Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
if [ ! -z "${_CXX}" ]; then export CXX="${_CXX}" ; fi
if [ ! -z "${_CC}" ]; then export CC="${_CC}" ; fi
if [ "${CCACHE:-0}" -ge 1 ]; then
export CXX="ccache ${CXX}"
export CC="ccache ${CC}"
# ccache splits up the compile steps, so we end up with unused arguments in some steps.
# Clang also thinks that ccache isn't interactive, so we explicitly need to enable color.
if [ $(echo | ${CXX} -dM -E - | grep -c "#define __clang__ 1") -ge 1 ]; then
export CXX="${CXX} -Qunused-arguments -fcolor-diagnostics"
export CC="${CC} -Qunused-arguments -fcolor-diagnostics"
else
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60304
# GCC normally throws this error which is in GTest, but *only* when compilation and
# preprocessing aren't combined in one step. However, when using ccache with GCC, we are
# running them in separate steps, so this warning/error is shown.
export CXX="${CXX} -Wno-conversion-null"
export CC="${CC} -Wno-conversion-null"
fi
fi
echo "export CXX=\"${CXX}\""
echo "export CC=\"${CC}\""
${CXX} --version