# Portions of this file based on https://github.com/Microsoft/GSL/blob/master/.travis.yml language: cpp os: linux dist: trusty sudo: false group: beta addons: apt: sources: &default_sources - ubuntu-toolchain-r-test - libboost-latest packages: &default_packages - libboost-serialization-dev - libboost-dev matrix: include: # |---------- LINUX GCC ----------| - compiler: g++-4.7 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=g++-4.7"] addons: apt: sources: *default_sources packages: ['g++-4.7', *default_packages] - compiler: g++-4.8 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=g++-4.8"] addons: apt: sources: *default_sources packages: ['g++-4.8', *default_packages] - compiler: g++-4.9 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=g++-4.9"] addons: apt: sources: *default_sources packages: ['g++-4.9', *default_packages] - compiler: g++-5 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=g++-5"] addons: apt: sources: *default_sources packages: ['g++-5', *default_packages] - compiler: g++-5 name: "g++-5 multilib" env: ["COMPILER=g++-5"] addons: apt: sources: *default_sources packages: ['gcc-multilib g++-5-multilib linux-libc-dev', *default_packages] - compiler: g++-6 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=g++-6"] addons: apt: sources: *default_sources packages: ['g++-6', *default_packages] - compiler: g++-7 name: "g++-7 c++17" env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON -DCMAKE_CXX_STANDARD=17'", "COMPILER=g++-7"] addons: apt: sources: *default_sources packages: ['g++-7', *default_packages] # |---------- LINUX GCC ----------| - dist: xenial compiler: g++-8 name: "g++-8 c++17" env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON -DCMAKE_CXX_STANDARD=17'", "COMPILER=g++-8"] addons: apt: sources: *default_sources packages: ['g++-8', *default_packages] # |---------- LINUX CLANG ----------| - compiler: clang++-3.5 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=clang++-3.5"] addons: apt: sources: [*default_sources, llvm-toolchain-precise-3.5] packages: ['clang-3.5', *default_packages] - compiler: clang++-3.6 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=clang++-3.6"] addons: apt: sources: [*default_sources, llvm-toolchain-precise-3.6] packages: ['clang-3.6', *default_packages] - compiler: clang++-3.7 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=clang++-3.7"] addons: apt: sources: [*default_sources, llvm-toolchain-precise-3.7] packages: ['clang-3.7', *default_packages] - compiler: clang++-3.8 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=clang++-3.8"] addons: apt: sources: [*default_sources, llvm-toolchain-precise-3.8] packages: ['clang-3.8', *default_packages] - compiler: clang++-3.9 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=clang++-3.9"] addons: apt: sources: [*default_sources, llvm-toolchain-precise-3.9] packages: ['clang-3.9', *default_packages] - compiler: clang++-4.0 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=clang++-4.0"] addons: apt: sources: [*default_sources, llvm-toolchain-trusty-4.0] packages: ['clang-4.0', 'g++-5', *default_packages] - compiler: clang++-5.0 env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON'", "COMPILER=clang++-5.0"] addons: &clang50 apt: packages: - clang-5.0 - g++-7 - *default_packages sources: - *default_sources - llvm-toolchain-trusty-5.0 - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main' key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' - env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON -DCMAKE_CXX_STANDARD=17'", "COMPILER=clang++-5.0"] name: "clang++-5.0 c++17" addons: *clang50 - compiler: clang++-7 name: "clang++-7 c++17" env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON -DCMAKE_CXX_STANDARD=17'", "COMPILER=clang++-7"] addons: apt: packages: - clang-7 - g++-7 - *default_packages sources: - *default_sources - llvm-toolchain-trusty-7 - compiler: clang++-8 name: "clang++-8 c++17 libc++" env: ["CMAKE_OPTIONS='-DSKIP_PORTABILITY_TEST=ON -DCMAKE_CXX_STANDARD=17 -DCLANG_USE_LIBCPP=ON -DSKIP_PERFORMANCE_COMPARISON=ON'", "COMPILER=clang++-8"] addons: apt: packages: - clang-8 - g++-8 - libc++-8-dev - libc++abi-8-dev - *default_packages sources: - *default_sources - llvm-toolchain-trusty-8 # # |---------- LINUX CLANG (32-bit) ----------| # # Doesn't work. # - compiler: clang++ # addons: # apt: # sources: [*default_sources] # packages: ['clang', 'gcc-multilib', 'g++-multilib', *default_packages] # |---------- OSX CLANG ----------| - compiler: clang++ os: osx osx_image: xcode7.3 env: COMPILER=clang++ - compiler: clang++ os: osx osx_image: xcode8 env: COMPILER=clang++ # # Missing CMake # - compiler: clang++ # os: osx # osx_image: xcode8.1 - compiler: clang++ os: osx osx_image: xcode8.2 env: COMPILER=clang++ - compiler: clang++ os: osx osx_image: xcode8.3 env: COMPILER=clang++ - compiler: clang++ env: ["CMAKE_OPTIONS='-DWITH_WERROR=OFF'"] os: osx osx_image: xcode9 env: COMPILER=clang++ - compiler: clang++ env: ["CMAKE_OPTIONS='-DWITH_WERROR=OFF'"] os: osx osx_image: xcode10 env: COMPILER=clang++ install: # Set the ${CXX} variable properly - export CXX=${COMPILER} - ${CXX} --version # Dependencies required by the CI are installed in ${TRAVIS_BUILD_DIR}/deps/ - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" - mkdir -p "${DEPS_DIR}" - cd "${DEPS_DIR}" - JOBS=2 # [linux]: Install the right version of libc++ - | LLVM_INSTALL=${DEPS_DIR}/llvm/install # if in linux and compiler clang and llvm not installed if [[ "${TRAVIS_OS_NAME}" == "linux" && "${CXX%%+*}" == "clang" && -n "$(ls -A ${LLVM_INSTALL})" ]]; then if [[ "${CXX}" == "clang++-3.6" ]]; then LLVM_VERSION="3.6.2"; elif [[ "${CXX}" == "clang++-3.7" ]]; then LLVM_VERSION="3.7.1"; elif [[ "${CXX}" == "clang++-3.8" ]]; then LLVM_VERSION="3.8.1"; elif [[ "${CXX}" == "clang++-3.9" ]]; then LLVM_VERSION="3.9.1"; fi LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz" LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz" LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz" mkdir -p llvm llvm/build llvm/projects/libcxx llvm/projects/libcxxabi travis_retry wget -O - ${LLVM_URL} | tar --strip-components=1 -xJ -C llvm travis_retry wget -O - ${LIBCXX_URL} | tar --strip-components=1 -xJ -C llvm/projects/libcxx travis_retry wget -O - ${LIBCXXABI_URL} | tar --strip-components=1 -xJ -C llvm/projects/libcxxabi (cd llvm/build && cmake .. -DCMAKE_INSTALL_PREFIX=${LLVM_INSTALL}) (cd llvm/build/projects/libcxx && make install -j2) (cd llvm/build/projects/libcxxabi && make install -j2) export CXXFLAGS="-isystem ${LLVM_INSTALL}/include/c++/v1" export LDFLAGS="-L ${LLVM_INSTALL}/lib -l c++ -l c++abi" export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LLVM_INSTALL}/lib" fi script: - cd "${TRAVIS_BUILD_DIR}" - if [[ "${COMPILERCC}" != "" ]]; then export CC="${COMPILERCC}"; fi - if [[ "${COMPILER}" != "" ]]; then export CXX="${COMPILER}"; fi - $CXX --version - cmake --version - mkdir build && cd build - cmake ${CMAKE_OPTIONS} .. && make -j4 - ctest . --output-on-failure branches: only: - master