os: linux # Use linux unless specified otherwise. dist: xenial sudo: required language: cpp git: depth: 1 matrix: include: - os: linux compiler: g++ addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-7 env: - CXX_COMPILER=g++-7 CC_COMPILER=gcc-7 - os: linux compiler: g++ addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-8 env: - CXX_COMPILER=g++-8 CC_COMPILER=gcc-8 - os: linux compiler: g++ env: - CXX_COMPILER=g++-9 CC_COMPILER=gcc-9 - os: linux compiler: clang++ addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-xenial-5.0 packages: - clang-5.0 env: - CXX_COMPILER=clang++-5.0 CC_COMPILER=clang-5.0 - os: linux compiler: clang++ addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-xenial-6.0 packages: - clang-6.0 env: - CXX_COMPILER=clang++-6.0 CC_COMPILER=clang-6.0 - os: linux compiler: clang++ addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-xenial-7 packages: - clang-7 env: - CXX_COMPILER=clang++-7 CC_COMPILER=clang-7 - os: linux compiler: clang++ addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-xenial-8 packages: - clang-8 env: - CXX_COMPILER=clang++-8 CC_COMPILER=clang-8 - os: osx compiler: clang++ osx_image: xcode9.4 env: - CXX_COMPILER=clang++ CC_COMPILER=clang - os: osx compiler: clang++ osx_image: xcode10.2 env: - CXX_COMPILER=clang++ CC_COMPILER=clang install: - export CC=${CC_COMPILER} - export CXX=${CXX_COMPILER} - JOBS=2 # Travis machines have 2 cores. - | # If linux and clang install the right version of libc++. if [[ "${TRAVIS_OS_NAME}" == "linux" && "${CXX%%+*}" == "clang" && -n "$(ls -A ${LLVM_INSTALL})" ]]; then LLVM_INSTALL=${DEPS_DIR}/llvm/install if [[ "${CXX}" == "clang++-3.5" ]]; then LLVM_VERSION="3.5.2"; elif [[ "${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"; elif [[ "${CXX}" == "clang++-4.0" ]]; then LLVM_VERSION="4.0.1"; elif [[ "${CXX}" == "clang++-5.0" ]]; then LLVM_VERSION="5.0.2"; elif [[ "${CXX}" == "clang++-6.0" ]]; then LLVM_VERSION="6.0.1"; elif [[ "${CXX}" == "clang++-7" ]]; then LLVM_VERSION="7.0.1"; elif [[ "${CXX}" == "clang++-8" ]]; then LLVM_VERSION="8.0.0"; 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 && sudo make install -j${JOBS}) (cd llvm/build/projects/libcxxabi && sudo make install -j${JOBS}) 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 - | # If linux and gcc-9 install gcc-9. if [[ "${CXX}" == "g++-9" ]]; then wget http://kayari.org/gcc-latest/gcc-latest.deb sudo dpkg -i gcc-latest.deb sudo ln -s /opt/gcc-latest/bin/gcc /usr/bin/gcc-9 sudo ln -s /opt/gcc-latest/bin/g++ /usr/bin/g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 sudo ldconfig /opt/gcc-latest/lib64 fi before_script: - rm -rf build - mkdir -p build - cd build - cmake -G "Unix Makefiles" .. script: - cmake --build . -- -j${JOBS} - ctest --output-on-failure -j${JOBS} notifications: email: false