blob: 1d38d8602c7ccc509ee8ce1cd997664247f46dd1 [file] [log] [blame]
Kostace441a92013-08-05 12:40:33 +02001language: cpp
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +02002sudo: false
Kostace441a92013-08-05 12:40:33 +02003
Martin Hořeňovskýa3d3a632018-03-07 10:13:04 +01004branches:
5 except:
6 - /dev-appveyor.*/
7
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +01008common_sources: &all_sources
9 - ubuntu-toolchain-r-test
10 - llvm-toolchain-trusty
11 - llvm-toolchain-trusty-3.9
12 - llvm-toolchain-trusty-4.0
13 - llvm-toolchain-trusty-5.0
Christopher Di Bellad0287e32018-05-05 10:07:36 +010014 - llvm-toolchain-trusty-6.0
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010015
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020016matrix:
17 include:
18
19 # 1/ Linux Clang Builds
20 - os: linux
21 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010022 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020023 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010024 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010025 packages: ['clang-3.5']
Martin Hořeňovský14666862018-03-05 15:11:12 +010026 env: COMPILER='clang++-3.5'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020027
28 - os: linux
29 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010030 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020031 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010032 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010033 packages: ['clang-3.6']
Martin Hořeňovský14666862018-03-05 15:11:12 +010034 env: COMPILER='clang++-3.6'
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010035
Martin Hořeňovský14666862018-03-05 15:11:12 +010036 # Clang 3.7 is intentionally skipped as we cannot get it easily on
37 # TravisCI container
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020038
39 - os: linux
40 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010041 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020042 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010043 sources: *all_sources
Martin Hořeňovský14666862018-03-05 15:11:12 +010044 packages: ['lcov', 'clang-3.8']
45 env: COMPILER='clang++-3.8'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020046
47 - os: linux
48 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010049 addons:
50 apt:
51 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010052 packages: ['clang-3.9']
Martin Hořeňovský14666862018-03-05 15:11:12 +010053 env: COMPILER='clang++-3.9'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020054
55 - os: linux
56 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010057 addons:
58 apt:
59 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010060 packages: ['clang-4.0']
Martin Hořeňovský14666862018-03-05 15:11:12 +010061 env: COMPILER='clang++-4.0'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020062
63 - os: linux
64 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010065 addons:
66 apt:
67 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010068 packages: ['clang-5.0']
Martin Hořeňovský14666862018-03-05 15:11:12 +010069 env: COMPILER='clang++-5.0'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020070
Christopher Di Bellad0287e32018-05-05 10:07:36 +010071 - os: linux
72 compiler: clang
73 addons:
74 apt:
75 sources: *all_sources
76 packages: ['clang-6.0']
77 env: COMPILER='clang++-6.0'
78
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020079 # 2/ Linux GCC Builds
80 - os: linux
81 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010082 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020083 apt:
Martin Hořeňovský14666862018-03-05 15:11:12 +010084 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010085 packages: ['g++-4.8']
Martin Hořeňovský14666862018-03-05 15:11:12 +010086 env: COMPILER='g++-4.8'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020087
88 - os: linux
89 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010090 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020091 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010092 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010093 packages: ['g++-4.9']
Martin Hořeňovský14666862018-03-05 15:11:12 +010094 env: COMPILER='g++-4.9'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020095
96 - os: linux
97 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010098 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020099 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100100 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100101 packages: ['g++-5']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100102 env: COMPILER='g++-5'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200103
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100104 - os: linux
105 compiler: gcc
106 addons: &gcc6
107 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100108 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100109 packages: ['g++-6']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100110 env: COMPILER='g++-6'
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100111
112 - os: linux
113 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100114 addons: &gcc7
115 apt:
116 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100117 packages: ['g++-7']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100118 env: COMPILER='g++-7'
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100119
Christopher Di Bella8d5d4922018-05-05 09:39:55 +0100120 - os: linux
121 compiler: gcc
122 addons: &gcc8
123 apt:
124 sources: *all_sources
125 packages: ['g++-8']
126 env: COMPILER='g++-8'
127
Martin Hořeňovskýb2dd48f2017-11-05 12:46:04 +0100128 # 3b/ Linux C++14 Clang builds
Martin Hořeňovský14666862018-03-05 15:11:12 +0100129 # Note that we need newer libstdc++ for C++14 support
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100130 - os: linux
131 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100132 addons:
133 apt:
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100134 packages: ['clang-3.8', 'libstdc++-6-dev']
Martin Hořeňovskýb2dd48f2017-11-05 12:46:04 +0100135 sources:
136 - ubuntu-toolchain-r-test
137 - llvm-toolchain-trusty
Martin Hořeňovský14666862018-03-05 15:11:12 +0100138 env: COMPILER='clang++-3.8' CPP14=1
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100139
140 - os: linux
141 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100142 addons:
143 apt:
144 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100145 packages: ['clang-3.9', 'libstdc++-6-dev']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100146 env: COMPILER='clang++-3.9' CPP14=1
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100147
148 - os: linux
149 compiler: clang
150 addons:
151 apt:
152 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100153 packages: ['clang-4.0', 'libstdc++-6-dev']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100154 env: COMPILER='clang++-4.0' CPP14=1
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100155
156 - os: linux
157 compiler: clang
158 addons:
159 apt:
160 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100161 packages: ['clang-5.0', 'libstdc++-6-dev']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100162 env: COMPILER='clang++-5.0' CPP14=1
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100163
Christopher Di Bellad0287e32018-05-05 10:07:36 +0100164 - os: linux
165 compiler: clang
166 addons:
167 apt:
168 sources: *all_sources
169 packages: ['clang-6.0', 'libstdc++-6-dev']
170 env: COMPILER='clang++-6.0' CPP14=1
171
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100172
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200173 # 4a/ Linux C++14 GCC builds
174 - os: linux
175 compiler: gcc
Martin Hořeňovskýa49af462017-04-20 22:50:07 +0200176 addons: *gcc6
Martin Hořeňovský14666862018-03-05 15:11:12 +0100177 env: COMPILER='g++-6' CPP14=1
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100178
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200179 - os: linux
180 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100181 addons: *gcc7
Martin Hořeňovský14666862018-03-05 15:11:12 +0100182 env: COMPILER='g++-7' CPP14=1
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200183
Christopher Di Bella8d5d4922018-05-05 09:39:55 +0100184 - os: linux
185 compiler: gcc
186 addons: *gcc8
187 env: COMPILER='g++-8' CPP14=1
188
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200189 # 5/ OSX Clang Builds
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200190 - os: osx
Martin Hořeňovskýa600bfe2017-02-01 21:01:14 +0100191 osx_image: xcode7.3
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200192 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100193 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200194
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200195 - os: osx
Phil Nash1c9a6ca2016-09-27 11:20:33 +0100196 osx_image: xcode8
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200197 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100198 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200199
200 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100201 osx_image: xcode9
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200202 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100203 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200204
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200205 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100206 osx_image: xcode9.1
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200207 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100208 env: COMPILER='clang++'
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200209
210 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100211 osx_image: xcode9.1
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200212 compiler: clang
Martin Hořeňovský93db01c2018-03-05 15:09:25 +0100213 env: COMPILER='clang++' CPP14=1
Kostace441a92013-08-05 12:40:33 +0200214
Martin Hořeňovský14666862018-03-05 15:11:12 +0100215 # 6/ Special builds -- examples, coverage, valgrind, etc.
216 - os: linux
217 compiler: gcc
218 addons:
219 apt:
220 sources: *all_sources
221 packages: ['lcov', 'g++-7']
Martin Hořeňovskýf061dab2018-08-28 09:44:47 +0200222 env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
Martin Hořeňovský14666862018-03-05 15:11:12 +0100223
224 - os: linux
225 compiler: clang
226 addons:
227 apt:
228 packages: ['clang-3.8', 'lcov']
229 sources:
230 - ubuntu-toolchain-r-test
231 - llvm-toolchain-trusty
Martin Hořeňovskýf061dab2018-08-28 09:44:47 +0200232 env: COMPILER='clang++-3.8' EXAMPLES=1 COVERAGE=1 EXTRAS=1
Martin Hořeňovský14666862018-03-05 15:11:12 +0100233
234 - os: linux
235 compiler: gcc
236 addons:
237 apt:
238 sources: *all_sources
239 packages: ['valgrind', 'lcov', 'g++-7']
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200240 env: COMPILER='g++-7' CPP14=1 VALGRIND=1
241
Martin Hořeňovský14666862018-03-05 15:11:12 +0100242 - os: osx
243 osx_image: xcode9.1
244 compiler: clang
Martin Hořeňovskýf061dab2018-08-28 09:44:47 +0200245 env: COMPILER='clang++' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100246
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200247 # 7/ C++17 builds
248 - os: linux
249 compiler: gcc
250 addons: *gcc7
251 env: COMPILER='g++-7' CPP17=1
252
253 - os: linux
254 compiler: gcc
255 addons: *gcc7
256 env: COMPILER='g++-7' EXAMPLES=1 COVERAGE=1 EXTRAS=1 CPP17=1
257
258 - os: linux
259 compiler: clang
260 addons:
261 apt:
262 sources: *all_sources
melak47c638c572018-09-20 13:13:35 +0100263 packages: ['clang-6.0', 'libstdc++-8-dev']
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200264 env: COMPILER='clang++-6.0' CPP17=1
265
266 - os: linux
267 compiler: clang
268 addons:
269 apt:
270 sources: *all_sources
melak47c638c572018-09-20 13:13:35 +0100271 packages: ['clang-6.0', 'libstdc++-8-dev']
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200272 env: COMPILER='clang++-6.0' CPP17=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
273
Kostace441a92013-08-05 12:40:33 +0200274install:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200275 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
276 - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
277 - |
278 if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200279 CMAKE_URL="http://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz"
Martin Hořeňovskýa600bfe2017-02-01 21:01:14 +0100280 mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200281 export PATH=${DEPS_DIR}/cmake/bin:${PATH}
282 elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
Martin Hořeňovský20211a32017-11-27 22:34:44 +0100283 which cmake || brew install cmake;
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200284 fi
285
286before_script:
287 - export CXX=${COMPILER}
288 - cd ${TRAVIS_BUILD_DIR}
Martin Hořeňovskýf36817e2017-11-19 15:04:51 +0100289 # Regenerate single header file, so it is tested in the examples...
290 - python scripts/generateSingleHeader.py
291
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100292 # Use Debug builds for running Valgrind and building examples
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200293 - cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DUSE_CPP14=${CPP14} -DUSE_CPP17=${CPP17} -DCATCH_USE_VALGRIND=${VALGRIND} -DCATCH_BUILD_EXAMPLES=${EXAMPLES} -DCATCH_ENABLE_COVERAGE=${COVERAGE} -DCATCH_BUILD_EXTRA_TESTS=${EXTRAS}
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100294 # Don't bother with release build for coverage build
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200295 - cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DUSE_CPP14=${CPP14}
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100296
Kostace441a92013-08-05 12:40:33 +0200297
298script:
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200299 - cd Build-Debug
300 - make -j 2
301 - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100302 # Coverage collection does not work for OS X atm
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200303 - |
Martin Hořeňovský14666862018-03-05 15:11:12 +0100304 if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ "${COVERAGE}" == "1" ]]; then
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100305 make gcov
306 make lcov
307 bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports"
308 fi
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200309 - # Go to release build
310 - cd ../Build-Release
311 - make -j 2
312 - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2