#============================================================================== # Copyright (c) 2016-2021 Nikita Kniazev # # Use, modification and distribution is subject to the Boost Software # License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) #============================================================================== language: cpp sudo: false addon_shortcuts: clang-12: &clang-12 apt: sources: - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main' key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' packages: - clang-12 - libc++-12-dev - libc++abi-12-dev gcc-11: &gcc-11 apt: sources: - sourceline: 'ppa:ubuntu-toolchain-r/test' packages: - g++-11 os: linux dist: bionic env: global: - PROJECT=libs/spirit - BOOST_ROOT=$HOME/boost - BOOST_BUILD_PATH=$HOME/build-boost matrix: include: ### Spirit 3 - { env: 'STD=14 JOB=test/x3', compiler: clang-12, addons: *clang-12 } - { env: 'STD=14 JOB=test/x3', compiler: gcc-11, addons: *gcc-11 } ### Spirit 2 ## Clang # 11 - { env: 'STD=11 JOB=test/qi', compiler: clang-12, addons: *clang-12 } - { env: 'STD=11 JOB=test/karma', compiler: clang-12, addons: *clang-12 } - { env: 'STD=11 JOB=test/lex', compiler: clang-12, addons: *clang-12 } - { env: 'STD=11 JOB=test/support', compiler: clang-12, addons: *clang-12 } - { env: 'STD=11 JOB=repository/test', compiler: clang-12, addons: *clang-12 } # 03 - { env: 'STD=03 JOB=test/qi', compiler: clang-12, addons: *clang-12 } - { env: 'STD=03 JOB=test/karma', compiler: clang-12, addons: *clang-12 } - { env: 'STD=03 JOB=test/lex', compiler: clang-12, addons: *clang-12 } - { env: 'STD=03 JOB=test/support', compiler: clang-12, addons: *clang-12 } - { env: 'STD=03 JOB=repository/test', compiler: clang-12, addons: *clang-12 } ## GCC # 11 - { env: 'STD=11 JOB=test/qi', compiler: gcc-11, addons: *gcc-11 } - { env: 'STD=11 JOB=test/karma', compiler: gcc-11, addons: *gcc-11 } - { env: 'STD=11 JOB=test/lex', compiler: gcc-11, addons: *gcc-11 } - { env: 'STD=11 JOB=test/support', compiler: gcc-11, addons: *gcc-11 } - { env: 'STD=11 JOB=repository/test', compiler: gcc-11, addons: *gcc-11 } # 03 - { env: 'STD=03 JOB=test/qi', compiler: gcc-11, addons: *gcc-11 } - { env: 'STD=03 JOB=test/karma', compiler: gcc-11, addons: *gcc-11 } - { env: 'STD=03 JOB=test/lex', compiler: gcc-11, addons: *gcc-11 } - { env: 'STD=03 JOB=test/support', compiler: gcc-11, addons: *gcc-11 } - { env: 'STD=03 JOB=repository/test', compiler: gcc-11, addons: *gcc-11 } ### Spirit 1 - { env: 'STD=03 JOB=classic/test', compiler: clang-12, addons: *clang-12 } - { env: 'STD=03 JOB=classic/test', compiler: gcc-11, addons: *gcc-11 } cache: ccache before_install: - export CACHE_NAME=$TRAVIS_OS_NAME-$TOOLSET-$STD-$JOB - export PATH=$BOOST_ROOT:$PATH - if [[ "$TRAVIS_COMPILER" =~ ^clang- ]]; then export STDLIB=stdlib=libc++ ; fi - | # Creating ~/user-config.jam file sed 's/^ //' > ~/user-config.jam << 'EOF' import feature ; import os ; import regex ; import toolset ; local TOOLSET = [ os.environ TRAVIS_COMPILER ] ; local toolset-parts = [ regex.split $(TOOLSET) "-" ] ; local toolset-name = $(toolset-parts[1]) ; local toolset-feature = $(toolset-parts[2-]:J="-") ; local cxx ; switch $(toolset-name) { case gcc : cxx ?= [ regex.replace $(TOOLSET) "gcc" "g++" ] ; case clang : cxx ?= [ regex.replace $(TOOLSET) "clang" "clang++" ] ; case * : EXIT "user-config: Unsupported toolset $(toolset-name)" ; } using $(toolset-name) : $(toolset-feature) : ccache $(cxx) ; # Release variant with enabled asserts variant sanitize : speed off full off ; - | # Determining the root branch if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then export BRANCH=$TRAVIS_BRANCH else # It is a pull request. Retrieve the base branch from GitHub GH_PR_API=https://api.github.com/repos/$TRAVIS_REPO_SLUG/pulls/$TRAVIS_PULL_REQUEST export BRANCH=`curl -s $GH_PR_API | jq -r .head.ref`; fi if [[ ! "$BRANCH" =~ ^(master|develop)$ ]]; then # Travis has been triggered not from our main branches. # Find out the base branch from the git history # TODO: Not implemented yet, but in most cases it will be develop branch export BRANCH=develop fi echo Root branch is $BRANCH # Dump environment variables - env # Sadly git's --shallow-submodules has hardcoded depth of 1 commit # Patch the git binary with a little more depth to deal with boost-commitbot's lag - sed 's/--depth=1/--depth=9/g' `which git` > ~/git && chmod +x ~/git # Checkout Boost - ~/git clone -j10 --branch=$BRANCH --depth=1 --quiet --recurse-submodules=":(exclude)$PROJECT" --shallow-submodules https://github.com/boostorg/boost.git $BOOST_ROOT - pushd $BOOST_ROOT # Remove the empty folder - rm -rf $PROJECT - ./bootstrap.sh --with-toolset=clang - ./b2 headers # Move the repository to boost/libs and make a link to previous place - mv $TRAVIS_BUILD_DIR $PROJECT - ln -s $PROJECT $TRAVIS_BUILD_DIR - cd $PROJECT - cd $JOB script: - b2 link=shared threading=multi variant=release,sanitize toolset=$TRAVIS_COMPILER cxxstd=$STD $STDLIB warnings=extra warnings-as-errors=on define=BOOST_SPIRIT_X3_HIDE_CXX17_WARNING