142 lines
4.3 KiB
YAML
142 lines
4.3 KiB
YAML
os: linux
|
|
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: osx
|
|
compiler: clang++
|
|
osx_image: xcode9.4
|
|
env:
|
|
- CXX_COMPILER=clang++ CC_COMPILER=clang
|
|
|
|
- os: osx
|
|
compiler: clang++
|
|
osx_image: xcode10.1
|
|
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";
|
|
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_COMPILER}" == "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
|