1# Copyright 2016-2018 Peter Dimov
2# Distributed under the Boost Software License, Version 1.0.
3# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
4
5language: cpp
6
7dist: xenial
8
9branches:
10  only:
11    - master
12    - develop
13    - /feature\/.*/
14
15env:
16  matrix:
17    - BOGUS_JOB=true
18
19matrix:
20
21  exclude:
22    - env: BOGUS_JOB=true
23
24  include:
25    - os: linux
26      compiler: g++
27      env: TOOLSET=gcc COMPILER=g++ CXXSTD=03,11
28
29    - os: linux
30      compiler: g++-4.4
31      env: TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98,0x
32      addons:
33        apt:
34          packages:
35            - g++-4.4
36          sources:
37            - ubuntu-toolchain-r-test
38
39    - os: linux
40      compiler: g++-4.6
41      env: TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x
42      addons:
43        apt:
44          packages:
45            - g++-4.6
46          sources:
47            - ubuntu-toolchain-r-test
48
49    - os: linux
50      compiler: g++-4.7
51      env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11
52      addons:
53        apt:
54          packages:
55            - g++-4.7
56          sources:
57            - ubuntu-toolchain-r-test
58
59    - os: linux
60      compiler: g++-4.8
61      env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11
62      addons:
63        apt:
64          packages:
65            - g++-4.8
66          sources:
67            - ubuntu-toolchain-r-test
68
69    - os: linux
70      compiler: g++-4.9
71      env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11
72      addons:
73        apt:
74          packages:
75            - g++-4.9
76          sources:
77            - ubuntu-toolchain-r-test
78
79    - os: linux
80      compiler: g++-5
81      env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z
82      addons:
83        apt:
84          packages:
85            - g++-5
86          sources:
87            - ubuntu-toolchain-r-test
88
89    - os: linux
90      compiler: g++-6
91      env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z
92      addons:
93        apt:
94          packages:
95            - g++-6
96          sources:
97            - ubuntu-toolchain-r-test
98
99    - os: linux
100      compiler: g++-7
101      env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
102      addons:
103        apt:
104          packages:
105            - g++-7
106          sources:
107            - ubuntu-toolchain-r-test
108
109    - os: linux
110      compiler: g++-8
111      env: TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17,2a
112      addons:
113        apt:
114          packages:
115            - g++-8
116          sources:
117            - ubuntu-toolchain-r-test
118
119    - os: linux
120      compiler: g++-9
121      env: TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17,2a
122      addons:
123        apt:
124          packages:
125            - g++-9
126          sources:
127            - ubuntu-toolchain-r-test
128
129    - os: linux
130      compiler: g++-9
131      env: UBSAN=1 TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17,2a UBSAN_OPTIONS=print_stacktrace=1 LINKFLAGS=-fuse-ld=gold
132      addons:
133        apt:
134          packages:
135            - g++-9
136          sources:
137            - ubuntu-toolchain-r-test
138
139    - os: linux
140      compiler: clang++
141      env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11
142
143    - os: linux
144      dist: trusty
145      compiler: /usr/bin/clang++
146      env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
147      addons:
148        apt:
149          packages:
150            - clang-3.3
151
152    - os: linux
153      dist: trusty
154      compiler: /usr/bin/clang++
155      env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
156      addons:
157        apt:
158          packages:
159            - clang-3.4
160
161    - os: linux
162      dist: trusty
163      compiler: clang++-3.5
164      env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11,14,1z
165      addons:
166        apt:
167          packages:
168            - clang-3.5
169          sources:
170            - ubuntu-toolchain-r-test
171
172    - os: linux
173      compiler: clang++-3.6
174      env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z
175      addons:
176        apt:
177          packages:
178            - clang-3.6
179          sources:
180            - ubuntu-toolchain-r-test
181
182    - os: linux
183      compiler: clang++-3.7
184      env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z
185      addons:
186        apt:
187          packages:
188            - clang-3.7
189          sources:
190            - ubuntu-toolchain-r-test
191
192    - os: linux
193      compiler: clang++-3.8
194      env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z
195      addons:
196        apt:
197          packages:
198            - clang-3.8
199          sources:
200            - ubuntu-toolchain-r-test
201
202    - os: linux
203      compiler: clang++-3.9
204      env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z
205      addons:
206        apt:
207          packages:
208            - clang-3.9
209          sources:
210            - ubuntu-toolchain-r-test
211
212    - os: linux
213      compiler: clang++-4.0
214      env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z
215      addons:
216        apt:
217          packages:
218            - clang-4.0
219          sources:
220            - ubuntu-toolchain-r-test
221
222    - os: linux
223      compiler: clang++-5.0
224      env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z
225      addons:
226        apt:
227          packages:
228            - clang-5.0
229          sources:
230            - ubuntu-toolchain-r-test
231
232    - os: linux
233      compiler: clang++-6.0
234      env: TOOLSET=clang COMPILER=clang++-6.0 CXXSTD=03,11,14,17
235      addons:
236        apt:
237          packages:
238            - clang-6.0
239          sources:
240            - ubuntu-toolchain-r-test
241
242    - os: linux
243      compiler: clang++-7
244      env: TOOLSET=clang COMPILER=clang++-7 CXXSTD=03,11,14,17,2a
245      addons:
246        apt:
247          packages:
248            - clang-7
249          sources:
250            - ubuntu-toolchain-r-test
251            - llvm-toolchain-xenial-7
252
253    - os: linux
254      compiler: clang++-8
255      env: TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17,2a
256      addons:
257        apt:
258          packages:
259            - clang-8
260          sources:
261            - ubuntu-toolchain-r-test
262            - llvm-toolchain-xenial-8
263
264    - os: linux
265      compiler: clang++-9
266      env: TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11,14,17,2a
267      addons:
268        apt:
269          packages:
270            - clang-9
271          sources:
272            - ubuntu-toolchain-r-test
273            - sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
274              key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
275
276    - os: linux
277      compiler: clang++-8
278      env: UBSAN=1 TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17,2a UBSAN_OPTIONS=print_stacktrace=1
279      addons:
280        apt:
281          packages:
282            - clang-8
283          sources:
284            - ubuntu-toolchain-r-test
285            - llvm-toolchain-xenial-8
286
287    - os: linux
288      dist: trusty
289      compiler: clang++-libc++
290      env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z
291      addons:
292        apt:
293          packages:
294            - libc++-dev
295
296    - os: linux
297      dist: trusty
298      compiler: clang++-libc++
299      env: UBSAN=1 TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z UBSAN_OPTIONS=print_stacktrace=1
300      addons:
301        apt:
302          packages:
303            - libc++-dev
304
305    - os: osx
306      compiler: clang++
307      env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
308
309    - os: osx
310      compiler: clang++
311      env: UBSAN=1 TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z UBSAN_OPTIONS=print_stacktrace=1
312
313    - os: linux
314      env: CMAKE=1
315      script:
316        - mkdir __build__ && cd __build__
317        - cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES=throw_exception ..
318        - ctest --output-on-failure -R boost_throw_exception
319
320    - os: linux
321      env: CMAKE_SUBDIR=1
322      install:
323        - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
324        - git clone -b $BOOST_BRANCH https://github.com/boostorg/assert.git ../assert
325        - git clone -b $BOOST_BRANCH https://github.com/boostorg/config.git ../config
326        - git clone -b $BOOST_BRANCH https://github.com/boostorg/core.git ../core
327      script:
328        - cd test/cmake_subdir_test && mkdir __build__ && cd __build__
329        - cmake ..
330        - cmake --build .
331        - cmake --build . --target check
332
333    - os: linux
334      env: CMAKE_INSTALL=1
335      script:
336        - pip install --user cmake
337        - mkdir __build__ && cd __build__
338        - cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES=throw_exception -DCMAKE_INSTALL_PREFIX=~/.local ..
339        - cmake --build . --target install
340        - cd ../libs/throw_exception/test/cmake_install_test && mkdir __build__ && cd __build__
341        - cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
342        - cmake --build .
343        - cmake --build . --target check
344
345install:
346  - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
347  - cd ..
348  - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
349  - cd boost-root
350  - git submodule update --init tools/boostdep
351  - cp -r $TRAVIS_BUILD_DIR/* libs/throw_exception
352  - python tools/boostdep/depinst/depinst.py throw_exception
353  - ./bootstrap.sh
354  - ./b2 headers
355
356script:
357  - |-
358    echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
359  - ./b2 -j 3 libs/throw_exception/test toolset=$TOOLSET cxxstd=$CXXSTD variant=debug,release ${UBSAN:+cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=undefined linkflags=-fsanitize=undefined define=UBSAN=1 debug-symbols=on} ${LINKFLAGS:+linkflags=$LINKFLAGS}
360
361notifications:
362  email:
363    on_success: always
364