1language: cpp 2 3branches: 4 except: 5 - /dev-appveyor.*/ 6 7common_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-xenial-5.0 13 - llvm-toolchain-xenial-6.0 14 15matrix: 16 include: 17 18 # 1/ Linux Clang Builds 19 - os: linux 20 compiler: clang 21 addons: 22 apt: 23 sources: *all_sources 24 packages: ['clang-3.5'] 25 env: COMPILER='clang++-3.5' 26 27 - os: linux 28 compiler: clang 29 addons: 30 apt: 31 sources: *all_sources 32 packages: ['clang-3.6'] 33 env: COMPILER='clang++-3.6' 34 35 # Clang 3.7 is intentionally skipped as we cannot get it easily on 36 # TravisCI container 37 38 - os: linux 39 compiler: clang 40 addons: 41 apt: 42 sources: *all_sources 43 packages: ['lcov', 'clang-3.8'] 44 env: COMPILER='clang++-3.8' 45 46 - os: linux 47 compiler: clang 48 addons: 49 apt: 50 sources: *all_sources 51 packages: ['clang-3.9'] 52 env: COMPILER='clang++-3.9' 53 54 - os: linux 55 compiler: clang 56 addons: 57 apt: 58 sources: *all_sources 59 packages: ['clang-4.0'] 60 env: COMPILER='clang++-4.0' 61 62 - os: linux 63 dist: xenial 64 compiler: clang 65 addons: 66 apt: 67 sources: *all_sources 68 packages: ['clang-5.0'] 69 env: COMPILER='clang++-5.0' 70 71 - os: linux 72 dist: xenial 73 compiler: clang 74 addons: 75 apt: 76 sources: *all_sources 77 packages: ['clang-6.0'] 78 env: COMPILER='clang++-6.0' 79 80 # 2/ Linux GCC Builds 81 - os: linux 82 compiler: gcc 83 addons: 84 apt: 85 sources: *all_sources 86 packages: ['g++-4.8'] 87 env: COMPILER='g++-4.8' 88 89 - os: linux 90 compiler: gcc 91 addons: 92 apt: 93 sources: *all_sources 94 packages: ['g++-4.9'] 95 env: COMPILER='g++-4.9' 96 97 - os: linux 98 compiler: gcc 99 addons: 100 apt: 101 sources: *all_sources 102 packages: ['g++-5'] 103 env: COMPILER='g++-5' 104 105 - os: linux 106 compiler: gcc 107 addons: &gcc6 108 apt: 109 sources: *all_sources 110 packages: ['g++-6'] 111 env: COMPILER='g++-6' 112 113 - os: linux 114 compiler: gcc 115 addons: &gcc7 116 apt: 117 sources: *all_sources 118 packages: ['g++-7'] 119 env: COMPILER='g++-7' 120 121 - os: linux 122 compiler: gcc 123 addons: &gcc8 124 apt: 125 sources: *all_sources 126 packages: ['g++-8'] 127 env: COMPILER='g++-8' 128 129 # 3b/ Linux C++14 Clang builds 130 # Note that we need newer libstdc++ for C++14 support 131 - os: linux 132 compiler: clang 133 addons: 134 apt: 135 packages: ['clang-3.8', 'libstdc++-6-dev'] 136 sources: 137 - ubuntu-toolchain-r-test 138 - llvm-toolchain-trusty 139 env: COMPILER='clang++-3.8' CPP14=1 140 141 - os: linux 142 compiler: clang 143 addons: 144 apt: 145 sources: *all_sources 146 packages: ['clang-3.9', 'libstdc++-6-dev'] 147 env: COMPILER='clang++-3.9' CPP14=1 148 149 - os: linux 150 compiler: clang 151 addons: 152 apt: 153 sources: *all_sources 154 packages: ['clang-4.0', 'libstdc++-6-dev'] 155 env: COMPILER='clang++-4.0' CPP14=1 156 157 - os: linux 158 dist: xenial 159 compiler: clang 160 addons: 161 apt: 162 sources: *all_sources 163 packages: ['clang-5.0', 'libstdc++-6-dev'] 164 env: COMPILER='clang++-5.0' CPP14=1 165 166 - os: linux 167 dist: xenial 168 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 175 176 # 4a/ Linux C++14 GCC builds 177 - os: linux 178 compiler: gcc 179 addons: *gcc6 180 env: COMPILER='g++-6' CPP14=1 181 182 - os: linux 183 compiler: gcc 184 addons: *gcc7 185 env: COMPILER='g++-7' CPP14=1 186 187 - os: linux 188 compiler: gcc 189 addons: *gcc8 190 env: COMPILER='g++-8' CPP14=1 191 192 # 5/ OSX Clang Builds 193 - os: osx 194 osx_image: xcode7.3 195 compiler: clang 196 env: COMPILER='clang++' 197 198 - os: osx 199 osx_image: xcode8 200 compiler: clang 201 env: COMPILER='clang++' 202 203 - os: osx 204 osx_image: xcode9 205 compiler: clang 206 env: COMPILER='clang++' 207 208 - os: osx 209 osx_image: xcode9.1 210 compiler: clang 211 env: COMPILER='clang++' 212 213 - os: osx 214 osx_image: xcode9.1 215 compiler: clang 216 env: COMPILER='clang++' CPP14=1 217 218 # 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'] 225 env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1 226 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 235 env: COMPILER='clang++-3.8' EXAMPLES=1 COVERAGE=1 EXTRAS=1 236 237 - os: linux 238 compiler: gcc 239 addons: 240 apt: 241 sources: *all_sources 242 packages: ['valgrind', 'lcov', 'g++-7'] 243 env: COMPILER='g++-7' CPP14=1 VALGRIND=1 244 245 - os: osx 246 osx_image: xcode9.1 247 compiler: clang 248 env: COMPILER='clang++' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1 249 250 # 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 262 dist: xenial 263 compiler: clang 264 addons: 265 apt: 266 sources: *all_sources 267 packages: ['clang-6.0', 'libstdc++-8-dev'] 268 env: COMPILER='clang++-6.0' CPP17=1 269 270 - os: linux 271 dist: xenial 272 compiler: clang 273 addons: 274 apt: 275 sources: *all_sources 276 packages: ['clang-6.0', 'libstdc++-8-dev'] 277 env: COMPILER='clang++-6.0' CPP17=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1 278 279 # 8/ Conan 280 - language: python 281 python: 282 - "3.7" 283 dist: xenial 284 install: 285 - pip install conan-package-tools 286 env: 287 - CONAN_GCC_VERSIONS=8 288 - CONAN_DOCKER_IMAGE=conanio/gcc8 289 script: 290 - python .conan/build.py 291 292install: 293 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" 294 - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR} 295 - | 296 if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then 297 CMAKE_URL="http://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz" 298 mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake 299 export PATH=${DEPS_DIR}/cmake/bin:${PATH} 300 elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then 301 which cmake || brew install cmake; 302 fi 303 304before_script: 305 - export CXX=${COMPILER} 306 - cd ${TRAVIS_BUILD_DIR} 307 # Regenerate single header file, so it is tested in the examples... 308 - python scripts/generateSingleHeader.py 309 310 - | 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 319 # Use Debug builds for running Valgrind and building examples 320 - 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 321 # Don't bother with release build for coverage build 322 - cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF 323 324 325script: 326 - cd Build-Debug 327 - make -j 2 328 - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2 329 # Coverage collection does not work for OS X atm 330 - | 331 if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ "${COVERAGE}" == "1" ]]; then 332 make gcov 333 make lcov 334 bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports" 335 fi 336 - # Go to release build 337 - cd ../Build-Release 338 - make -j 2 339 - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2 340