# Copyright 2016, 2017 Peter Dimov # Copyright 2019 - 2020 Andrey Semashev # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) language: cpp sudo: false python: "2.7" branches: only: - master - develop - /feature\/.*/ env: matrix: - BOGUS_JOB=true matrix: exclude: - env: BOGUS_JOB=true include: # gcc, Linux - os: linux dist: trusty compiler: gcc-4.4 env: TOOLSET=gcc COMPILER=g++-4.4 CXXSTD64=98,0x CXXSTD32=98,0x INSTRUCTION_SET=core2 addons: apt: packages: - g++-4.4 - g++-4.4-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - os: linux dist: trusty compiler: gcc-4.6 env: TOOLSET=gcc COMPILER=g++-4.6 CXXSTD64=03,0x CXXSTD32=03,0x INSTRUCTION_SET=core2 addons: apt: packages: - g++-4.6 - g++-4.6-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - os: linux dist: trusty compiler: gcc-4.7 env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD64=03,11 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - g++-4.7 - g++-4.7-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - os: linux dist: xenial compiler: gcc-4.8 env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD64=03,11 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - g++-4.8 - g++-4.8-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - os: linux dist: xenial compiler: gcc-4.9 env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD64=03,11 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - g++-4.9 - g++-4.9-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - os: linux dist: xenial compiler: gcc-5 env: TOOLSET=gcc COMPILER=g++-5 CXXSTD64=03,11,14 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - g++-5 - g++-5-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - os: linux dist: xenial compiler: gcc-6 env: TOOLSET=gcc COMPILER=g++-6 CXXSTD64=03,11,14,1z CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - g++-6 - g++-6-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - os: linux dist: xenial compiler: gcc-7 env: TOOLSET=gcc COMPILER=g++-7 CXXSTD64=03,11,14,17 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - g++-7 - g++-7-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - os: linux dist: xenial compiler: gcc-8 env: TOOLSET=gcc COMPILER=g++-8 CXXSTD64=03,11,14,17,03-gnu,11-gnu,14-gnu,17-gnu CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - g++-8 - g++-8-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - os: linux dist: bionic compiler: gcc-9 env: TOOLSET=gcc COMPILER=g++-9 CXXSTD64=03,11,14,17,03-gnu,11-gnu,14-gnu,17-gnu CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - g++-9 - g++-9-multilib - linux-libc-dev:i386 sources: - sourceline: "ppa:ubuntu-toolchain-r/test" - os: linux dist: bionic compiler: gcc-10 env: TOOLSET=gcc COMPILER=g++-10 CXXSTD64=03,11,14,17,20,03-gnu,11-gnu,14-gnu,17-gnu,20-gnu CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - g++-10 - g++-10-multilib - linux-libc-dev:i386 sources: - sourceline: "ppa:ubuntu-toolchain-r/test" - os: linux dist: bionic compiler: gcc-UBSAN env: UBSAN=1 TOOLSET=gcc COMPILER=g++-10 CXXSTD64=03,11,14,17,20 INSTRUCTION_SET=core2 UBSAN_OPTIONS=print_stacktrace=1 BUILD_VARIANT=debug LINKFLAGS=-fuse-ld=gold addons: apt: packages: - g++-10 sources: - sourceline: "ppa:ubuntu-toolchain-r/test" # clang, Linux - os: linux dist: trusty compiler: clang-3.5 env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD64=03,11 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-3.5 - g++-4.9-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.5 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: trusty compiler: clang-3.6 env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD64=03,11 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-3.6 - g++-5-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.6 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: trusty compiler: clang-3.7 env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD64=03,11 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-3.7 - g++-5-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.7 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: xenial compiler: clang-3.8 env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD64=03,11,14,1z CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-3.8 - g++-6-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-3.8 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: xenial compiler: clang-3.9 env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD64=03,11,14,1z CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-3.9 - g++-6-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-3.9 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: xenial compiler: clang-4 env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD64=03,11,14,1z CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-4.0 - g++-6-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-4.0 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" # Note: clang-5 fails int128 tests on 64-bit x86 target and float128 tests on 32-bit x86 target for some unknown reason. Does not reproduce locally. - os: linux dist: xenial compiler: clang-5 env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD64=03,11,14,1z CXXSTD32=03,11 INSTRUCTION_SET=core2 CXXFLAGS="-DBOOST_ATOMIC_TESTS_NO_INT128 -DBOOST_ATOMIC_TESTS_NO_FLOAT128" addons: apt: packages: - clang-5.0 - g++-7-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: xenial compiler: clang-6 env: TOOLSET=clang COMPILER=clang++-6.0 CXXSTD64=03,11,14,17 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-6.0 - g++-8-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: xenial compiler: clang-7 env: TOOLSET=clang COMPILER=clang++-7 CXXSTD64=03,11,14,17 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-7 - g++-8-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: xenial compiler: clang-8 env: TOOLSET=clang COMPILER=clang++-8 CXXSTD64=03,11,14,17 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-8 - g++-8-multilib - linux-libc-dev:i386 sources: - ubuntu-toolchain-r-test - sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: bionic compiler: clang-9 env: TOOLSET=clang COMPILER=clang++-9 CXXSTD64=03,11,14,17 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-9 - g++-9-multilib - linux-libc-dev:i386 sources: - sourceline: "ppa:ubuntu-toolchain-r/test" - sourceline: "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" - os: linux dist: focal compiler: clang-10 env: TOOLSET=clang COMPILER=clang++-10 CXXSTD64=03,11,14,17,20 CXXSTD32=03,11 INSTRUCTION_SET=core2 addons: apt: packages: - clang-10 - g++-9-multilib - linux-libc-dev:i386 sources: - sourceline: "ppa:ubuntu-toolchain-r/test" - sourceline: "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" # Note: clang for 32-bit targets with UBSAN emits undefined references to __mulodi4 - os: linux dist: focal compiler: clang-UBSAN env: UBSAN=1 TOOLSET=clang COMPILER=clang++-10 CXXSTD64=03,11,14,17,20 INSTRUCTION_SET=core2 UBSAN_OPTIONS=print_stacktrace=1 BUILD_VARIANT=debug addons: apt: packages: - clang-10 - g++-9-multilib - linux-libc-dev:i386 sources: - sourceline: "ppa:ubuntu-toolchain-r/test" - sourceline: "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main" key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key" # clang, OS X, 64-bit # OS X builds are slow on Travis CI # - os: osx # env: TOOLSET=clang COMPILER=clang++ CXXSTD64=03,11,14,1z # osx_image: xcode9.4 # # - os: osx # env: TOOLSET=clang COMPILER=clang++ CXXSTD64=03,11,14,1z # osx_image: xcode10.3 - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD64=03,11,14,17 INSTRUCTION_SET=core2 BUILD_VARIANT=release osx_image: xcode11.2 # clang, FreeBSD, 64-bit - os: freebsd env: TOOLSET=clang COMPILER=clang++ CXXSTD64=03,11,14,17,2a INSTRUCTION_SET=core2 BUILD_VARIANT=release # cmake self-test - os: linux env: TEST_CMAKE=1 addons: apt: packages: - cmake script: - BUILD_JOBS=`(nproc || sysctl -n hw.ncpu) 2> /dev/null` - mkdir __build_static__ && cd __build_static__ - cmake ../libs/atomic/test/test_cmake - cmake --build . --target boost_atomic_cmake_self_test -j $BUILD_JOBS - cd .. - mkdir __build_shared__ && cd __build_shared__ - cmake -DBUILD_SHARED_LIBS=On ../libs/atomic/test/test_cmake - cmake --build . --target boost_atomic_cmake_self_test -j $BUILD_JOBS install: - GIT_FETCH_JOBS=8 - BOOST_BRANCH=develop - if [ "$TRAVIS_BRANCH" = "master" ]; then BOOST_BRANCH=master; fi - cd .. - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - git submodule init tools/boostdep - git submodule init tools/build - git submodule init tools/boost_install - git submodule init libs/headers - git submodule init libs/config - git submodule update --jobs $GIT_FETCH_JOBS - cp -r $TRAVIS_BUILD_DIR/* libs/atomic - python tools/boostdep/depinst/depinst.py --git_args "--jobs $GIT_FETCH_JOBS" atomic - if [ -z "$TEST_CMAKE" ]; then ./bootstrap.sh; ./b2 headers; fi script: - |- echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam - BUILD_JOBS=`(nproc || sysctl -n hw.ncpu) 2> /dev/null` - if [ -z "$BUILD_VARIANT" ]; then BUILD_VARIANT="debug,release"; fi - if [ -n "$CXXSTD64" ]; then echo ""; echo "Testing 64-bit targets"; echo ""; ./b2 -j $BUILD_JOBS libs/atomic/test toolset=$TOOLSET variant=$BUILD_VARIANT address-model=64 cxxstd=$CXXSTD64 ${UBSAN:+cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=undefined linkflags=-fsanitize=undefined define=UBSAN=1 debug-symbols=on} ${INSTRUCTION_SET:+instruction-set="$INSTRUCTION_SET"} ${CXXFLAGS:+cxxflags="$CXXFLAGS"} ${LINKFLAGS:+linkflags="$LINKFLAGS"}; fi - if [ -n "$CXXSTD32" ]; then echo ""; echo "Testing 32-bit targets"; echo ""; ./b2 -j $BUILD_JOBS libs/atomic/test toolset=$TOOLSET variant=$BUILD_VARIANT address-model=32 cxxstd=$CXXSTD32 ${UBSAN:+cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=undefined linkflags=-fsanitize=undefined define=UBSAN=1 debug-symbols=on} ${INSTRUCTION_SET:+instruction-set="$INSTRUCTION_SET"} ${CXXFLAGS:+cxxflags="$CXXFLAGS"} ${LINKFLAGS:+linkflags="$LINKFLAGS"}; fi notifications: email: on_success: always