blob: 345edfbb3add1a27422d3a91560a325496a5806c [file] [log] [blame]
Kostace441a92013-08-05 12:40:33 +02001language: cpp
2
Martin Hořeňovskýa3d3a632018-03-07 10:13:04 +01003branches:
4 except:
5 - /dev-appveyor.*/
6
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +01007common_sources: &all_sources
8 - ubuntu-toolchain-r-test
9 - llvm-toolchain-trusty
10 - llvm-toolchain-trusty-3.9
11 - llvm-toolchain-trusty-4.0
12 - llvm-toolchain-trusty-5.0
Christopher Di Bellad0287e32018-05-05 10:07:36 +010013 - llvm-toolchain-trusty-6.0
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010014
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020015matrix:
16 include:
17
18 # 1/ Linux Clang Builds
19 - os: linux
20 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010021 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020022 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010023 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010024 packages: ['clang-3.5']
Martin Hořeňovský14666862018-03-05 15:11:12 +010025 env: COMPILER='clang++-3.5'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020026
27 - os: linux
28 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010029 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020030 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010031 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010032 packages: ['clang-3.6']
Martin Hořeňovský14666862018-03-05 15:11:12 +010033 env: COMPILER='clang++-3.6'
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010034
Martin Hořeňovský14666862018-03-05 15:11:12 +010035 # Clang 3.7 is intentionally skipped as we cannot get it easily on
36 # TravisCI container
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020037
38 - os: linux
39 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010040 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020041 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010042 sources: *all_sources
Martin Hořeňovský14666862018-03-05 15:11:12 +010043 packages: ['lcov', 'clang-3.8']
44 env: COMPILER='clang++-3.8'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020045
46 - os: linux
47 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010048 addons:
49 apt:
50 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010051 packages: ['clang-3.9']
Martin Hořeňovský14666862018-03-05 15:11:12 +010052 env: COMPILER='clang++-3.9'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020053
54 - os: linux
55 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010056 addons:
57 apt:
58 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010059 packages: ['clang-4.0']
Martin Hořeňovský14666862018-03-05 15:11:12 +010060 env: COMPILER='clang++-4.0'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020061
62 - os: linux
63 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010064 addons:
65 apt:
66 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010067 packages: ['clang-5.0']
Martin Hořeňovský14666862018-03-05 15:11:12 +010068 env: COMPILER='clang++-5.0'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020069
Christopher Di Bellad0287e32018-05-05 10:07:36 +010070 - os: linux
71 compiler: clang
72 addons:
73 apt:
74 sources: *all_sources
75 packages: ['clang-6.0']
76 env: COMPILER='clang++-6.0'
77
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020078 # 2/ Linux GCC Builds
79 - os: linux
80 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010081 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020082 apt:
Martin Hořeňovský14666862018-03-05 15:11:12 +010083 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010084 packages: ['g++-4.8']
Martin Hořeňovský14666862018-03-05 15:11:12 +010085 env: COMPILER='g++-4.8'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020086
87 - os: linux
88 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010089 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020090 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010091 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010092 packages: ['g++-4.9']
Martin Hořeňovský14666862018-03-05 15:11:12 +010093 env: COMPILER='g++-4.9'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020094
95 - os: linux
96 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010097 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020098 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010099 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100100 packages: ['g++-5']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100101 env: COMPILER='g++-5'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200102
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100103 - os: linux
104 compiler: gcc
105 addons: &gcc6
106 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100107 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100108 packages: ['g++-6']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100109 env: COMPILER='g++-6'
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100110
111 - os: linux
112 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100113 addons: &gcc7
114 apt:
115 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100116 packages: ['g++-7']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100117 env: COMPILER='g++-7'
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100118
Christopher Di Bella8d5d4922018-05-05 09:39:55 +0100119 - os: linux
120 compiler: gcc
121 addons: &gcc8
122 apt:
123 sources: *all_sources
124 packages: ['g++-8']
125 env: COMPILER='g++-8'
126
Martin Hořeňovskýb2dd48f2017-11-05 12:46:04 +0100127 # 3b/ Linux C++14 Clang builds
Martin Hořeňovský14666862018-03-05 15:11:12 +0100128 # Note that we need newer libstdc++ for C++14 support
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100129 - os: linux
130 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100131 addons:
132 apt:
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100133 packages: ['clang-3.8', 'libstdc++-6-dev']
Martin Hořeňovskýb2dd48f2017-11-05 12:46:04 +0100134 sources:
135 - ubuntu-toolchain-r-test
136 - llvm-toolchain-trusty
Martin Hořeňovský14666862018-03-05 15:11:12 +0100137 env: COMPILER='clang++-3.8' CPP14=1
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100138
139 - os: linux
140 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100141 addons:
142 apt:
143 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100144 packages: ['clang-3.9', 'libstdc++-6-dev']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100145 env: COMPILER='clang++-3.9' CPP14=1
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100146
147 - os: linux
148 compiler: clang
149 addons:
150 apt:
151 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100152 packages: ['clang-4.0', 'libstdc++-6-dev']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100153 env: COMPILER='clang++-4.0' CPP14=1
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100154
155 - os: linux
156 compiler: clang
157 addons:
158 apt:
159 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100160 packages: ['clang-5.0', 'libstdc++-6-dev']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100161 env: COMPILER='clang++-5.0' CPP14=1
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100162
Christopher Di Bellad0287e32018-05-05 10:07:36 +0100163 - os: linux
164 compiler: clang
165 addons:
166 apt:
167 sources: *all_sources
168 packages: ['clang-6.0', 'libstdc++-6-dev']
169 env: COMPILER='clang++-6.0' CPP14=1
170
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100171
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200172 # 4a/ Linux C++14 GCC builds
173 - os: linux
174 compiler: gcc
Martin Hořeňovskýa49af462017-04-20 22:50:07 +0200175 addons: *gcc6
Martin Hořeňovský14666862018-03-05 15:11:12 +0100176 env: COMPILER='g++-6' CPP14=1
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100177
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200178 - os: linux
179 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100180 addons: *gcc7
Martin Hořeňovský14666862018-03-05 15:11:12 +0100181 env: COMPILER='g++-7' CPP14=1
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200182
Christopher Di Bella8d5d4922018-05-05 09:39:55 +0100183 - os: linux
184 compiler: gcc
185 addons: *gcc8
186 env: COMPILER='g++-8' CPP14=1
187
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200188 # 5/ OSX Clang Builds
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200189 - os: osx
Martin Hořeňovskýa600bfe2017-02-01 21:01:14 +0100190 osx_image: xcode7.3
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200191 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100192 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200193
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200194 - os: osx
Phil Nash1c9a6ca2016-09-27 11:20:33 +0100195 osx_image: xcode8
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200196 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100197 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200198
199 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100200 osx_image: xcode9
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200201 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100202 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200203
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200204 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100205 osx_image: xcode9.1
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200206 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100207 env: COMPILER='clang++'
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200208
209 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100210 osx_image: xcode9.1
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200211 compiler: clang
Martin Hořeňovský93db01c2018-03-05 15:09:25 +0100212 env: COMPILER='clang++' CPP14=1
Kostace441a92013-08-05 12:40:33 +0200213
Martin Hořeňovský14666862018-03-05 15:11:12 +0100214 # 6/ Special builds -- examples, coverage, valgrind, etc.
215 - os: linux
216 compiler: gcc
217 addons:
218 apt:
219 sources: *all_sources
220 packages: ['lcov', 'g++-7']
Martin Hořeňovskýf061dab2018-08-28 09:44:47 +0200221 env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
Martin Hořeňovský14666862018-03-05 15:11:12 +0100222
223 - os: linux
224 compiler: clang
225 addons:
226 apt:
227 packages: ['clang-3.8', 'lcov']
228 sources:
229 - ubuntu-toolchain-r-test
230 - llvm-toolchain-trusty
Martin Hořeňovskýf061dab2018-08-28 09:44:47 +0200231 env: COMPILER='clang++-3.8' EXAMPLES=1 COVERAGE=1 EXTRAS=1
Martin Hořeňovský14666862018-03-05 15:11:12 +0100232
233 - os: linux
234 compiler: gcc
235 addons:
236 apt:
237 sources: *all_sources
238 packages: ['valgrind', 'lcov', 'g++-7']
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200239 env: COMPILER='g++-7' CPP14=1 VALGRIND=1
240
Martin Hořeňovský14666862018-03-05 15:11:12 +0100241 - os: osx
242 osx_image: xcode9.1
243 compiler: clang
Martin Hořeňovskýf061dab2018-08-28 09:44:47 +0200244 env: COMPILER='clang++' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100245
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200246 # 7/ C++17 builds
247 - os: linux
248 compiler: gcc
249 addons: *gcc7
250 env: COMPILER='g++-7' CPP17=1
251
252 - os: linux
253 compiler: gcc
254 addons: *gcc7
255 env: COMPILER='g++-7' EXAMPLES=1 COVERAGE=1 EXTRAS=1 CPP17=1
256
257 - os: linux
258 compiler: clang
259 addons:
260 apt:
261 sources: *all_sources
melak47c638c572018-09-20 13:13:35 +0100262 packages: ['clang-6.0', 'libstdc++-8-dev']
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200263 env: COMPILER='clang++-6.0' CPP17=1
264
265 - os: linux
266 compiler: clang
267 addons:
268 apt:
269 sources: *all_sources
melak47c638c572018-09-20 13:13:35 +0100270 packages: ['clang-6.0', 'libstdc++-8-dev']
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200271 env: COMPILER='clang++-6.0' CPP17=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
272
Uilian Riesac0a83a2018-11-16 09:45:07 -0200273 # 8/ Conan
274 - language: python
275 python:
276 - "3.7"
277 dist: xenial
278 install:
Uilian Riese7fce902018-12-29 21:32:14 -0200279 - pip install conan==1.10.2 conan-package-tools
Uilian Riesac0a83a2018-11-16 09:45:07 -0200280 env:
281 - CONAN_GCC_VERSIONS=8
282 - CONAN_DOCKER_IMAGE=conanio/gcc8
283 script:
284 - python .conan/build.py
285
Kostace441a92013-08-05 12:40:33 +0200286install:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200287 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
288 - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
289 - |
290 if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200291 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 +0100292 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 +0200293 export PATH=${DEPS_DIR}/cmake/bin:${PATH}
294 elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
Martin Hořeňovský20211a32017-11-27 22:34:44 +0100295 which cmake || brew install cmake;
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200296 fi
297
298before_script:
299 - export CXX=${COMPILER}
300 - cd ${TRAVIS_BUILD_DIR}
Martin Hořeňovskýf36817e2017-11-19 15:04:51 +0100301 # Regenerate single header file, so it is tested in the examples...
302 - python scripts/generateSingleHeader.py
303
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100304 # Use Debug builds for running Valgrind and building examples
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200305 - 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 +0100306 # Don't bother with release build for coverage build
Martin Hořeňovský6f9cdd62019-01-25 22:50:19 +0100307 - cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DUSE_CPP14=${CPP14} -DUSE_CPP17=${CPP17}
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100308
Kostace441a92013-08-05 12:40:33 +0200309
310script:
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200311 - cd Build-Debug
312 - make -j 2
313 - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100314 # Coverage collection does not work for OS X atm
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200315 - |
Martin Hořeňovský14666862018-03-05 15:11:12 +0100316 if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ "${COVERAGE}" == "1" ]]; then
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100317 make gcov
318 make lcov
319 bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports"
320 fi
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200321 - # Go to release build
322 - cd ../Build-Release
323 - make -j 2
324 - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2