blob: 0fe2abb198488640c7b2b83c1de67caf03bad4a5 [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
Martin Hořeňovskýc6bf56b2019-09-06 11:14:48 +020012 - llvm-toolchain-xenial-5.0
13 - llvm-toolchain-xenial-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
Martin Hořeňovskýc6bf56b2019-09-06 11:14:48 +020063 dist: xenial
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020064 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
Martin Hořeňovskýc6bf56b2019-09-06 11:14:48 +020072 dist: xenial
Christopher Di Bellad0287e32018-05-05 10:07:36 +010073 compiler: clang
74 addons:
75 apt:
76 sources: *all_sources
77 packages: ['clang-6.0']
78 env: COMPILER='clang++-6.0'
79
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020080 # 2/ Linux GCC Builds
81 - os: linux
82 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010083 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020084 apt:
Martin Hořeňovský14666862018-03-05 15:11:12 +010085 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010086 packages: ['g++-4.8']
Martin Hořeňovský14666862018-03-05 15:11:12 +010087 env: COMPILER='g++-4.8'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020088
89 - os: linux
90 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010091 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020092 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010093 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +010094 packages: ['g++-4.9']
Martin Hořeňovský14666862018-03-05 15:11:12 +010095 env: COMPILER='g++-4.9'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020096
97 - os: linux
98 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010099 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200100 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100101 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100102 packages: ['g++-5']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100103 env: COMPILER='g++-5'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200104
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100105 - os: linux
106 compiler: gcc
107 addons: &gcc6
108 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100109 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100110 packages: ['g++-6']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100111 env: COMPILER='g++-6'
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100112
113 - os: linux
114 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100115 addons: &gcc7
116 apt:
117 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100118 packages: ['g++-7']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100119 env: COMPILER='g++-7'
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100120
Christopher Di Bella8d5d4922018-05-05 09:39:55 +0100121 - os: linux
122 compiler: gcc
123 addons: &gcc8
124 apt:
125 sources: *all_sources
126 packages: ['g++-8']
127 env: COMPILER='g++-8'
128
Martin Hořeňovskýb2dd48f2017-11-05 12:46:04 +0100129 # 3b/ Linux C++14 Clang builds
Martin Hořeňovský14666862018-03-05 15:11:12 +0100130 # Note that we need newer libstdc++ for C++14 support
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100131 - os: linux
132 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100133 addons:
134 apt:
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100135 packages: ['clang-3.8', 'libstdc++-6-dev']
Martin Hořeňovskýb2dd48f2017-11-05 12:46:04 +0100136 sources:
137 - ubuntu-toolchain-r-test
138 - llvm-toolchain-trusty
Martin Hořeňovský14666862018-03-05 15:11:12 +0100139 env: COMPILER='clang++-3.8' CPP14=1
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100140
141 - os: linux
142 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100143 addons:
144 apt:
145 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100146 packages: ['clang-3.9', 'libstdc++-6-dev']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100147 env: COMPILER='clang++-3.9' CPP14=1
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100148
149 - os: linux
150 compiler: clang
151 addons:
152 apt:
153 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100154 packages: ['clang-4.0', 'libstdc++-6-dev']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100155 env: COMPILER='clang++-4.0' CPP14=1
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100156
157 - os: linux
Martin Hořeňovskýc6bf56b2019-09-06 11:14:48 +0200158 dist: xenial
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100159 compiler: clang
160 addons:
161 apt:
162 sources: *all_sources
Martin Hořeňovský1d1f8dc2018-03-06 15:38:22 +0100163 packages: ['clang-5.0', 'libstdc++-6-dev']
Martin Hořeňovský14666862018-03-05 15:11:12 +0100164 env: COMPILER='clang++-5.0' CPP14=1
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100165
Christopher Di Bellad0287e32018-05-05 10:07:36 +0100166 - os: linux
Martin Hořeňovskýc6bf56b2019-09-06 11:14:48 +0200167 dist: xenial
Christopher Di Bellad0287e32018-05-05 10:07:36 +0100168 compiler: clang
169 addons:
170 apt:
171 sources: *all_sources
172 packages: ['clang-6.0', 'libstdc++-6-dev']
173 env: COMPILER='clang++-6.0' CPP14=1
174
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100175
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200176 # 4a/ Linux C++14 GCC builds
177 - os: linux
178 compiler: gcc
Martin Hořeňovskýa49af462017-04-20 22:50:07 +0200179 addons: *gcc6
Martin Hořeňovský14666862018-03-05 15:11:12 +0100180 env: COMPILER='g++-6' CPP14=1
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100181
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200182 - os: linux
183 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100184 addons: *gcc7
Martin Hořeňovský14666862018-03-05 15:11:12 +0100185 env: COMPILER='g++-7' CPP14=1
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200186
Christopher Di Bella8d5d4922018-05-05 09:39:55 +0100187 - os: linux
188 compiler: gcc
189 addons: *gcc8
190 env: COMPILER='g++-8' CPP14=1
191
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200192 # 5/ OSX Clang Builds
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200193 - os: osx
Martin Hořeňovskýa600bfe2017-02-01 21:01:14 +0100194 osx_image: xcode7.3
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200195 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100196 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200197
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200198 - os: osx
Phil Nash1c9a6ca2016-09-27 11:20:33 +0100199 osx_image: xcode8
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200200 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100201 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200202
203 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100204 osx_image: xcode9
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200205 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100206 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200207
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200208 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100209 osx_image: xcode9.1
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200210 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100211 env: COMPILER='clang++'
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200212
213 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100214 osx_image: xcode9.1
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200215 compiler: clang
Martin Hořeňovský93db01c2018-03-05 15:09:25 +0100216 env: COMPILER='clang++' CPP14=1
Kostace441a92013-08-05 12:40:33 +0200217
Martin Hořeňovský14666862018-03-05 15:11:12 +0100218 # 6/ Special builds -- examples, coverage, valgrind, etc.
219 - os: linux
220 compiler: gcc
221 addons:
222 apt:
223 sources: *all_sources
224 packages: ['lcov', 'g++-7']
Martin Hořeňovskýf061dab2018-08-28 09:44:47 +0200225 env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
Martin Hořeňovský14666862018-03-05 15:11:12 +0100226
227 - os: linux
228 compiler: clang
229 addons:
230 apt:
231 packages: ['clang-3.8', 'lcov']
232 sources:
233 - ubuntu-toolchain-r-test
234 - llvm-toolchain-trusty
Martin Hořeňovskýf061dab2018-08-28 09:44:47 +0200235 env: COMPILER='clang++-3.8' EXAMPLES=1 COVERAGE=1 EXTRAS=1
Martin Hořeňovský14666862018-03-05 15:11:12 +0100236
237 - os: linux
238 compiler: gcc
239 addons:
240 apt:
241 sources: *all_sources
242 packages: ['valgrind', 'lcov', 'g++-7']
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200243 env: COMPILER='g++-7' CPP14=1 VALGRIND=1
244
Martin Hořeňovský14666862018-03-05 15:11:12 +0100245 - os: osx
246 osx_image: xcode9.1
247 compiler: clang
Martin Hořeňovskýf061dab2018-08-28 09:44:47 +0200248 env: COMPILER='clang++' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100249
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200250 # 7/ C++17 builds
251 - os: linux
252 compiler: gcc
253 addons: *gcc7
254 env: COMPILER='g++-7' CPP17=1
255
256 - os: linux
257 compiler: gcc
258 addons: *gcc7
259 env: COMPILER='g++-7' EXAMPLES=1 COVERAGE=1 EXTRAS=1 CPP17=1
260
261 - os: linux
Martin Hořeňovskýc6bf56b2019-09-06 11:14:48 +0200262 dist: xenial
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200263 compiler: clang
264 addons:
265 apt:
266 sources: *all_sources
melak47c638c572018-09-20 13:13:35 +0100267 packages: ['clang-6.0', 'libstdc++-8-dev']
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200268 env: COMPILER='clang++-6.0' CPP17=1
269
270 - os: linux
Martin Hořeňovskýc6bf56b2019-09-06 11:14:48 +0200271 dist: xenial
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200272 compiler: clang
273 addons:
274 apt:
275 sources: *all_sources
melak47c638c572018-09-20 13:13:35 +0100276 packages: ['clang-6.0', 'libstdc++-8-dev']
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200277 env: COMPILER='clang++-6.0' CPP17=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
278
Uilian Riesac0a83a2018-11-16 09:45:07 -0200279 # 8/ Conan
280 - language: python
281 python:
282 - "3.7"
283 dist: xenial
284 install:
Martin Hořeňovský815f9952019-10-02 23:17:46 +0200285 - pip install conan-package-tools
Uilian Riesac0a83a2018-11-16 09:45:07 -0200286 env:
287 - CONAN_GCC_VERSIONS=8
288 - CONAN_DOCKER_IMAGE=conanio/gcc8
289 script:
290 - python .conan/build.py
291
Kostace441a92013-08-05 12:40:33 +0200292install:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200293 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
294 - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
295 - |
296 if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
Martin Hořeňovský1eb42ee2018-09-09 22:08:26 +0200297 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 +0100298 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 +0200299 export PATH=${DEPS_DIR}/cmake/bin:${PATH}
300 elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
Martin Hořeňovský20211a32017-11-27 22:34:44 +0100301 which cmake || brew install cmake;
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200302 fi
303
304before_script:
305 - export CXX=${COMPILER}
306 - cd ${TRAVIS_BUILD_DIR}
Martin Hořeňovskýf36817e2017-11-19 15:04:51 +0100307 # Regenerate single header file, so it is tested in the examples...
308 - python scripts/generateSingleHeader.py
309
Jayesh Badwaikb87caaf2019-05-05 00:23:53 +0200310 - |
311 if [[ ${CPP17} -eq 1 ]]; then
312 export CPP_STANDARD=17
313 elif [[ ${CPP14} -eq 1 ]]; then
314 export CPP_STANDARD=14
315 else
316 export CPP_STANDARD=11
317 fi
318
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100319 # Use Debug builds for running Valgrind and building examples
Jayesh Badwaikb87caaf2019-05-05 00:23:53 +0200320 - cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DCATCH_USE_VALGRIND=${VALGRIND} -DCATCH_BUILD_EXAMPLES=${EXAMPLES} -DCATCH_ENABLE_COVERAGE=${COVERAGE} -DCATCH_BUILD_EXTRA_TESTS=${EXTRAS} -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100321 # Don't bother with release build for coverage build
Jayesh Badwaikb87caaf2019-05-05 00:23:53 +0200322 - cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100323
Kostace441a92013-08-05 12:40:33 +0200324
325script:
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200326 - cd Build-Debug
327 - make -j 2
328 - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100329 # Coverage collection does not work for OS X atm
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200330 - |
Martin Hořeňovský14666862018-03-05 15:11:12 +0100331 if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ "${COVERAGE}" == "1" ]]; then
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100332 make gcov
333 make lcov
334 bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports"
335 fi
Martin Hořeňovskýea1f3262018-04-01 14:36:55 +0200336 - # Go to release build
337 - cd ../Build-Release
338 - make -j 2
339 - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2