• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1language: cpp
2
3branches:
4  except:
5  - /dev-appveyor.*/
6
7common_sources: &all_sources
8  - ubuntu-toolchain-r-test
9  - llvm-toolchain-trusty
10  - llvm-toolchain-trusty-3.9
11  - llvm-toolchain-trusty-4.0
12  - llvm-toolchain-xenial-5.0
13  - llvm-toolchain-xenial-6.0
14
15matrix:
16  include:
17
18    # 1/ Linux Clang Builds
19    - os: linux
20      compiler: clang
21      addons:
22        apt:
23          sources: *all_sources
24          packages: ['clang-3.5']
25      env: COMPILER='clang++-3.5'
26
27    - os: linux
28      compiler: clang
29      addons:
30        apt:
31          sources: *all_sources
32          packages: ['clang-3.6']
33      env: COMPILER='clang++-3.6'
34
35    # Clang 3.7 is intentionally skipped as we cannot get it easily on
36    # TravisCI container
37
38    - os: linux
39      compiler: clang
40      addons:
41        apt:
42          sources: *all_sources
43          packages: ['lcov', 'clang-3.8']
44      env: COMPILER='clang++-3.8'
45
46    - os: linux
47      compiler: clang
48      addons:
49          apt:
50              sources: *all_sources
51              packages: ['clang-3.9']
52      env: COMPILER='clang++-3.9'
53
54    - os: linux
55      compiler: clang
56      addons:
57          apt:
58              sources: *all_sources
59              packages: ['clang-4.0']
60      env: COMPILER='clang++-4.0'
61
62    - os: linux
63      dist: xenial
64      compiler: clang
65      addons:
66          apt:
67              sources: *all_sources
68              packages: ['clang-5.0']
69      env: COMPILER='clang++-5.0'
70
71    - os: linux
72      dist: xenial
73      compiler: clang
74      addons:
75          apt:
76              sources: *all_sources
77              packages: ['clang-6.0']
78      env: COMPILER='clang++-6.0'
79
80    # 2/ Linux GCC Builds
81    - os: linux
82      compiler: gcc
83      addons:
84        apt:
85         sources: *all_sources
86         packages: ['g++-4.8']
87      env: COMPILER='g++-4.8'
88
89    - os: linux
90      compiler: gcc
91      addons:
92        apt:
93          sources: *all_sources
94          packages: ['g++-4.9']
95      env: COMPILER='g++-4.9'
96
97    - os: linux
98      compiler: gcc
99      addons:
100        apt:
101          sources: *all_sources
102          packages: ['g++-5']
103      env: COMPILER='g++-5'
104
105    - os: linux
106      compiler: gcc
107      addons: &gcc6
108        apt:
109          sources: *all_sources
110          packages: ['g++-6']
111      env: COMPILER='g++-6'
112
113    - os: linux
114      compiler: gcc
115      addons: &gcc7
116        apt:
117          sources: *all_sources
118          packages: ['g++-7']
119      env: COMPILER='g++-7'
120
121    - os: linux
122      compiler: gcc
123      addons: &gcc8
124        apt:
125          sources: *all_sources
126          packages: ['g++-8']
127      env: COMPILER='g++-8'
128
129    # 3b/ Linux C++14 Clang builds
130    # Note that we need newer libstdc++ for C++14 support
131    - os: linux
132      compiler: clang
133      addons:
134          apt:
135              packages: ['clang-3.8', 'libstdc++-6-dev']
136              sources:
137                  - ubuntu-toolchain-r-test
138                  - llvm-toolchain-trusty
139      env: COMPILER='clang++-3.8' CPP14=1
140
141    - os: linux
142      compiler: clang
143      addons:
144          apt:
145              sources: *all_sources
146              packages: ['clang-3.9', 'libstdc++-6-dev']
147      env: COMPILER='clang++-3.9' CPP14=1
148
149    - os: linux
150      compiler: clang
151      addons:
152          apt:
153              sources: *all_sources
154              packages: ['clang-4.0', 'libstdc++-6-dev']
155      env: COMPILER='clang++-4.0' CPP14=1
156
157    - os: linux
158      dist: xenial
159      compiler: clang
160      addons:
161          apt:
162              sources: *all_sources
163              packages: ['clang-5.0', 'libstdc++-6-dev']
164      env: COMPILER='clang++-5.0' CPP14=1
165
166    - os: linux
167      dist: xenial
168      compiler: clang
169      addons:
170          apt:
171              sources: *all_sources
172              packages: ['clang-6.0', 'libstdc++-6-dev']
173      env: COMPILER='clang++-6.0' CPP14=1
174
175
176    # 4a/ Linux C++14 GCC builds
177    - os: linux
178      compiler: gcc
179      addons: *gcc6
180      env: COMPILER='g++-6' CPP14=1
181
182    - os: linux
183      compiler: gcc
184      addons: *gcc7
185      env: COMPILER='g++-7' CPP14=1
186
187    - os: linux
188      compiler: gcc
189      addons: *gcc8
190      env: COMPILER='g++-8' CPP14=1
191
192    # 5/ OSX Clang Builds
193    - os: osx
194      osx_image: xcode7.3
195      compiler: clang
196      env: COMPILER='clang++'
197
198    - os: osx
199      osx_image: xcode8
200      compiler: clang
201      env: COMPILER='clang++'
202
203    - os: osx
204      osx_image: xcode9
205      compiler: clang
206      env: COMPILER='clang++'
207
208    - os: osx
209      osx_image: xcode9.1
210      compiler: clang
211      env: COMPILER='clang++'
212
213    - os: osx
214      osx_image: xcode9.1
215      compiler: clang
216      env: COMPILER='clang++' CPP14=1
217
218    # 6/ Special builds -- examples, coverage, valgrind, etc.
219    - os: linux
220      compiler: gcc
221      addons:
222        apt:
223          sources: *all_sources
224          packages: ['lcov', 'g++-7']
225      env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
226
227    - os: linux
228      compiler: clang
229      addons:
230        apt:
231          packages: ['clang-3.8', 'lcov']
232          sources:
233            - ubuntu-toolchain-r-test
234            - llvm-toolchain-trusty
235      env: COMPILER='clang++-3.8' EXAMPLES=1 COVERAGE=1 EXTRAS=1
236
237    - os: linux
238      compiler: gcc
239      addons:
240        apt:
241          sources: *all_sources
242          packages: ['valgrind', 'lcov', 'g++-7']
243      env: COMPILER='g++-7' CPP14=1 VALGRIND=1
244
245    - os: osx
246      osx_image: xcode9.1
247      compiler: clang
248      env: COMPILER='clang++' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
249
250    # 7/ C++17 builds
251    - os: linux
252      compiler: gcc
253      addons: *gcc7
254      env: COMPILER='g++-7' CPP17=1
255
256    - os: linux
257      compiler: gcc
258      addons: *gcc7
259      env: COMPILER='g++-7' EXAMPLES=1 COVERAGE=1 EXTRAS=1 CPP17=1
260
261    - os: linux
262      dist: xenial
263      compiler: clang
264      addons:
265          apt:
266              sources: *all_sources
267              packages: ['clang-6.0', 'libstdc++-8-dev']
268      env: COMPILER='clang++-6.0' CPP17=1
269
270    - os: linux
271      dist: xenial
272      compiler: clang
273      addons:
274          apt:
275              sources: *all_sources
276              packages: ['clang-6.0', 'libstdc++-8-dev']
277      env: COMPILER='clang++-6.0' CPP17=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
278
279    # 8/ Conan
280    - language: python
281      python:
282        - "3.7"
283      dist: xenial
284      install:
285        - pip install conan-package-tools
286      env:
287        - CONAN_GCC_VERSIONS=8
288        - CONAN_DOCKER_IMAGE=conanio/gcc8
289      script:
290        - python .conan/build.py
291
292install:
293  - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
294  - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
295  - |
296    if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
297      CMAKE_URL="http://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz"
298      mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
299      export PATH=${DEPS_DIR}/cmake/bin:${PATH}
300    elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
301        which cmake || brew install cmake;
302    fi
303
304before_script:
305  - export CXX=${COMPILER}
306  - cd ${TRAVIS_BUILD_DIR}
307  # Regenerate single header file, so it is tested in the examples...
308  - python scripts/generateSingleHeader.py
309
310  - |
311    if [[ ${CPP17} -eq 1 ]]; then
312      export CPP_STANDARD=17
313    elif [[ ${CPP14} -eq 1 ]]; then
314      export CPP_STANDARD=14
315    else
316      export CPP_STANDARD=11
317    fi
318
319    # Use Debug builds for running Valgrind and building examples
320  - cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DCATCH_USE_VALGRIND=${VALGRIND} -DCATCH_BUILD_EXAMPLES=${EXAMPLES} -DCATCH_ENABLE_COVERAGE=${COVERAGE} -DCATCH_BUILD_EXTRA_TESTS=${EXTRAS} -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF
321    # Don't bother with release build for coverage build
322  - cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF
323
324
325script:
326  - cd Build-Debug
327  - make -j 2
328  - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
329    # Coverage collection does not work for OS X atm
330  - |
331    if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ "${COVERAGE}" == "1" ]]; then
332      make gcov
333      make lcov
334      bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports"
335    fi
336  - # Go to release build
337  - cd ../Build-Release
338  - make -j 2
339  - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
340