270 lines
8.5 KiB
YAML
270 lines
8.5 KiB
YAML
# 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
|