blob: f3dbaabd3c892d098a1e7d9a7e80a9173b6ab784 [file] [log] [blame]
Tamas Kenez9b454b72015-09-23 17:43:36 +02001# Based on https://github.com/ldionne/hana/blob/master/.travis.yml
2
3language: cpp
4sudo: false
Tiagobec7fa72017-10-25 11:36:31 -07005notifications:
6 email: false
7
8# Use Linux unless specified otherwise
9os: linux
10dist: trusty
Tamas Kenez9b454b72015-09-23 17:43:36 +020011
Casey Carterf953b792016-09-27 22:02:49 -070012cache:
13 directories:
Tiagobec7fa72017-10-25 11:36:31 -070014 - ${TRAVIS_BUILD_DIR}/deps
Casey Carterf953b792016-09-27 22:02:49 -070015
Tamas Kenez9b454b72015-09-23 17:43:36 +020016matrix:
17 include:
Tiagobec7fa72017-10-25 11:36:31 -070018
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
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070026 - env: COMPILER=clang++ BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Casey Carterf953b792016-09-27 22:02:49 -070027 os: osx
Tiagobec7fa72017-10-25 11:36:31 -070028 osx_image: xcode8.3
Tamas Kenez9b454b72015-09-23 17:43:36 +020029 compiler: clang
Tiagobec7fa72017-10-25 11:36:31 -070030
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070031 - env: COMPILER=clang++ BUILD_TYPE=Release GSL_CXX_STANDARD=14
Casey Carterf953b792016-09-27 22:02:49 -070032 os: osx
Tiagobec7fa72017-10-25 11:36:31 -070033 osx_image: xcode8.3
Casey Carterf953b792016-09-27 22:02:49 -070034 compiler: clang
Tiagobec7fa72017-10-25 11:36:31 -070035
36 # XCode 9.1
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070037 - env: COMPILER=clang++ BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Tiagobec7fa72017-10-25 11:36:31 -070038 os: osx
39 osx_image: xcode9.1
40 compiler: clang
41
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070042 - env: COMPILER=clang++ BUILD_TYPE=Release GSL_CXX_STANDARD=14
Tiagobec7fa72017-10-25 11:36:31 -070043 os: osx
44 osx_image: xcode9.1
45 compiler: clang
46
47 ##########################################################################
48 # Clang on Linux
49 ##########################################################################
50
51 # Clang 3.6
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070052 - env: COMPILER=clang++-3.6 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Tamas Kenez9b454b72015-09-23 17:43:36 +020053 addons: &clang36
54 apt:
55 packages:
56 - clang-3.6
Anna Gringauzef972b2d2015-10-15 13:00:10 -070057 - g++-5
Tiagobec7fa72017-10-25 11:36:31 -070058 sources:
Tamas Kenez9b454b72015-09-23 17:43:36 +020059 - ubuntu-toolchain-r-test
60 - llvm-toolchain-precise-3.6
Tiagobec7fa72017-10-25 11:36:31 -070061
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070062 - env: COMPILER=clang++-3.6 BUILD_TYPE=Release GSL_CXX_STANDARD=14
Tamas Kenez9b454b72015-09-23 17:43:36 +020063 addons: *clang36
Tiagobec7fa72017-10-25 11:36:31 -070064
65 # Clang 3.7
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070066 - env: COMPILER=clang++-3.7 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Casey Carterf953b792016-09-27 22:02:49 -070067 addons: &clang37
68 apt:
69 packages:
70 - clang-3.7
71 - g++-5
Tiagobec7fa72017-10-25 11:36:31 -070072 sources:
Casey Carterf953b792016-09-27 22:02:49 -070073 - ubuntu-toolchain-r-test
74 - llvm-toolchain-precise-3.7
Tiagobec7fa72017-10-25 11:36:31 -070075
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070076 - env: COMPILER=clang++-3.7 BUILD_TYPE=Release GSL_CXX_STANDARD=14
Casey Carterf953b792016-09-27 22:02:49 -070077 addons: *clang37
Tiagobec7fa72017-10-25 11:36:31 -070078
79 # Clang 3.8
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070080 - env: COMPILER=clang++-3.8 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Casey Carterf953b792016-09-27 22:02:49 -070081 addons: &clang38
82 apt:
83 packages:
84 - clang-3.8
85 - g++-5
Tiagobec7fa72017-10-25 11:36:31 -070086 sources:
Casey Carterf953b792016-09-27 22:02:49 -070087 - ubuntu-toolchain-r-test
88 - llvm-toolchain-precise-3.8
Tiagobec7fa72017-10-25 11:36:31 -070089
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070090 - env: COMPILER=clang++-3.8 BUILD_TYPE=Release GSL_CXX_STANDARD=14
Casey Carterf953b792016-09-27 22:02:49 -070091 addons: *clang38
Tiagobec7fa72017-10-25 11:36:31 -070092
93 # Clang 3.9
Anna Gringauze21cb6bb2018-06-15 10:13:11 -070094 - env: COMPILER=clang++-3.9 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Neil MacIntoshb2ee4842017-07-13 13:53:56 -070095 addons: &clang39
96 apt:
97 packages:
98 - clang-3.9
99 - g++-5
Tiagobec7fa72017-10-25 11:36:31 -0700100 sources:
Neil MacIntoshb2ee4842017-07-13 13:53:56 -0700101 - ubuntu-toolchain-r-test
102 - llvm-toolchain-precise-3.9
Tiagobec7fa72017-10-25 11:36:31 -0700103
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700104 - env: COMPILER=clang++-3.9 BUILD_TYPE=Release GSL_CXX_STANDARD=14
Neil MacIntoshb2ee4842017-07-13 13:53:56 -0700105 addons: *clang39
Tiagobec7fa72017-10-25 11:36:31 -0700106
107 # Clang 4.0
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700108 - env: COMPILER=clang++-4.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Tiagobec7fa72017-10-25 11:36:31 -0700109 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
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700118 - env: COMPILER=clang++-4.0 BUILD_TYPE=Release GSL_CXX_STANDARD=14
Tiagobec7fa72017-10-25 11:36:31 -0700119 addons: *clang40
120
121 # Clang 5.0
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700122 - env: COMPILER=clang++-5.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Sergei Izmailovcee31252018-05-07 01:18:08 +0300123 addons: &clang50
Tiagobec7fa72017-10-25 11:36:31 -0700124 apt:
125 packages:
126 - clang-5.0
Anna Gringauze0cebbd72018-06-15 11:42:16 -0700127 - g++-7
Tiagobec7fa72017-10-25 11:36:31 -0700128 sources:
129 - ubuntu-toolchain-r-test
130 - llvm-toolchain-trusty-5.0
Anna Gringauzecb2d1af2018-06-07 13:36:56 -0700131 - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main'
Tiagobec7fa72017-10-25 11:36:31 -0700132 key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
133
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700134 - env: COMPILER=clang++-5.0 BUILD_TYPE=Release GSL_CXX_STANDARD=14
135 addons: *clang50
136
Anna Gringauze0cebbd72018-06-15 11:42:16 -0700137 - 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
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700143 # 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
Anna Gringauze0cebbd72018-06-15 11:42:16 -0700149 - g++-7
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700150 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
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700159 # Clang 6.0 c++17
Anna Gringauze0cebbd72018-06-15 11:42:16 -0700160 - env: COMPILER=clang++-6.0 BUILD_TYPE=Debug GSL_CXX_STANDARD=17
161 addons: *clang60
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700162
Anna Gringauze0cebbd72018-06-15 11:42:16 -0700163 - env: COMPILER=clang++-6.0 BUILD_TYPE=Release GSL_CXX_STANDARD=17
164 addons: *clang60
Tiagobec7fa72017-10-25 11:36:31 -0700165
Anna Gringauze7d78b742019-01-16 19:58:38 -0800166 # Clang 7.0
167 - env: COMPILER=clang++-7 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
168 addons: &clang70
169 apt:
170 packages:
171 - clang-7
172 - g++-7
173 sources:
174 - ubuntu-toolchain-r-test
175 - llvm-toolchain-trusty-7
176
177
178 - env: COMPILER=clang++-7 BUILD_TYPE=Release GSL_CXX_STANDARD=14
179 addons: *clang70
180
181 # Clang 7.0 c++17
182 - env: COMPILER=clang++-7 BUILD_TYPE=Debug GSL_CXX_STANDARD=17
183 addons: *clang70
184
185 - env: COMPILER=clang++-7 BUILD_TYPE=Release GSL_CXX_STANDARD=17
186 addons: *clang70
187
Tiagobec7fa72017-10-25 11:36:31 -0700188 ##########################################################################
189 # GCC on Linux
190 ##########################################################################
191
192 # GCC 5
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700193 - env: COMPILER=g++-5 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Tamas Kenez9b454b72015-09-23 17:43:36 +0200194 addons: &gcc5
195 apt:
196 packages: g++-5
Tiagobec7fa72017-10-25 11:36:31 -0700197 sources:
198 - ubuntu-toolchain-r-test
199
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700200 - env: COMPILER=g++-5 BUILD_TYPE=Release GSL_CXX_STANDARD=14
Tamas Kenez9b454b72015-09-23 17:43:36 +0200201 addons: *gcc5
Tiagobec7fa72017-10-25 11:36:31 -0700202
203 # GCC 6
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700204 - env: COMPILER=g++-6 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
Casey Carterf953b792016-09-27 22:02:49 -0700205 addons: &gcc6
206 apt:
207 packages: g++-6
Tiagobec7fa72017-10-25 11:36:31 -0700208 sources:
209 - ubuntu-toolchain-r-test
210
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700211 - env: COMPILER=g++-6 BUILD_TYPE=Release GSL_CXX_STANDARD=14
Casey Carterf953b792016-09-27 22:02:49 -0700212 addons: *gcc6
Tamas Kenez9b454b72015-09-23 17:43:36 +0200213
meneteffdaf0f2018-06-08 20:41:06 +0200214 # GCC 7
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700215 - env: COMPILER=g++-7 BUILD_TYPE=Debug GSL_CXX_STANDARD=14
meneteffdaf0f2018-06-08 20:41:06 +0200216 addons: &gcc7
217 apt:
218 packages: g++-7
219 sources:
220 - ubuntu-toolchain-r-test
Tiagobec7fa72017-10-25 11:36:31 -0700221
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700222 - env: COMPILER=g++-7 BUILD_TYPE=Release GSL_CXX_STANDARD=14
meneteffdaf0f2018-06-08 20:41:06 +0200223 addons: *gcc7
Tiagobec7fa72017-10-25 11:36:31 -0700224
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700225 # GCC 7 c++17
226 - env: COMPILER=g++-7 BUILD_TYPE=Debug GSL_CXX_STANDARD=17
227 addons: *gcc7
228
229 - env: COMPILER=g++-7 BUILD_TYPE=Release GSL_CXX_STANDARD=17
230 addons: *gcc7
Tiagobec7fa72017-10-25 11:36:31 -0700231
Tamas Kenez9b454b72015-09-23 17:43:36 +0200232install:
Tiagobec7fa72017-10-25 11:36:31 -0700233 # Set the ${CXX} variable properly
234 - export CXX=${COMPILER}
235 - ${CXX} --version
236
237 # Dependencies required by the CI are installed in ${TRAVIS_BUILD_DIR}/deps/
Tamas Kenez9b454b72015-09-23 17:43:36 +0200238 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
Tiagobec7fa72017-10-25 11:36:31 -0700239 - mkdir -p "${DEPS_DIR}"
240 - cd "${DEPS_DIR}"
241
242 # Travis machines have 2 cores
243 - JOBS=2
Casey Carterf953b792016-09-27 22:02:49 -0700244
245 ############################################################################
246 # Install a recent CMake (unless already installed on OS X)
247 ############################################################################
Tiagobec7fa72017-10-25 11:36:31 -0700248 - CMAKE_VERSION=3.7.2
Tamas Kenez9b454b72015-09-23 17:43:36 +0200249 - |
Casey Carterf953b792016-09-27 22:02:49 -0700250 if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
Tiagobec7fa72017-10-25 11:36:31 -0700251 CMAKE_URL="https://cmake.org/files/v${CMAKE_VERSION%.[0-9]}/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz"
252 mkdir cmake && travis_retry wget --no-check-certificate -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
253 export PATH=${DEPS_DIR}/cmake/bin:${PATH}
Casey Carterf953b792016-09-27 22:02:49 -0700254 else
Tiagobec7fa72017-10-25 11:36:31 -0700255 brew install cmake || brew upgrade cmake
Casey Carterf953b792016-09-27 22:02:49 -0700256 fi
Tiagobec7fa72017-10-25 11:36:31 -0700257 - cmake --version
Casey Carterf953b792016-09-27 22:02:49 -0700258
259 ############################################################################
260 # [linux]: Install the right version of libc++
261 ############################################################################
262 - |
Tiagobec7fa72017-10-25 11:36:31 -0700263 LLVM_INSTALL=${DEPS_DIR}/llvm/install
264 # if in linux and compiler clang and llvm not installed
265 if [[ "${TRAVIS_OS_NAME}" == "linux" && "${CXX%%+*}" == "clang" && -n "$(ls -A ${LLVM_INSTALL})" ]]; then
266 if [[ "${CXX}" == "clang++-3.6" ]]; then LLVM_VERSION="3.6.2";
267 elif [[ "${CXX}" == "clang++-3.7" ]]; then LLVM_VERSION="3.7.1";
268 elif [[ "${CXX}" == "clang++-3.8" ]]; then LLVM_VERSION="3.8.1";
269 elif [[ "${CXX}" == "clang++-3.9" ]]; then LLVM_VERSION="3.9.1";
270 fi
Tamas Kenez9b454b72015-09-23 17:43:36 +0200271 LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz"
272 LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz"
273 LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz"
Tiagobec7fa72017-10-25 11:36:31 -0700274 mkdir -p llvm llvm/build llvm/projects/libcxx llvm/projects/libcxxabi
275 travis_retry wget -O - ${LLVM_URL} | tar --strip-components=1 -xJ -C llvm
276 travis_retry wget -O - ${LIBCXX_URL} | tar --strip-components=1 -xJ -C llvm/projects/libcxx
277 travis_retry wget -O - ${LIBCXXABI_URL} | tar --strip-components=1 -xJ -C llvm/projects/libcxxabi
278 (cd llvm/build && cmake .. -DCMAKE_INSTALL_PREFIX=${LLVM_INSTALL})
279 (cd llvm/build/projects/libcxx && make install -j2)
280 (cd llvm/build/projects/libcxxabi && make install -j2)
281 export CXXFLAGS="-isystem ${LLVM_INSTALL}/include/c++/v1"
282 export LDFLAGS="-L ${LLVM_INSTALL}/lib -l c++ -l c++abi"
283 export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LLVM_INSTALL}/lib"
Tamas Kenez9b454b72015-09-23 17:43:36 +0200284 fi
285
286before_script:
Tiagobec7fa72017-10-25 11:36:31 -0700287 # have CMake to generate build files
Casey Carterf953b792016-09-27 22:02:49 -0700288 - cd "${TRAVIS_BUILD_DIR}"
Tiagobec7fa72017-10-25 11:36:31 -0700289 - mkdir build && cd build
Anna Gringauze21cb6bb2018-06-15 10:13:11 -0700290 - cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DGSL_CXX_STANDARD=$GSL_CXX_STANDARD
Tiagobec7fa72017-10-25 11:36:31 -0700291
Tamas Kenez9b454b72015-09-23 17:43:36 +0200292script:
Tiagobec7fa72017-10-25 11:36:31 -0700293 # build and run tests
294 - cmake --build . -- -j${JOBS}
295 - ctest --output-on-failure -j${JOBS}