| # Based on https://github.com/ldionne/hana/blob/master/.travis.yml |
| |
| language: cpp |
| sudo: false |
| notifications: |
| email: false |
| |
| # Use Linux unless specified otherwise |
| os: linux |
| dist: trusty |
| |
| cache: |
| directories: |
| - ${TRAVIS_BUILD_DIR}/deps |
| |
| matrix: |
| include: |
| |
| ########################################################################## |
| # Clang on OSX |
| # Travis seems to take longer to start OSX instances, |
| # so leave this first for the overall build to be faster |
| ########################################################################## |
| |
| # XCode 8.3 |
| - env: COMPILER=clang++ BUILD_TYPE=Debug |
| os: osx |
| osx_image: xcode8.3 |
| compiler: clang |
| |
| - env: COMPILER=clang++ BUILD_TYPE=Release |
| os: osx |
| osx_image: xcode8.3 |
| compiler: clang |
| |
| # XCode 9.1 |
| - env: COMPILER=clang++ BUILD_TYPE=Debug |
| os: osx |
| osx_image: xcode9.1 |
| compiler: clang |
| |
| - env: COMPILER=clang++ BUILD_TYPE=Release |
| os: osx |
| osx_image: xcode9.1 |
| compiler: clang |
| |
| ########################################################################## |
| # Clang on Linux |
| ########################################################################## |
| |
| # Clang 3.6 |
| - env: COMPILER=clang++-3.6 BUILD_TYPE=Debug |
| addons: &clang36 |
| apt: |
| packages: |
| - clang-3.6 |
| - g++-5 |
| sources: |
| - ubuntu-toolchain-r-test |
| - llvm-toolchain-precise-3.6 |
| |
| - env: COMPILER=clang++-3.6 BUILD_TYPE=Release |
| addons: *clang36 |
| |
| # Clang 3.7 |
| - env: COMPILER=clang++-3.7 BUILD_TYPE=Debug |
| addons: &clang37 |
| apt: |
| packages: |
| - clang-3.7 |
| - g++-5 |
| sources: |
| - ubuntu-toolchain-r-test |
| - llvm-toolchain-precise-3.7 |
| |
| - env: COMPILER=clang++-3.7 BUILD_TYPE=Release |
| addons: *clang37 |
| |
| # Clang 3.8 |
| - env: COMPILER=clang++-3.8 BUILD_TYPE=Debug |
| addons: &clang38 |
| apt: |
| packages: |
| - clang-3.8 |
| - g++-5 |
| sources: |
| - ubuntu-toolchain-r-test |
| - llvm-toolchain-precise-3.8 |
| |
| - env: COMPILER=clang++-3.8 BUILD_TYPE=Release |
| addons: *clang38 |
| |
| # Clang 3.9 |
| - env: COMPILER=clang++-3.9 BUILD_TYPE=Debug |
| addons: &clang39 |
| apt: |
| packages: |
| - clang-3.9 |
| - g++-5 |
| sources: |
| - ubuntu-toolchain-r-test |
| - llvm-toolchain-precise-3.9 |
| |
| - env: COMPILER=clang++-3.9 BUILD_TYPE=Release |
| addons: *clang39 |
| |
| # Clang 4.0 |
| - env: COMPILER=clang++-4.0 BUILD_TYPE=Debug |
| addons: &clang40 |
| apt: |
| packages: |
| - clang-4.0 |
| - g++-5 |
| sources: |
| - ubuntu-toolchain-r-test |
| - llvm-toolchain-trusty-4.0 |
| |
| - env: COMPILER=clang++-4.0 BUILD_TYPE=Release |
| addons: *clang40 |
| |
| # Clang 5.0 |
| - env: COMPILER=clang++-5.0 BUILD_TYPE=Debug |
| addons: &clang40 |
| apt: |
| packages: |
| - clang-5.0 |
| - g++-5 |
| sources: |
| - ubuntu-toolchain-r-test |
| - llvm-toolchain-trusty-5.0 |
| - sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main' |
| key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' |
| |
| - env: COMPILER=clang++-5.0 BUILD_TYPE=Release |
| addons: *clang40 |
| |
| ########################################################################## |
| # GCC on Linux |
| ########################################################################## |
| |
| # GCC 5 |
| - env: COMPILER=g++-5 BUILD_TYPE=Debug |
| addons: &gcc5 |
| apt: |
| packages: g++-5 |
| sources: |
| - ubuntu-toolchain-r-test |
| |
| - env: COMPILER=g++-5 BUILD_TYPE=Release |
| addons: *gcc5 |
| |
| # GCC 6 |
| - env: COMPILER=g++-6 BUILD_TYPE=Debug |
| addons: &gcc6 |
| apt: |
| packages: g++-6 |
| sources: |
| - ubuntu-toolchain-r-test |
| |
| - env: COMPILER=g++-6 BUILD_TYPE=Release |
| addons: *gcc6 |
| |
| # Currently fails due to #525 |
| ## GCC 7 |
| #- env: COMPILER=g++-7 BUILD_TYPE=Debug |
| # addons: &gcc7 |
| # apt: |
| # packages: g++-7 |
| # sources: |
| # - ubuntu-toolchain-r-test |
| |
| #- env: COMPILER=g++-7 BUILD_TYPE=Release |
| # addons: *gcc7 |
| |
| |
| 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}" |
| |
| # Travis machines have 2 cores |
| - JOBS=2 |
| |
| ############################################################################ |
| # Install a recent CMake (unless already installed on OS X) |
| ############################################################################ |
| - CMAKE_VERSION=3.7.2 |
| - | |
| if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then |
| CMAKE_URL="https://cmake.org/files/v${CMAKE_VERSION%.[0-9]}/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz" |
| mkdir cmake && travis_retry wget --no-check-certificate -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake |
| export PATH=${DEPS_DIR}/cmake/bin:${PATH} |
| else |
| brew install cmake || brew upgrade cmake |
| fi |
| - cmake --version |
| |
| ############################################################################ |
| # [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 |
| |
| before_script: |
| # have CMake to generate build files |
| - cd "${TRAVIS_BUILD_DIR}" |
| - mkdir build && cd build |
| - cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE |
| |
| script: |
| # build and run tests |
| - cmake --build . -- -j${JOBS} |
| - ctest --output-on-failure -j${JOBS} |