| language: cpp |
| sudo: false |
| |
| common_sources: &all_sources |
| - ubuntu-toolchain-r-test |
| - llvm-toolchain-trusty |
| - llvm-toolchain-trusty-3.9 |
| - llvm-toolchain-trusty-4.0 |
| - llvm-toolchain-trusty-5.0 |
| |
| matrix: |
| include: |
| |
| # 1/ Linux Clang Builds |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['valgrind', 'lcov', 'clang-3.5'] |
| env: COMPILER='clang++-3.5' VALGRIND=1 |
| |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['valgrind', 'lcov', 'clang-3.6'] |
| env: COMPILER='clang++-3.6' VALGRIND=1 |
| |
| # Travis's containers do not seem to have Clang 3.7 in apt, no matter what sources I add. |
| # - os: linux |
| # compiler: clang |
| # addons: |
| # apt: |
| # sources: *all_sources |
| # packages: ['valgrind', 'clang-3.7'] |
| # env: COMPILER='clang++-3.7' VALGRIND=1 |
| |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['valgrind', 'lcov', 'clang-3.8'] |
| env: COMPILER='clang++-3.8' VALGRIND=1 |
| |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['clang-3.9', 'valgrind', 'lcov'] |
| env: COMPILER='clang++-3.9' VALGRIND=1 |
| |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['clang-4.0', 'valgrind', 'lcov'] |
| env: COMPILER='clang++-4.0' VALGRIND=1 |
| |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['clang-5.0', 'valgrind', 'lcov'] |
| env: COMPILER='clang++-5.0' VALGRIND=1 |
| |
| # 2/ Linux GCC Builds |
| - os: linux |
| compiler: gcc |
| addons: |
| apt: |
| sources: ['ubuntu-toolchain-r-test'] |
| packages: ['valgrind', 'lcov', 'g++-4.8'] |
| env: COMPILER='g++-4.8' VALGRIND=1 |
| |
| - os: linux |
| compiler: gcc |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['valgrind', 'lcov', 'g++-4.9'] |
| env: COMPILER='g++-4.9' VALGRIND=1 |
| |
| - os: linux |
| compiler: gcc |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['valgrind', 'lcov', 'g++-5'] |
| env: COMPILER='g++-5' VALGRIND=1 |
| |
| - os: linux |
| compiler: gcc |
| addons: &gcc6 |
| apt: |
| sources: *all_sources |
| packages: ['valgrind', 'lcov', 'g++-6'] |
| env: COMPILER='g++-6' VALGRIND=1 |
| |
| - os: linux |
| compiler: gcc |
| addons: &gcc7 |
| apt: |
| sources: *all_sources |
| packages: ['valgrind', 'lcov', 'g++-7'] |
| env: COMPILER='g++-7' VALGRIND=1 |
| |
| # 3b/ Linux C++14 Clang builds |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| packages: ['clang-3.8', 'valgrind', 'lcov', 'libstdc++-6-dev'] |
| sources: |
| - ubuntu-toolchain-r-test |
| - llvm-toolchain-trusty |
| env: COMPILER='clang++-3.8' CPP14=1 VALGRIND=1 |
| |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['clang-3.9', 'valgrind', 'lcov', 'libstdc++-6-dev'] |
| env: COMPILER='clang++-3.9' CPP14=1 VALGRIND=1 |
| |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['clang-4.0', 'valgrind', 'lcov', 'libstdc++-6-dev'] |
| env: COMPILER='clang++-4.0' CPP14=1 VALGRIND=1 |
| |
| - os: linux |
| compiler: clang |
| addons: |
| apt: |
| sources: *all_sources |
| packages: ['clang-5.0', 'valgrind', 'lcov', 'libstdc++-6-dev'] |
| env: COMPILER='clang++-5.0' CPP14=1 VALGRIND=1 |
| |
| |
| # 4a/ Linux C++14 GCC builds |
| - os: linux |
| compiler: gcc |
| addons: *gcc6 |
| env: COMPILER='g++-6' CPP14=1 VALGRIND=1 |
| |
| - os: linux |
| compiler: gcc |
| addons: *gcc7 |
| env: COMPILER='g++-7' CPP14=1 VALGRIND=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++' USE_CPP14=1 |
| |
| |
| install: |
| - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" |
| - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR} |
| - | |
| if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then |
| CMAKE_URL="http://www.cmake.org/files/v3.3/cmake-3.3.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 |
| |
| - | |
| # Use Debug builds for running Valgrind and building examples |
| cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DUSE_CPP14=${CPP14} -DUSE_VALGRIND=${VALGRIND} -DBUILD_EXAMPLES=ON -DENABLE_COVERAGE=ON |
| # Don't bother with release build for coverage build |
| cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DUSE_CPP14=${CPP14} |
| |
| |
| 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" ]]; 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 |