-
Notifications
You must be signed in to change notification settings - Fork 58
/
.travis.yml
158 lines (142 loc) · 5.58 KB
/
.travis.yml
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# Based on .travis.yml from https://github.com/philsquared/Catch
language: cpp
sudo: false
cache:
directories:
- ${TRAVIS_BUILD_DIR}/deps/cmake
- ${TRAVIS_BUILD_DIR}/deps/llvm-3.5.2/install
- ${TRAVIS_BUILD_DIR}/deps/llvm-3.6.2/install
- ${TRAVIS_BUILD_DIR}/deps/llvm-3.7.1/install
- ${TRAVIS_BUILD_DIR}/deps/llvm-3.8.1/install
- ${TRAVIS_BUILD_DIR}/deps/llvm-3.9.0/install
matrix:
include:
# 1/ Linux Clang Builds
- os: linux
env: CLANG_VERSION=3.6 BUILD_TYPE=Debug
addons: &clang36
apt:
packages:
- clang-3.6
- g++-5
sources: &sources
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- os: linux
env: CLANG_VERSION=3.6 BUILD_TYPE=Release
addons: *clang36
- os: linux
env: CLANG_VERSION=3.7 BUILD_TYPE=Debug
addons: &clang37
apt:
packages:
- clang-3.7
- g++-5
sources: &sources
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- os: linux
env: CLANG_VERSION=3.7 BUILD_TYPE=Release
addons: *clang37
- os: linux
env: CLANG_VERSION=3.8 BUILD_TYPE=Debug
addons: &clang38
apt:
packages:
- clang-3.8
- g++-5
sources: &sources
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
- os: linux
env: CLANG_VERSION=3.8 BUILD_TYPE=Release
addons: *clang38
# 2/ Linux GCC Builds
- os: linux
env: GCC_VERSION=5 BUILD_TYPE=Debug
addons: &gcc5
apt:
packages: g++-5
sources: *sources
- os: linux
env: GCC_VERSION=5 BUILD_TYPE=Release
addons: *gcc5
- os: linux
env: GCC_VERSION=6 BUILD_TYPE=Debug
addons: &gcc6
apt:
packages: g++-6
sources: *sources
- os: linux
env: GCC_VERSION=6 BUILD_TYPE=Release
addons: *gcc6
# 3/ OSX Clang Builds
- os: osx
env: BUILD_TYPE=Debug
osx_image: xcode7
compiler: clang
- os: osx
env: BUILD_TYPE=Release
osx_image: xcode7
compiler: clang
- os: osx
env: BUILD_TYPE=Debug
osx_image: xcode8
compiler: clang
- os: osx
env: BUILD_TYPE=Release
osx_image: xcode8
compiler: clang
install:
- if [[ -n "$CLANG_VERSION" ]]; then export CXX=clang++-$CLANG_VERSION CC=clang-$CLANG_VERSION; fi
- if [[ -n "$GCC_VERSION" ]]; then export CXX=g++-$GCC_VERSION CC=gcc-$GCC_VERSION; fi
- export JOBS=2
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
- mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
############################################################################
# Install a recent CMake (unless already installed on OS X)
############################################################################
- |
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
if [[ -z "$(ls -A ${DEPS_DIR}/cmake/bin)" ]]; then
CMAKE_URL="https://cmake.org/files/v3.6/cmake-3.6.2-Linux-x86_64.tar.gz"
mkdir -p cmake && travis_retry wget --no-check-certificate --quiet -O - "${CMAKE_URL}" | tar --strip-components=1 -xz -C cmake
fi
export PATH="${DEPS_DIR}/cmake/bin:${PATH}"
else
if ! brew ls --version cmake &>/dev/null; then brew install cmake; fi
fi
############################################################################
# [linux]: Install the right version of libc++
############################################################################
- |
if [[ -n "$CLANG_VERSION" && "${TRAVIS_OS_NAME}" == "linux" && "${STDLIB}" != "libstdc++" ]]; then
if [[ "$CLANG_VERSION" == "3.5" ]]; then LLVM_VERSION="3.5.2"; fi
if [[ "$CLANG_VERSION" == "3.6" ]]; then LLVM_VERSION="3.6.2"; fi
if [[ "$CLANG_VERSION" == "3.7" ]]; then LLVM_VERSION="3.7.1"; fi
if [[ "$CLANG_VERSION" == "3.8" ]]; then LLVM_VERSION="3.8.1"; fi
if [[ "$CLANG_VERSION" == "3.9" ]]; then LLVM_VERSION="3.9.0"; fi
LLVM_ROOT="${DEPS_DIR}/llvm-${LLVM_VERSION}"
LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz"
LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz"
LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz"
if [[ -z "$(ls -A ${LLVM_ROOT}/install/include)" ]]; then
mkdir -p "${LLVM_ROOT}" "${LLVM_ROOT}/build" "${LLVM_ROOT}/projects/libcxx" "${LLVM_ROOT}/projects/libcxxabi"
travis_retry wget --quiet -O - "${LLVM_URL}" | tar --strip-components=1 -xJ -C "${LLVM_ROOT}"
travis_retry wget --quiet -O - "${LIBCXX_URL}" | tar --strip-components=1 -xJ -C "${LLVM_ROOT}/projects/libcxx"
travis_retry wget --quiet -O - "${LIBCXXABI_URL}" | tar --strip-components=1 -xJ -C "${LLVM_ROOT}/projects/libcxxabi"
(cd "${LLVM_ROOT}/build" && cmake .. -DCMAKE_CXX_COMPILER="$CXX" -DCMAKE_C_COMPILER="$CC" -DCMAKE_INSTALL_PREFIX="${LLVM_ROOT}/install" -DCMAKE_BUILD_TYPE=$BUILD_TYPE)
(cd "${LLVM_ROOT}/build/projects/libcxx" && make install -j$JOBS)
(cd "${LLVM_ROOT}/build/projects/libcxxabi" && make install -j$JOBS)
fi
export CXXFLAGS="-I ${LLVM_ROOT}/install/include/c++/v1"
export LDFLAGS="-L ${LLVM_ROOT}/install/lib -lc++ -lc++abi"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LLVM_ROOT}/install/lib"
fi
- cd ${TRAVIS_BUILD_DIR}
before_script:
- cmake . -Bbuild -DCMAKE_CXX_COMPILER="$CXX" -DCMAKE_C_COMPILER="$CC" -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- cmake --build build -- -j$JOBS
script:
- cd build
- ctest --output-on-failure -j$JOBS