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