forked from microsoft/GSL
-
Notifications
You must be signed in to change notification settings - Fork 1
/
.travis.yml
142 lines (133 loc) · 5.35 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# Based on https://github.com/ldionne/hana/blob/master/.travis.yml
language: cpp
sudo: false
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.0/install
matrix:
include:
- env: BUILD_TYPE=Debug
os: osx
osx_image: xcode8
compiler: clang
- env: BUILD_TYPE=Release
os: osx
osx_image: xcode8
compiler: clang
- env: CLANG_VERSION=3.6 BUILD_TYPE=Debug
os: linux
addons: &clang36
apt:
packages:
- clang-3.6
- g++-5
sources: &sources
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- env: CLANG_VERSION=3.6 BUILD_TYPE=Release
os: linux
addons: *clang36
- env: CLANG_VERSION=3.7 BUILD_TYPE=Debug
os: linux
addons: &clang37
apt:
packages:
- clang-3.7
- g++-5
sources: &sources
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- env: CLANG_VERSION=3.7 BUILD_TYPE=Release
os: linux
addons: *clang37
- env: CLANG_VERSION=3.8 BUILD_TYPE=Debug
os: linux
addons: &clang38
apt:
packages:
- clang-3.8
- g++-5
sources: &sources
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
- env: CLANG_VERSION=3.8 BUILD_TYPE=Release
os: linux
addons: *clang38
- env: GCC_VERSION=5 BUILD_TYPE=Debug
os: linux
addons: &gcc5
apt:
packages: g++-5
sources: *sources
- env: GCC_VERSION=5 BUILD_TYPE=Release
os: linux
addons: *gcc5
- env: GCC_VERSION=6 BUILD_TYPE=Debug
os: linux
addons: &gcc6
apt:
packages: g++-6
sources: *sources
- env: GCC_VERSION=6 BUILD_TYPE=Release
os: linux
addons: *gcc6
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
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
- mkdir -p "${DEPS_DIR}" && cd "${DEPS_DIR}"
############################################################################
# Install a recent CMake (unless already installed on OS X)
############################################################################
- |
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
if [[ -z "$(ls -A ${DEPS_DIR}/cmake/bin)" ]]; then
CMAKE_URL="https://cmake.org/files/v3.6/cmake-3.6.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}"
else
if ! brew ls --version cmake &>/dev/null; then brew install cmake; fi
fi
############################################################################
# [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.0"; fi
LLVM_ROOT="${DEPS_DIR}/llvm-${LLVM_VERSION}"
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"
fi
before_script:
- cd "${TRAVIS_BUILD_DIR}"
- cmake . -Bbuild -DCMAKE_CXX_COMPILER="$CXX" -DCMAKE_C_COMPILER="$CC" -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- cmake --build build -- -j$JOBS
script:
- cd build
- ctest --output-on-failure -j$JOBS
notifications:
email: false