blob: 5e98ce4fe4886ff60546a0c1107cd3f00341a35c [file] [log] [blame]
Kostace441a92013-08-05 12:40:33 +02001language: cpp
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +02002sudo: false
Kostace441a92013-08-05 12:40:33 +02003
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +01004common_sources: &all_sources
5 - ubuntu-toolchain-r-test
6 - llvm-toolchain-trusty
7 - llvm-toolchain-trusty-3.9
8 - llvm-toolchain-trusty-4.0
9 - llvm-toolchain-trusty-5.0
10
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020011matrix:
12 include:
13
14 # 1/ Linux Clang Builds
15 - os: linux
16 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010017 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020018 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010019 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +010020 packages: ['valgrind', 'lcov', 'clang-3.5']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010021 env: COMPILER='clang++-3.5' VALGRIND=1
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020022
23 - os: linux
24 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010025 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020026 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010027 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +010028 packages: ['valgrind', 'lcov', 'clang-3.6']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010029 env: COMPILER='clang++-3.6' VALGRIND=1
30
Martin Moened5d2bee2017-11-05 23:27:11 +010031# Travis's containers do not seem to have Clang 3.7 in apt, no matter what sources I add.
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010032# - os: linux
33# compiler: clang
34# addons:
35# apt:
36# sources: *all_sources
37# packages: ['valgrind', 'clang-3.7']
38# env: COMPILER='clang++-3.7' VALGRIND=1
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020039
40 - os: linux
41 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010042 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020043 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010044 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +010045 packages: ['valgrind', 'lcov', 'clang-3.8']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010046 env: COMPILER='clang++-3.8' VALGRIND=1
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020047
48 - os: linux
49 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010050 addons:
51 apt:
52 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +010053 packages: ['clang-3.9', 'valgrind', 'lcov']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010054 env: COMPILER='clang++-3.9' VALGRIND=1
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020055
56 - os: linux
57 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010058 addons:
59 apt:
60 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +010061 packages: ['clang-4.0', 'valgrind', 'lcov']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010062 env: COMPILER='clang++-4.0' VALGRIND=1
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020063
64 - os: linux
65 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010066 addons:
67 apt:
68 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +010069 packages: ['clang-5.0', 'valgrind', 'lcov']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010070 env: COMPILER='clang++-5.0' VALGRIND=1
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020071
72 # 2/ Linux GCC Builds
73 - os: linux
74 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010075 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020076 apt:
77 sources: ['ubuntu-toolchain-r-test']
Martin Hořeňovskýe3449842017-11-25 16:58:29 +010078 packages: ['valgrind', 'lcov', 'g++-4.8']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010079 env: COMPILER='g++-4.8' VALGRIND=1
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020080
81 - os: linux
82 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010083 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020084 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010085 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +010086 packages: ['valgrind', 'lcov', 'g++-4.9']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010087 env: COMPILER='g++-4.9' VALGRIND=1
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020088
89 - os: linux
90 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010091 addons:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020092 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010093 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +010094 packages: ['valgrind', 'lcov', 'g++-5']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +010095 env: COMPILER='g++-5' VALGRIND=1
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +020096
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +010097 - os: linux
98 compiler: gcc
99 addons: &gcc6
100 apt:
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100101 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100102 packages: ['valgrind', 'lcov', 'g++-6']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100103 env: COMPILER='g++-6' VALGRIND=1
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100104
105 - os: linux
106 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100107 addons: &gcc7
108 apt:
109 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100110 packages: ['valgrind', 'lcov', 'g++-7']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100111 env: COMPILER='g++-7' VALGRIND=1
112
Martin Hořeňovskýb2dd48f2017-11-05 12:46:04 +0100113 # 3b/ Linux C++14 Clang builds
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100114 - os: linux
115 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100116 addons:
117 apt:
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100118 packages: ['clang-3.8', 'valgrind', 'lcov', 'libstdc++-6-dev']
Martin Hořeňovskýb2dd48f2017-11-05 12:46:04 +0100119 sources:
120 - ubuntu-toolchain-r-test
121 - llvm-toolchain-trusty
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100122 env: COMPILER='clang++-3.8' CPP14=1 VALGRIND=1
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100123
124 - os: linux
125 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100126 addons:
127 apt:
128 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100129 packages: ['clang-3.9', 'valgrind', 'lcov', 'libstdc++-6-dev']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100130 env: COMPILER='clang++-3.9' CPP14=1 VALGRIND=1
131
132 - os: linux
133 compiler: clang
134 addons:
135 apt:
136 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100137 packages: ['clang-4.0', 'valgrind', 'lcov', 'libstdc++-6-dev']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100138 env: COMPILER='clang++-4.0' CPP14=1 VALGRIND=1
139
140 - os: linux
141 compiler: clang
142 addons:
143 apt:
144 sources: *all_sources
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100145 packages: ['clang-5.0', 'valgrind', 'lcov', 'libstdc++-6-dev']
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100146 env: COMPILER='clang++-5.0' CPP14=1 VALGRIND=1
147
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100148
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200149 # 4a/ Linux C++14 GCC builds
150 - os: linux
151 compiler: gcc
Martin Hořeňovskýa49af462017-04-20 22:50:07 +0200152 addons: *gcc6
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100153 env: COMPILER='g++-6' CPP14=1 VALGRIND=1
Martin Hořeňovskýa5ce57b2017-02-07 11:56:34 +0100154
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200155 - os: linux
156 compiler: gcc
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100157 addons: *gcc7
158 env: COMPILER='g++-7' CPP14=1 VALGRIND=1
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200159
Martin Hořeňovský417b2bc2017-04-20 22:47:05 +0200160 # 5/ OSX Clang Builds
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200161 - os: osx
Martin Hořeňovskýa600bfe2017-02-01 21:01:14 +0100162 osx_image: xcode7.3
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200163 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100164 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200165
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200166 - os: osx
Phil Nash1c9a6ca2016-09-27 11:20:33 +0100167 osx_image: xcode8
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200168 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100169 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200170
171 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100172 osx_image: xcode9
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200173 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100174 env: COMPILER='clang++'
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200175
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200176 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100177 osx_image: xcode9.1
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200178 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100179 env: COMPILER='clang++'
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200180
181 - os: osx
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100182 osx_image: xcode9.1
Martin Hořeňovský7869e5b2017-04-20 22:52:41 +0200183 compiler: clang
Martin Hořeňovskýa20b2862017-11-05 12:46:04 +0100184 env: COMPILER='clang++' USE_CPP14=1
Kostace441a92013-08-05 12:40:33 +0200185
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100186
Kostace441a92013-08-05 12:40:33 +0200187install:
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200188 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
189 - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
190 - |
191 if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
192 CMAKE_URL="http://www.cmake.org/files/v3.3/cmake-3.3.2-Linux-x86_64.tar.gz"
Martin Hořeňovskýa600bfe2017-02-01 21:01:14 +0100193 mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200194 export PATH=${DEPS_DIR}/cmake/bin:${PATH}
195 elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
Martin Hořeňovský20211a32017-11-27 22:34:44 +0100196 which cmake || brew install cmake;
Daniel J. Hofmanne904aa72015-10-06 12:28:18 +0200197 fi
198
199before_script:
200 - export CXX=${COMPILER}
201 - cd ${TRAVIS_BUILD_DIR}
Martin Hořeňovskýf36817e2017-11-19 15:04:51 +0100202 # Regenerate single header file, so it is tested in the examples...
203 - python scripts/generateSingleHeader.py
204
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100205 - |
206 # Use Debug builds for running Valgrind and building examples
207 cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DUSE_CPP14=${CPP14} -DUSE_VALGRIND=${VALGRIND} -DBUILD_EXAMPLES=ON -DENABLE_COVERAGE=ON
208 # Don't bother with release build for coverage build
209 cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DUSE_CPP14=${CPP14}
210
Kostace441a92013-08-05 12:40:33 +0200211
212script:
Martin Hořeňovskýe3449842017-11-25 16:58:29 +0100213 - |
214 cd Build-Debug
215 make -j 2
216 CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
217 # Coverage collection does not work for OS X atm
218 if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
219 make gcov
220 make lcov
221 bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports"
222 fi
223 # Go to release build
224 cd ../Build-Release
225 make -j 2
226 CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2