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
10python: "2.7"
11
12branches:
13  only:
14    - master
15    - develop
16    - /feature\/.*/
17
18env:
19  matrix:
20    - BOGUS_JOB=true
21
22matrix:
23
24  exclude:
25    - env: BOGUS_JOB=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            - linux-libc-dev # needed for statx kernel syscall in the absence of glibc wrapper on bionic
136            - g++-9
137          sources:
138            - sourceline: "ppa:ubuntu-toolchain-r/test"
139
140    - os: linux
141      dist: focal
142      compiler: gcc-10
143      env: TOOLSET=gcc COMPILER=g++-10 CXXSTD=03,11,14,17,20
144      addons:
145        apt:
146          packages:
147            - g++-10
148          sources:
149            - sourceline: "ppa:ubuntu-toolchain-r/test"
150
151    - os: linux
152      dist: focal
153      compiler: gcc-UBSAN
154      env: UBSAN=1 TOOLSET=gcc COMPILER=g++-10 CXXSTD=03,11,14,17,20 UBSAN_OPTIONS=print_stacktrace=1 LINKFLAGS=-fuse-ld=gold
155      addons:
156        apt:
157          packages:
158            - g++-10
159          sources:
160            - sourceline: "ppa:ubuntu-toolchain-r/test"
161
162# clang, Linux
163    - os: linux
164      dist: trusty
165      compiler: clang-3.5
166      env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11
167      addons:
168        apt:
169          packages:
170            - clang-3.5
171            - libstdc++-4.9-dev
172          sources:
173            - ubuntu-toolchain-r-test
174            - sourceline: "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.5 main"
175              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
176
177    - os: linux
178      dist: trusty
179      compiler: clang-3.6
180      env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11
181      addons:
182        apt:
183          packages:
184            - clang-3.6
185            - libstdc++-5-dev
186          sources:
187            - ubuntu-toolchain-r-test
188            - sourceline: "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.6 main"
189              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
190
191    - os: linux
192      dist: trusty
193      compiler: clang-3.7
194      env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11
195      addons:
196        apt:
197          packages:
198            - clang-3.7
199            - libstdc++-5-dev
200          sources:
201            - ubuntu-toolchain-r-test
202            - sourceline: "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.7 main"
203              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
204
205    - os: linux
206      dist: xenial
207      compiler: clang-3.8
208      env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z
209      addons:
210        apt:
211          packages:
212            - clang-3.8
213            - libstdc++-6-dev
214          sources:
215            - ubuntu-toolchain-r-test
216            - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-3.8 main"
217              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
218
219    - os: linux
220      dist: xenial
221      compiler: clang-3.9
222      env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z
223      addons:
224        apt:
225          packages:
226            - clang-3.9
227            - libstdc++-6-dev
228          sources:
229            - ubuntu-toolchain-r-test
230            - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-3.9 main"
231              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
232
233    - os: linux
234      dist: xenial
235      compiler: clang-4
236      env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z
237      addons:
238        apt:
239          packages:
240            - clang-4.0
241            - libstdc++-6-dev
242          sources:
243            - ubuntu-toolchain-r-test
244            - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-4.0 main"
245              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
246
247    - os: linux
248      dist: xenial
249      compiler: clang-5
250      env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z
251      addons:
252        apt:
253          packages:
254            - clang-5.0
255            - libstdc++-7-dev
256          sources:
257            - ubuntu-toolchain-r-test
258            - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main"
259              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
260
261    - os: linux
262      dist: xenial
263      compiler: clang-6
264      env: TOOLSET=clang COMPILER=clang++-6.0 CXXSTD=03,11,14,17,2a
265      addons:
266        apt:
267          packages:
268            - clang-6.0
269            - libstdc++-8-dev
270          sources:
271            - ubuntu-toolchain-r-test
272            - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main"
273              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
274
275    - os: linux
276      dist: xenial
277      compiler: clang-7
278      env: TOOLSET=clang COMPILER=clang++-7 CXXSTD=03,11,14,17,2a
279      addons:
280        apt:
281          packages:
282            - clang-7
283            - libstdc++-8-dev
284          sources:
285            - ubuntu-toolchain-r-test
286            - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main"
287              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
288
289    - os: linux
290      dist: xenial
291      compiler: clang-8
292      env: TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17,2a
293      addons:
294        apt:
295          packages:
296            - clang-8
297            - libstdc++-8-dev
298          sources:
299            - ubuntu-toolchain-r-test
300            - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main"
301              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
302
303    - os: linux
304      dist: bionic
305      compiler: clang-9
306      env: TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11,14,17,2a
307      addons:
308        apt:
309          packages:
310            - linux-libc-dev # needed for statx kernel syscall in the absence of glibc wrapper on bionic
311            - clang-9
312            - libstdc++-9-dev
313          sources:
314            - sourceline: "ppa:ubuntu-toolchain-r/test"
315            - sourceline: "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main"
316              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
317
318    - os: linux
319      dist: focal
320      compiler: clang-10
321      env: TOOLSET=clang COMPILER=clang++-10 CXXSTD=03,11,14,17,20
322      addons:
323        apt:
324          packages:
325            - clang-10
326            - libstdc++-9-dev
327          sources:
328            - sourceline: "ppa:ubuntu-toolchain-r/test"
329            - sourceline: "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main"
330              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
331
332    - os: linux
333      dist: focal
334      compiler: clang-UBSAN
335      env: UBSAN=1 TOOLSET=clang COMPILER=clang++-10 CXXSTD=03,11,14,17,20 UBSAN_OPTIONS=print_stacktrace=1
336      addons:
337        apt:
338          packages:
339            - clang-10
340            - libstdc++-9-dev
341          sources:
342            - sourceline: "ppa:ubuntu-toolchain-r/test"
343            - sourceline: "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main"
344              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
345
346    - os: linux
347      dist: focal
348      compiler: clang-libc++
349      env: TOOLSET=clang COMPILER=clang++-10 CXXSTD=03,11,14,17,20 CXXFLAGS="-stdlib=libc++" LINKFLAGS="-stdlib=libc++"
350      addons:
351        apt:
352          packages:
353            - clang-10
354            - libc++-10-dev
355            - libc++abi-10-dev
356          sources:
357            - sourceline: "ppa:ubuntu-toolchain-r/test"
358            - sourceline: "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main"
359              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
360
361    - os: linux
362      dist: focal
363      compiler: clang-libc++-UBSAN
364      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++"
365      addons:
366        apt:
367          packages:
368            - clang-10
369            - libc++-10-dev
370            - libc++abi-10-dev
371          sources:
372            - sourceline: "ppa:ubuntu-toolchain-r/test"
373            - sourceline: "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main"
374              key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
375
376# clang, OS X
377# OS X builds are slow on Travis CI
378#    - os: osx
379#      env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
380#      osx_image: xcode9.4
381#
382#    - os: osx
383#      env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
384#      osx_image: xcode10.3
385
386    - os: osx
387      env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,17
388      osx_image: xcode11.2
389
390# clang, FreeBSD
391    - os: freebsd
392      env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,17,2a
393
394# cmake self-test
395    - os: linux
396      env: TEST_CMAKE=1
397      addons:
398        apt:
399          packages:
400            - cmake
401      script:
402        - BUILD_JOBS=`(nproc || sysctl -n hw.ncpu) 2> /dev/null`
403        - mkdir __build_static__ && cd __build_static__
404        - cmake ../libs/filesystem/test/test_cmake
405        - cmake --build . --target boost_filesystem_cmake_self_test -j $BUILD_JOBS
406        - cd ..
407        - mkdir __build_shared__ && cd __build_shared__
408        - cmake -DBUILD_SHARED_LIBS=On ../libs/filesystem/test/test_cmake
409        - cmake --build . --target boost_filesystem_cmake_self_test -j $BUILD_JOBS
410
411
412install:
413  - GIT_FETCH_JOBS=8
414  - BOOST_BRANCH=develop
415  - if [ "$TRAVIS_BRANCH" = "master" ]; then BOOST_BRANCH=master; fi
416  - cd ..
417  - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
418  - cd boost-root
419  - git submodule init tools/build
420  - git submodule init tools/boostdep
421  - git submodule init tools/boost_install
422  - git submodule init libs/headers
423  - git submodule init libs/config
424  - git submodule update --jobs $GIT_FETCH_JOBS
425  - cp -r $TRAVIS_BUILD_DIR/* libs/filesystem
426  - python tools/boostdep/depinst/depinst.py --git_args "--jobs $GIT_FETCH_JOBS" filesystem
427  - ./bootstrap.sh
428  - ./b2 headers
429
430script:
431  - |-
432    echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
433  - BUILD_JOBS=`(nproc || sysctl -n hw.ncpu) 2> /dev/null`
434  - ./b2 -j $BUILD_JOBS libs/filesystem/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"}
435
436notifications:
437  email:
438    on_success: always
439