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