aboutsummaryrefslogtreecommitdiffstats
path: root/.travis.yml
diff options
context:
space:
mode:
authorTiago <tiagomacarios@users.noreply.github.com>2017-10-25 11:36:31 -0700
committerNeil MacIntosh <neilmac@microsoft.com>2017-10-25 11:36:31 -0700
commitbec7fa72c1b3474b63d0965ca799cbcd5626bb74 (patch)
treef45dacf3e1fe36bfb9514b5cf1fb677d3cf73af2 /.travis.yml
parent211e195d8f9dd6fa967a5741387fb5eae1ff351b (diff)
downloadplatform_external_Microsoft-GSL-bec7fa72c1b3474b63d0965ca799cbcd5626bb74.tar.gz
platform_external_Microsoft-GSL-bec7fa72c1b3474b63d0965ca799cbcd5626bb74.tar.bz2
platform_external_Microsoft-GSL-bec7fa72c1b3474b63d0965ca799cbcd5626bb74.zip
Clean up and update CI build scripts (#563)
* travis.yml clean up - Remove trailling spaces - Move notification setting from the bottom to the top - Set Linux as default OS - Simplify cache directory - Add banners around different configurations * Update CMake installation routine - Make it depend on variable (easier to update) - Simplify code a bit * Re-organize build matrix and LLVM install - make logic depend on a single COMPILER variable - Update LLVM installation process * Update compilers to latest stable version
Diffstat (limited to '.travis.yml')
-rw-r--r--.travis.yml238
1 files changed, 161 insertions, 77 deletions
diff --git a/.travis.yml b/.travis.yml
index 82b8ec2..19d887f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,154 +2,238 @@
language: cpp
sudo: false
+notifications:
+ email: false
+
+# Use Linux unless specified otherwise
+os: linux
+dist: trusty
cache:
directories:
- - ${TRAVIS_BUILD_DIR}/deps/cmake
- - ${TRAVIS_BUILD_DIR}/deps/llvm-3.5.2/install
- - ${TRAVIS_BUILD_DIR}/deps/llvm-3.6.2/install
- - ${TRAVIS_BUILD_DIR}/deps/llvm-3.7.1/install
- - ${TRAVIS_BUILD_DIR}/deps/llvm-3.8.1/install
- - ${TRAVIS_BUILD_DIR}/deps/llvm-3.9.1/install
+ - ${TRAVIS_BUILD_DIR}/deps
matrix:
include:
- - env: BUILD_TYPE=Debug
+
+ ##########################################################################
+ # 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
+ osx_image: xcode8.3
compiler: clang
- - env: BUILD_TYPE=Release
+
+ # XCode 9.1
+ - env: COMPILER=clang++ BUILD_TYPE=Debug
os: osx
- osx_image: xcode8
+ osx_image: xcode9.1
compiler: clang
- - env: CLANG_VERSION=3.6 BUILD_TYPE=Debug
- os: linux
+
+ - 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: &sources
+ sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- - env: CLANG_VERSION=3.6 BUILD_TYPE=Release
- os: linux
+
+ - env: COMPILER=clang++-3.6 BUILD_TYPE=Release
addons: *clang36
- - env: CLANG_VERSION=3.7 BUILD_TYPE=Debug
- os: linux
+
+ # Clang 3.7
+ - env: COMPILER=clang++-3.7 BUILD_TYPE=Debug
addons: &clang37
apt:
packages:
- clang-3.7
- g++-5
- sources: &sources
+ sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- - env: CLANG_VERSION=3.7 BUILD_TYPE=Release
- os: linux
+
+ - env: COMPILER=clang++-3.7 BUILD_TYPE=Release
addons: *clang37
- - env: CLANG_VERSION=3.8 BUILD_TYPE=Debug
- os: linux
+
+ # Clang 3.8
+ - env: COMPILER=clang++-3.8 BUILD_TYPE=Debug
addons: &clang38
apt:
packages:
- clang-3.8
- g++-5
- sources: &sources
+ sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
- - env: CLANG_VERSION=3.8 BUILD_TYPE=Release
- os: linux
+
+ - env: COMPILER=clang++-3.8 BUILD_TYPE=Release
addons: *clang38
- - env: CLANG_VERSION=3.9 BUILD_TYPE=Debug
- os: linux
+
+ # Clang 3.9
+ - env: COMPILER=clang++-3.9 BUILD_TYPE=Debug
addons: &clang39
apt:
packages:
- clang-3.9
- g++-5
- sources: &sources
+ sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.9
- - env: CLANG_VERSION=3.9 BUILD_TYPE=Release
- os: linux
+
+ - env: COMPILER=clang++-3.9 BUILD_TYPE=Release
addons: *clang39
- - env: GCC_VERSION=5 BUILD_TYPE=Debug
- os: linux
+
+ # 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: *sources
- - env: GCC_VERSION=5 BUILD_TYPE=Release
- os: linux
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - env: COMPILER=g++-5 BUILD_TYPE=Release
addons: *gcc5
- - env: GCC_VERSION=6 BUILD_TYPE=Debug
- os: linux
+
+ # GCC 6
+ - env: COMPILER=g++-6 BUILD_TYPE=Debug
addons: &gcc6
apt:
packages: g++-6
- sources: *sources
- - env: GCC_VERSION=6 BUILD_TYPE=Release
- os: linux
+ 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:
- - if [[ -n "$CLANG_VERSION" ]]; then export CXX=clang++-$CLANG_VERSION CC=clang-$CLANG_VERSION; fi
- - if [[ -n "$GCC_VERSION" ]]; then export CXX=g++-$GCC_VERSION CC=gcc-$GCC_VERSION; fi
- - JOBS=2
+ # 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}"
+ - 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
- if [[ -z "$(ls -A ${DEPS_DIR}/cmake/bin)" ]]; then
- CMAKE_URL="https://cmake.org/files/v3.7/cmake-3.7.2-Linux-x86_64.tar.gz"
- mkdir -p cmake && travis_retry wget --no-check-certificate --quiet -O - "${CMAKE_URL}" | tar --strip-components=1 -xz -C cmake
- fi
- export PATH="${DEPS_DIR}/cmake/bin:${PATH}"
+ 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
- if ! brew ls --version cmake &>/dev/null; then brew install cmake; fi
+ brew install cmake || brew upgrade cmake
fi
+ - cmake --version
############################################################################
# [linux]: Install the right version of libc++
############################################################################
- |
- if [[ -n "$CLANG_VERSION" && "${TRAVIS_OS_NAME}" == "linux" && "${STDLIB}" != "libstdc++" ]]; then
- if [[ "$CLANG_VERSION" == "3.5" ]]; then LLVM_VERSION="3.5.2"; fi
- if [[ "$CLANG_VERSION" == "3.6" ]]; then LLVM_VERSION="3.6.2"; fi
- if [[ "$CLANG_VERSION" == "3.7" ]]; then LLVM_VERSION="3.7.1"; fi
- if [[ "$CLANG_VERSION" == "3.8" ]]; then LLVM_VERSION="3.8.1"; fi
- if [[ "$CLANG_VERSION" == "3.9" ]]; then LLVM_VERSION="3.9.1"; fi
- LLVM_ROOT="${DEPS_DIR}/llvm-${LLVM_VERSION}"
+ 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"
- if [[ -z "$(ls -A ${LLVM_ROOT}/install/include)" ]]; then
- mkdir -p "${LLVM_ROOT}" "${LLVM_ROOT}/build" "${LLVM_ROOT}/projects/libcxx" "${LLVM_ROOT}/projects/libcxxabi"
- travis_retry wget --quiet -O - "${LLVM_URL}" | tar --strip-components=1 -xJ -C "${LLVM_ROOT}"
- travis_retry wget --quiet -O - "${LIBCXX_URL}" | tar --strip-components=1 -xJ -C "${LLVM_ROOT}/projects/libcxx"
- travis_retry wget --quiet -O - "${LIBCXXABI_URL}" | tar --strip-components=1 -xJ -C "${LLVM_ROOT}/projects/libcxxabi"
- (cd "${LLVM_ROOT}/build" && cmake .. -DCMAKE_CXX_COMPILER="$CXX" -DCMAKE_C_COMPILER="$CC" -DCMAKE_INSTALL_PREFIX="${LLVM_ROOT}/install" -DCMAKE_BUILD_TYPE=$BUILD_TYPE)
- (cd "${LLVM_ROOT}/build/projects/libcxx" && make install -j$JOBS)
- (cd "${LLVM_ROOT}/build/projects/libcxxabi" && make install -j$JOBS)
- fi
- export CXXFLAGS="-I ${LLVM_ROOT}/install/include/c++/v1"
- export LDFLAGS="-L ${LLVM_ROOT}/install/lib -lc++ -lc++abi"
- export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LLVM_ROOT}/install/lib"
+ 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}"
- - cmake . -Bbuild -DCMAKE_CXX_COMPILER="$CXX" -DCMAKE_C_COMPILER="$CC" -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- - cmake --build build -- -j$JOBS
-
+ - mkdir build && cd build
+ - cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE
+
script:
- - cd build
- - ctest --output-on-failure -j$JOBS
-
-notifications:
- email: false
+ # build and run tests
+ - cmake --build . -- -j${JOBS}
+ - ctest --output-on-failure -j${JOBS}