-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy path.travis.yml
More file actions
123 lines (101 loc) · 4.15 KB
/
Copy path.travis.yml
File metadata and controls
123 lines (101 loc) · 4.15 KB
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
language: cpp
script: cmake
branches:
only:
# - master
# - wip
cache:
directories:
- ${TRAVIS_BUILD_DIR}/deps/cmake
matrix:
include:
- env: CLANG_VERSION=3.4 BUILD_TYPE=Debug CPP=1y ASAN=On LIBCXX=On
os: linux
addons: &clang34
apt:
packages:
- util-linux
- clang-3.4
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.4
- env: CLANG_VERSION=3.4 BUILD_TYPE=Release CPP=1y ASAN=On LIBCXX=On
os: linux
addons: *clang34
- env: CLANG_VERSION=3.7 BUILD_TYPE=Debug CPP=14 ASAN=Off LIBCXX=On
os: linux
addons: &clang37
apt:
packages:
- util-linux
- clang-3.7
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- env: CLANG_VERSION=3.7 BUILD_TYPE=Release CPP=14 ASAN=Off LIBCXX=On
os: linux
addons: *clang37
- env: GCC_VERSION=4.9 BUILD_TYPE=Debug CPP=14 ASAN=Off LIBCXX=Off
os: linux
addons: &gcc49
apt:
packages:
- g++-4.9
sources:
- ubuntu-toolchain-r-test
- env: GCC_VERSION=4.9 BUILD_TYPE=Release CPP=14 ASAN=Off LIBCXX=Off
os: linux
addons: *gcc49
- env: GCC_VERSION=5 BUILD_TYPE=Debug CPP=14 ASAN=Off LIBCXX=Off
os: linux
addons: &gcc5
apt:
packages:
- g++-5
sources:
- ubuntu-toolchain-r-test
- env: GCC_VERSION=5 BUILD_TYPE=Release CPP=14 ASAN=Off LIBCXX=Off
os: linux
addons: *gcc5
- env: GCC_VERSION=5 BUILD_TYPE=Coverage CPP=14 ASAN=Off LIBCXX=Off
os: linux
addons: *gcc5
before_install:
- export CHECKOUT_PATH=`pwd`;
- |
if [ -z "$(ls -A ${TRAVIS_BUILD_DIR}/deps/cmake/bin)" ]; then
CMAKE_URL="https://cmake.org/files/v3.6/cmake-3.6.2-Linux-x86_64.tar.gz"
mkdir -p ${TRAVIS_BUILD_DIR}/deps/cmake && travis_retry wget --no-check-certificate --quiet -O - "${CMAKE_URL}" | tar --strip-components=1 -xz -C ${TRAVIS_BUILD_DIR}/deps/cmake
fi
export PATH="${TRAVIS_BUILD_DIR}/deps/cmake/bin:${PATH}"
- if [ -n "$GCC_VERSION" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; fi
- if [ -n "$CLANG_VERSION" ]; then export CXX="clang++-${CLANG_VERSION}" CC="clang-${CLANG_VERSION}"; fi
- if [ "$CLANG_VERSION" == "3.4" ]; then export CXX="/usr/local/clang-3.4/bin/clang++" CC="/usr/local/clang-3.4/bin/clang"; fi
- if [ "$LIBCXX" == "On" ]; then sudo PATH="${PATH}" CXX="$CXX" CC="$CC" ./install_libcxx.sh; fi
- if [ "$BUILD_TYPE" == "Coverage" ]; then export GCOV=gcov-5; fi
- if [ "$ASAN" == "On" ]; then export SANITIZER=Address; fi
install:
- cd $CHECKOUT_PATH
- if [ ! -d build ]; then mkdir build; fi
- cd build
- export CXX_FLAGS=""
- export CXX_LINKER_FLAGS=""
- if [ -z "$BUILD_TYPE" ]; then export BUILD_TYPE=Debug; fi
# Compile flags according to compiler/lib versions
- if [ -n "$CLANG_VERSION" ]; then CXX_FLAGS="${CXX_FLAGS} -D__extern_always_inline=inline"; fi
- if [ "$LIBCXX" == "On" ]; then CXX_FLAGS="${CXX_FLAGS} -stdlib=libc++ -I/usr/include/c++/v1/"; fi
- if [ "$LIBCXX" == "On" ]; then CXX_LINKER_FLAGS="${CXX_FLAGS} -L/usr/lib/ -lc++"; fi
# Coverage: lcov + coveralls
- if [ "$BUILD_TYPE" == "Coverage" ]; then wget http://downloads.sourceforge.net/ltp/lcov-1.12.tar.gz; fi
- if [ "$BUILD_TYPE" == "Coverage" ]; then tar xf lcov-1.12.tar.gz; fi
- if [ "$BUILD_TYPE" == "Coverage" ]; then sudo make -C lcov-1.12/ install; fi
- if [ "$BUILD_TYPE" == "Coverage" ]; then gem install coveralls-lcov; fi
script:
- cmake --no-warn-unused-cli .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${CXX_LINKER_FLAGS}" -DCXX_STD=$CPP -DGCOV=$GCOV -DASAN=$ASAN
- if [ "$BUILD_TYPE" == "Coverage" ]; then make coverage VERBOSE=1; else make VERBOSE=1; fi
- if [ "$BUILD_TYPE" == "Debug" ]; then ctest -VV --schedule-random; fi
after_success:
# Upload coverage info to coveralls.io
- if [ -n "${COVERALLS_TOKEN}" -a "$BUILD_TYPE" == "Coverage" ]; then coveralls-lcov -v --repo-token ${COVERALLS_TOKEN} lcov/final; fi
notifications:
email: false