123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- language: cpp
- branches:
- except:
- - /dev-appveyor.*/
- common_sources: &all_sources
- - ubuntu-toolchain-r-test
- - llvm-toolchain-trusty
- - llvm-toolchain-trusty-3.9
- - llvm-toolchain-trusty-4.0
- - llvm-toolchain-xenial-5.0
- - llvm-toolchain-xenial-6.0
- matrix:
- include:
- # 1/ Linux Clang Builds
- - os: linux
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-3.5']
- env: COMPILER='clang++-3.5'
- - os: linux
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-3.6']
- env: COMPILER='clang++-3.6'
- # Clang 3.7 is intentionally skipped as we cannot get it easily on
- # TravisCI container
- - os: linux
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['lcov', 'clang-3.8']
- env: COMPILER='clang++-3.8'
- - os: linux
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-3.9']
- env: COMPILER='clang++-3.9'
- - os: linux
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-4.0']
- env: COMPILER='clang++-4.0'
- - os: linux
- dist: xenial
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-5.0']
- env: COMPILER='clang++-5.0'
- - os: linux
- dist: xenial
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-6.0']
- env: COMPILER='clang++-6.0'
- # 2/ Linux GCC Builds
- - os: linux
- compiler: gcc
- addons:
- apt:
- sources: *all_sources
- packages: ['g++-4.8']
- env: COMPILER='g++-4.8'
- - os: linux
- compiler: gcc
- addons:
- apt:
- sources: *all_sources
- packages: ['g++-4.9']
- env: COMPILER='g++-4.9'
- - os: linux
- compiler: gcc
- addons:
- apt:
- sources: *all_sources
- packages: ['g++-5']
- env: COMPILER='g++-5'
- - os: linux
- compiler: gcc
- addons: &gcc6
- apt:
- sources: *all_sources
- packages: ['g++-6']
- env: COMPILER='g++-6'
- - os: linux
- compiler: gcc
- addons: &gcc7
- apt:
- sources: *all_sources
- packages: ['g++-7']
- env: COMPILER='g++-7'
- - os: linux
- compiler: gcc
- addons: &gcc8
- apt:
- sources: *all_sources
- packages: ['g++-8']
- env: COMPILER='g++-8'
- # 3b/ Linux C++14 Clang builds
- # Note that we need newer libstdc++ for C++14 support
- - os: linux
- compiler: clang
- addons:
- apt:
- packages: ['clang-3.8', 'libstdc++-6-dev']
- sources:
- - ubuntu-toolchain-r-test
- - llvm-toolchain-trusty
- env: COMPILER='clang++-3.8' CPP14=1
- - os: linux
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-3.9', 'libstdc++-6-dev']
- env: COMPILER='clang++-3.9' CPP14=1
- - os: linux
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-4.0', 'libstdc++-6-dev']
- env: COMPILER='clang++-4.0' CPP14=1
- - os: linux
- dist: xenial
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-5.0', 'libstdc++-6-dev']
- env: COMPILER='clang++-5.0' CPP14=1
- - os: linux
- dist: xenial
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-6.0', 'libstdc++-6-dev']
- env: COMPILER='clang++-6.0' CPP14=1
- # 4a/ Linux C++14 GCC builds
- - os: linux
- compiler: gcc
- addons: *gcc6
- env: COMPILER='g++-6' CPP14=1
- - os: linux
- compiler: gcc
- addons: *gcc7
- env: COMPILER='g++-7' CPP14=1
- - os: linux
- compiler: gcc
- addons: *gcc8
- env: COMPILER='g++-8' CPP14=1
- # 5/ OSX Clang Builds
- - os: osx
- osx_image: xcode7.3
- compiler: clang
- env: COMPILER='clang++'
- - os: osx
- osx_image: xcode8
- compiler: clang
- env: COMPILER='clang++'
- - os: osx
- osx_image: xcode9
- compiler: clang
- env: COMPILER='clang++'
- - os: osx
- osx_image: xcode9.1
- compiler: clang
- env: COMPILER='clang++'
- - os: osx
- osx_image: xcode9.1
- compiler: clang
- env: COMPILER='clang++' CPP14=1
- # 6/ Special builds -- examples, coverage, valgrind, etc.
- - os: linux
- compiler: gcc
- addons:
- apt:
- sources: *all_sources
- packages: ['lcov', 'g++-7']
- env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
- - os: linux
- compiler: clang
- addons:
- apt:
- packages: ['clang-3.8', 'lcov']
- sources:
- - ubuntu-toolchain-r-test
- - llvm-toolchain-trusty
- env: COMPILER='clang++-3.8' EXAMPLES=1 COVERAGE=1 EXTRAS=1
- - os: linux
- compiler: gcc
- addons:
- apt:
- sources: *all_sources
- packages: ['valgrind', 'lcov', 'g++-7']
- env: COMPILER='g++-7' CPP14=1 VALGRIND=1
- - os: osx
- osx_image: xcode9.1
- compiler: clang
- env: COMPILER='clang++' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
- # 7/ C++17 builds
- - os: linux
- compiler: gcc
- addons: *gcc7
- env: COMPILER='g++-7' CPP17=1
- - os: linux
- compiler: gcc
- addons: *gcc7
- env: COMPILER='g++-7' EXAMPLES=1 COVERAGE=1 EXTRAS=1 CPP17=1
- - os: linux
- dist: xenial
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-6.0', 'libstdc++-8-dev']
- env: COMPILER='clang++-6.0' CPP17=1
- - os: linux
- dist: xenial
- compiler: clang
- addons:
- apt:
- sources: *all_sources
- packages: ['clang-6.0', 'libstdc++-8-dev']
- env: COMPILER='clang++-6.0' CPP17=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
- # 8/ Conan
- - language: python
- python:
- - "3.7"
- dist: xenial
- install:
- - pip install conan-package-tools
- env:
- - CONAN_GCC_VERSIONS=8
- - CONAN_DOCKER_IMAGE=conanio/gcc8
- script:
- - python .conan/build.py
- install:
- - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
- - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
- - |
- if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
- CMAKE_URL="http://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz"
- mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
- export PATH=${DEPS_DIR}/cmake/bin:${PATH}
- elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
- which cmake || brew install cmake;
- fi
- before_script:
- - export CXX=${COMPILER}
- - cd ${TRAVIS_BUILD_DIR}
- # Regenerate single header file, so it is tested in the examples...
- - python scripts/generateSingleHeader.py
- - |
- if [[ ${CPP17} -eq 1 ]]; then
- export CPP_STANDARD=17
- elif [[ ${CPP14} -eq 1 ]]; then
- export CPP_STANDARD=14
- else
- export CPP_STANDARD=11
- fi
- # Use Debug builds for running Valgrind and building examples
- - 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
- # Don't bother with release build for coverage build
- - cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF
- script:
- - cd Build-Debug
- - make -j 2
- - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
- # Coverage collection does not work for OS X atm
- - |
- if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ "${COVERAGE}" == "1" ]]; then
- make gcov
- make lcov
- bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports"
- fi
- - # Go to release build
- - cd ../Build-Release
- - make -j 2
- - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
|