blob: d583eb9c3283e8b8ef28f024644569bd4f74675c [file] [log] [blame]
Brian Silvermana6f7ce02018-07-07 15:04:00 -07001# Based on https://github.com/ldionne/hana/blob/master/.travis.yml
2
3language: cpp
4sudo: false
5notifications:
6 email: false
7
8# Use Linux unless specified otherwise
9os: linux
10dist: trusty
11
12cache:
13 directories:
14 - ${TRAVIS_BUILD_DIR}/deps
15
16matrix:
17 include:
18
19 ##########################################################################
20 # Clang on OSX
21 # Travis seems to take longer to start OSX instances,
22 # so leave this first for the overall build to be faster
23 ##########################################################################
24
25 # XCode 8.3
26 - env: COMPILER=clang++ BUILD_TYPE=Debug GSL_CXX_STANDARD=14
27 os: osx
28 osx_image: xcode8.3
29 compiler: clang
30
31 - env: COMPILER=clang++ BUILD_TYPE=Release GSL_CXX_STANDARD=14
32 os: osx
33 osx_image: xcode8.3
34 compiler: clang
35
36 # XCode 9.1
37 - env: COMPILER=clang++ BUILD_TYPE=Debug GSL_CXX_STANDARD=14
38 os: osx
39 osx_image: xcode9.1
40 compiler: clang
41
42 - env: COMPILER=clang++ BUILD_TYPE=Release GSL_CXX_STANDARD=14
43 os: osx
44 osx_image: xcode9.1
45 compiler: clang
46
47 ##########################################################################
48 # Clang on Linux
49 ##########################################################################
50
51 # Clang 3.6
52 - env: COMPILER=clang++-3.6 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
53 addons: &clang36
54 apt:
55 packages:
56 - clang-3.6
57 - g++-5
58 sources:
59 - ubuntu-toolchain-r-test
60 - llvm-toolchain-precise-3.6
61
62 - env: COMPILER=clang++-3.6 BUILD_TYPE=Release GSL_CXX_STANDARD=14
63 addons: *clang36
64
65 # Clang 3.7
66 - env: COMPILER=clang++-3.7 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
67 addons: &clang37
68 apt:
69 packages:
70 - clang-3.7
71 - g++-5
72 sources:
73 - ubuntu-toolchain-r-test
74 - llvm-toolchain-precise-3.7
75
76 - env: COMPILER=clang++-3.7 BUILD_TYPE=Release GSL_CXX_STANDARD=14
77 addons: *clang37
78
79 # Clang 3.8
80 - env: COMPILER=clang++-3.8 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
81 addons: &clang38
82 apt:
83 packages:
84 - clang-3.8
85 - g++-5
86 sources:
87 - ubuntu-toolchain-r-test
88 - llvm-toolchain-precise-3.8
89
90 - env: COMPILER=clang++-3.8 BUILD_TYPE=Release GSL_CXX_STANDARD=14
91 addons: *clang38
92
93 # Clang 3.9
94 - env: COMPILER=clang++-3.9 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
95 addons: &clang39
96 apt:
97 packages:
98 - clang-3.9
99 - g++-5
100 sources:
101 - ubuntu-toolchain-r-test
102 - llvm-toolchain-precise-3.9
103
104 - env: COMPILER=clang++-3.9 BUILD_TYPE=Release GSL_CXX_STANDARD=14
105 addons: *clang39
106
107 # Clang 4.0
108 - env: COMPILER=clang++-4.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
109 addons: &clang40
110 apt:
111 packages:
112 - clang-4.0
113 - g++-5
114 sources:
115 - ubuntu-toolchain-r-test
116 - llvm-toolchain-trusty-4.0
117
118 - env: COMPILER=clang++-4.0 BUILD_TYPE=Release GSL_CXX_STANDARD=14
119 addons: *clang40
120
121 # Clang 5.0
122 - env: COMPILER=clang++-5.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
123 addons: &clang50
124 apt:
125 packages:
126 - clang-5.0
127 - g++-7
128 sources:
129 - ubuntu-toolchain-r-test
130 - llvm-toolchain-trusty-5.0
131 - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main'
132 key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
133
134 - env: COMPILER=clang++-5.0 BUILD_TYPE=Release GSL_CXX_STANDARD=14
135 addons: *clang50
136
137 - env: COMPILER=clang++-5.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=17
138 addons: *clang50
139
140 - env: COMPILER=clang++-5.0 BUILD_TYPE=Release GSL_CXX_STANDARD=17
141 addons: *clang50
142
143 # Clang 6.0
144 - env: COMPILER=clang++-6.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
145 addons: &clang60
146 apt:
147 packages:
148 - clang-6.0
149 - g++-7
150 sources:
151 - ubuntu-toolchain-r-test
152 - llvm-toolchain-trusty-6.0
153 - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-6.0 main'
154 key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
155
156 - env: COMPILER=clang++-6.0 BUILD_TYPE=Release GSL_CXX_STANDARD=14
157 addons: *clang60
158
159 # Clang 6.0 c++17
160 - env: COMPILER=clang++-6.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=17
161 addons: *clang60
162
163 - env: COMPILER=clang++-6.0 BUILD_TYPE=Release GSL_CXX_STANDARD=17
164 addons: *clang60
165
166 ##########################################################################
167 # GCC on Linux
168 ##########################################################################
169
170 # GCC 5
171 - env: COMPILER=g++-5 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
172 addons: &gcc5
173 apt:
174 packages: g++-5
175 sources:
176 - ubuntu-toolchain-r-test
177
178 - env: COMPILER=g++-5 BUILD_TYPE=Release GSL_CXX_STANDARD=14
179 addons: *gcc5
180
181 # GCC 6
182 - env: COMPILER=g++-6 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
183 addons: &gcc6
184 apt:
185 packages: g++-6
186 sources:
187 - ubuntu-toolchain-r-test
188
189 - env: COMPILER=g++-6 BUILD_TYPE=Release GSL_CXX_STANDARD=14
190 addons: *gcc6
191
192 # GCC 7
193 - env: COMPILER=g++-7 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
194 addons: &gcc7
195 apt:
196 packages: g++-7
197 sources:
198 - ubuntu-toolchain-r-test
199
200 - env: COMPILER=g++-7 BUILD_TYPE=Release GSL_CXX_STANDARD=14
201 addons: *gcc7
202
203 # GCC 7 c++17
204 - env: COMPILER=g++-7 BUILD_TYPE=Debug GSL_CXX_STANDARD=17
205 addons: *gcc7
206
207 - env: COMPILER=g++-7 BUILD_TYPE=Release GSL_CXX_STANDARD=17
208 addons: *gcc7
209
210install:
211 # Set the ${CXX} variable properly
212 - export CXX=${COMPILER}
213 - ${CXX} --version
214
215 # Dependencies required by the CI are installed in ${TRAVIS_BUILD_DIR}/deps/
216 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
217 - mkdir -p "${DEPS_DIR}"
218 - cd "${DEPS_DIR}"
219
220 # Travis machines have 2 cores
221 - JOBS=2
222
223 ############################################################################
224 # Install a recent CMake (unless already installed on OS X)
225 ############################################################################
226 - CMAKE_VERSION=3.7.2
227 - |
228 if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
229 CMAKE_URL="https://cmake.org/files/v${CMAKE_VERSION%.[0-9]}/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz"
230 mkdir cmake && travis_retry wget --no-check-certificate -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
231 export PATH=${DEPS_DIR}/cmake/bin:${PATH}
232 else
233 brew install cmake || brew upgrade cmake
234 fi
235 - cmake --version
236
237 ############################################################################
238 # [linux]: Install the right version of libc++
239 ############################################################################
240 - |
241 LLVM_INSTALL=${DEPS_DIR}/llvm/install
242 # if in linux and compiler clang and llvm not installed
243 if [[ "${TRAVIS_OS_NAME}" == "linux" && "${CXX%%+*}" == "clang" && -n "$(ls -A ${LLVM_INSTALL})" ]]; then
244 if [[ "${CXX}" == "clang++-3.6" ]]; then LLVM_VERSION="3.6.2";
245 elif [[ "${CXX}" == "clang++-3.7" ]]; then LLVM_VERSION="3.7.1";
246 elif [[ "${CXX}" == "clang++-3.8" ]]; then LLVM_VERSION="3.8.1";
247 elif [[ "${CXX}" == "clang++-3.9" ]]; then LLVM_VERSION="3.9.1";
248 fi
249 LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz"
250 LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz"
251 LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz"
252 mkdir -p llvm llvm/build llvm/projects/libcxx llvm/projects/libcxxabi
253 travis_retry wget -O - ${LLVM_URL} | tar --strip-components=1 -xJ -C llvm
254 travis_retry wget -O - ${LIBCXX_URL} | tar --strip-components=1 -xJ -C llvm/projects/libcxx
255 travis_retry wget -O - ${LIBCXXABI_URL} | tar --strip-components=1 -xJ -C llvm/projects/libcxxabi
256 (cd llvm/build && cmake .. -DCMAKE_INSTALL_PREFIX=${LLVM_INSTALL})
257 (cd llvm/build/projects/libcxx && make install -j2)
258 (cd llvm/build/projects/libcxxabi && make install -j2)
259 export CXXFLAGS="-isystem ${LLVM_INSTALL}/include/c++/v1"
260 export LDFLAGS="-L ${LLVM_INSTALL}/lib -l c++ -l c++abi"
261 export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LLVM_INSTALL}/lib"
262 fi
263
264before_script:
265 # have CMake to generate build files
266 - cd "${TRAVIS_BUILD_DIR}"
267 - mkdir build && cd build
268 - cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DGSL_CXX_STANDARD=$GSL_CXX_STANDARD
269
270script:
271 # build and run tests
272 - cmake --build . -- -j${JOBS}
273 - ctest --output-on-failure -j${JOBS}