# Copyright 2020 Evan Miller # Copyright 2020 Matt Borland # 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) name: CI on: push: branches: - master - develop - feature/** pull_request: release: types: [published, created, edited] concurrency: group: ${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: ubuntu-noble: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: compiler: [ g++-14, clang++-16, clang++-17, clang++-18 ] standard: [ c++20 ] suite: [ github_ci_block_1, github_ci_block_2 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Set TOOLSET run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV - name: Add repository continue-on-error: true id: addrepo run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo continue-on-error: true id: retry1 if: steps.addrepo.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo 2 continue-on-error: true id: retry2 if: steps.retry1.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Install packages run: sudo apt-get install -y g++-13 g++-14 clang-16 clang-17 clang-18 libgmp-dev libmpfr-dev libfftw3-dev - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/math working-directory: ../boost-root - name: Install deps run: python tools/boostdep/depinst/depinst.py math -I example -I tools working-directory: ../boost-root - name: Bootstrap run: ./bootstrap.sh working-directory: ../boost-root - name: Generate headers run: ./b2 headers working-directory: ../boost-root - name: Generate user config run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} : -std=${{ matrix.standard }} ;" > ~/user-config.jam' working-directory: ../boost-root - name: Config info install run: ../../../b2 config_info_travis_install toolset=$TOOLSET working-directory: ../boost-root/libs/config/test - name: Config info run: ./config_info_travis working-directory: ../boost-root/libs/config/test - name: Test run: ../../../b2 toolset=$TOOLSET ${{ matrix.suite }} define=CI_SUPPRESS_KNOWN_ISSUES define=SLOW_COMPILER define=BOOST_MATH_RUN_MP_TESTS working-directory: ../boost-root/libs/math/test ubuntu-jammy: runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: compiler: [ g++-12, clang++-14, clang++-15 ] standard: [ c++14, c++17 ] suite: [ github_ci_block_1, github_ci_block_2 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Set TOOLSET run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV - name: Add repository continue-on-error: true id: addrepo run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo continue-on-error: true id: retry1 if: steps.addrepo.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo 2 continue-on-error: true id: retry2 if: steps.retry1.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Install packages run: sudo apt-get install -y g++-12 clang-14 clang-15 libgmp-dev libmpfr-dev libfftw3-dev - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/math working-directory: ../boost-root - name: Install deps run: python tools/boostdep/depinst/depinst.py math -I example -I tools working-directory: ../boost-root - name: Bootstrap run: ./bootstrap.sh working-directory: ../boost-root - name: Generate headers run: ./b2 headers working-directory: ../boost-root - name: Generate user config run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} : -std=${{ matrix.standard }} ;" > ~/user-config.jam' working-directory: ../boost-root - name: Config info install run: ../../../b2 config_info_travis_install toolset=$TOOLSET working-directory: ../boost-root/libs/config/test - name: Config info run: ./config_info_travis working-directory: ../boost-root/libs/config/test - name: Test run: ../../../b2 toolset=$TOOLSET ${{ matrix.suite }} define=CI_SUPPRESS_KNOWN_ISSUES define=SLOW_COMPILER define=BOOST_MATH_RUN_MP_TESTS working-directory: ../boost-root/libs/math/test ubuntu-focal-no-eh: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: compiler: [ g++-13, clang++-19 ] standard: [ c++14, c++17, c++20, c++23 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Set TOOLSET run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV - name: Add repository continue-on-error: true id: addrepo run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo continue-on-error: true id: retry1 if: steps.addrepo.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo 2 continue-on-error: true id: retry2 if: steps.retry1.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Install packages run: sudo apt-get install -y g++-13 clang-19 libgmp-dev libmpfr-dev libfftw3-dev - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/math working-directory: ../boost-root - name: Install deps run: python tools/boostdep/depinst/depinst.py math -I example -I tools working-directory: ../boost-root - name: Bootstrap run: ./bootstrap.sh working-directory: ../boost-root - name: Generate headers run: ./b2 headers working-directory: ../boost-root - name: Generate user config run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} : -std=${{ matrix.standard }} ;" > ~/user-config.jam' working-directory: ../boost-root - name: Config info install run: ../../../b2 config_info_travis_install toolset=$TOOLSET working-directory: ../boost-root/libs/config/test - name: Config info run: ./config_info_travis working-directory: ../boost-root/libs/config/test - name: Test run: ../../../b2 toolset=$TOOLSET no_eh_tests exception-handling=off rtti=off define=CI_SUPPRESS_KNOWN_ISSUES define=SLOW_COMPILER working-directory: ../boost-root/libs/math/test macos: runs-on: macos-latest strategy: fail-fast: false matrix: toolset: [ clang ] standard: [ 14, 17, 20 ] suite: [ github_ci_block_1, github_ci_block_2 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/math working-directory: ../boost-root - name: Install deps run: python tools/boostdep/depinst/depinst.py math -I example -I tools working-directory: ../boost-root - name: Bootstrap run: ./bootstrap.sh working-directory: ../boost-root - name: Generate headers run: ./b2 headers working-directory: ../boost-root - name: Config info install run: ../../../b2 config_info_travis_install toolset=${{ matrix.toolset }} cxxstd=${{ matrix.standard }} working-directory: ../boost-root/libs/config/test - name: Config info run: ./config_info_travis working-directory: ../boost-root/libs/config/test - name: Test run: ../../../b2 toolset=${{ matrix.toolset }} cxxstd=${{ matrix.standard }} ${{ matrix.suite }} define=CI_SUPPRESS_KNOWN_ISSUES define=SLOW_COMPILER working-directory: ../boost-root/libs/math/test windows: runs-on: windows-2019 defaults: run: shell: cmd env: ARGS: toolset=${{ matrix.toolset }} address-model=64 cxxstd=${{ matrix.standard }} ARGSLATEST: toolset=${{ matrix.toolset }} address-model=64 cxxstd=latest strategy: fail-fast: false matrix: toolset: [ msvc-14.2 ] standard: [ 14, 17 ] suite: [ github_ci_block_1, github_ci_block_2 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\math working-directory: ../boost-root - name: Install deps run: python tools/boostdep/depinst/depinst.py math -I example -I tools working-directory: ../boost-root - name: Bootstrap run: bootstrap working-directory: ../boost-root - name: Generate headers run: b2 headers working-directory: ../boost-root - name: Config info install run: ..\..\..\b2 config_info_travis_install %ARGS% working-directory: ../boost-root/libs/config/test - name: Config info run: config_info_travis working-directory: ../boost-root/libs/config/test - name: Test std-14 vc140 and std-14-17 vc142 if: ${{ matrix.toolset != 'msvc-14.0' || matrix.standard != '17' }} run: ..\..\..\b2 --hash %ARGS% define=CI_SUPPRESS_KNOWN_ISSUES debug-symbols=off ${{ matrix.suite }} pch=off working-directory: ../boost-root/libs/math/test - name: Test std-latest vc140 if: ${{ matrix.toolset == 'msvc-14.0' && matrix.standard == '17' }} run: ..\..\..\b2 --hash %ARGSLATEST% define=CI_SUPPRESS_KNOWN_ISSUES debug-symbols=off ${{ matrix.suite }} pch=off working-directory: ../boost-root/libs/math/test windows_gcc: runs-on: windows-2019 defaults: run: shell: cmd env: ARGS: toolset=${{ matrix.toolset }} address-model=64 cxxstd=${{ matrix.standard }} strategy: fail-fast: false matrix: toolset: [ gcc ] standard: [ 14, 17 ] suite: [ github_ci_block_1, github_ci_block_2 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\math working-directory: ../boost-root - name: Install deps run: python tools/boostdep/depinst/depinst.py math -I example -I tools working-directory: ../boost-root - name: Bootstrap run: bootstrap working-directory: ../boost-root - name: Generate headers run: b2 headers working-directory: ../boost-root - name: Config info install run: ..\..\..\b2 config_info_travis_install %ARGS% working-directory: ../boost-root/libs/config/test - name: Config info run: config_info_travis working-directory: ../boost-root/libs/config/test - name: Test run: ..\..\..\b2 --hash %ARGS% define=CI_SUPPRESS_KNOWN_ISSUES ${{ matrix.suite }} working-directory: ../boost-root/libs/math/test MSVC2022: runs-on: windows-2022 defaults: run: shell: cmd env: ARGS: address-model=64 cxxstd=${{ matrix.standard }} strategy: fail-fast: false matrix: toolset: [ msvc-14.3, clang-win ] standard: [ 14, 17, latest ] suite: [ github_ci_block_1, github_ci_block_2 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\math working-directory: ../boost-root - name: Install deps run: python tools/boostdep/depinst/depinst.py math -I example -I tools working-directory: ../boost-root - name: Bootstrap run: bootstrap working-directory: ../boost-root - name: Generate headers run: b2 headers working-directory: ../boost-root - name: Config info install run: ..\..\..\b2 config_info_travis_install %ARGS% working-directory: ../boost-root/libs/config/test - name: Config info run: config_info_travis working-directory: ../boost-root/libs/config/test - name: Test run: ..\..\..\b2 --hash %ARGS% define=CI_SUPPRESS_KNOWN_ISSUES ${{ matrix.suite }} pch=off working-directory: ../boost-root/libs/math/test cygwin: runs-on: windows-latest strategy: fail-fast: false matrix: compiler: [ g++-11 ] standard: [ c++17 ] suite: [ github_ci_block_1, github_ci_block_2 ] env: TOOLSET: gcc steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Install Cygwin run: choco install -y cygwin - name: Install Package Manager run: choco install -y cyg-get - name: Install Packages run: cyg-get git gcc-core gcc-g++ python39 libgmp-devel libmpfr-devel libfftw3-devel - name: Checkout main boost run: C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE") && git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root' - name: Update tools/boostdep run: C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE")/../boost-root && git submodule update --init tools/boostdep' - name: Copy files run: C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE") && cp -r * ../boost-root/libs/math' - name: Install deps run: C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE")/../boost-root && python tools/boostdep/depinst/depinst.py math -I example -I tools' - name: Bootstrap run: C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE")/../boost-root && ./bootstrap.sh' - name: Generate headers run: C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE")/../boost-root && ./b2 headers' - name: Config info install run: C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE")/../boost-root/libs/config/test && ../../../b2 config_info_travis_install toolset=$TOOLSET' - name: Config info run: C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE")/../boost-root/libs/config/test && ./config_info_travis' - name: Test run: C:\\tools\\cygwin\\bin\\bash -l -c 'cd $(cygpath -u "$GITHUB_WORKSPACE")/../boost-root/libs/math/test && ../../../b2 toolset=$TOOLSET ${{ matrix.suite }} define=CI_SUPPRESS_KNOWN_ISSUES define=SLOW_COMPILER' standalone-compile-tests-gcc: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: compiler: [ g++-13 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Add repository continue-on-error: true id: addrepo run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo continue-on-error: true id: retry1 if: steps.addrepo.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo 2 continue-on-error: true id: retry2 if: steps.retry1.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Install packages run: sudo apt-get install -y g++-13 libgmp-dev libmpfr-dev libfftw3-dev - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/math working-directory: ../boost-root - name: Run CMake run: cmake -DBUILD_TESTING=1 -DCMAKE_CXX_COMPILER=g++-13 . working-directory: ../boost-root/libs/math - name: Run Compile Tests run: make -j$((`nproc`+1)) working-directory: ../boost-root/libs/math standalone-compile-tests-clang: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: compiler: [ clang++-19 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Add repository continue-on-error: true id: addrepo run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo continue-on-error: true id: retry1 if: steps.addrepo.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo 2 continue-on-error: true id: retry2 if: steps.retry1.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Install packages run: sudo apt-get install -y clang-19 libgmp-dev libmpfr-dev libfftw3-dev libtbb-dev - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/math working-directory: ../boost-root - name: Run CMake run: cmake -DBUILD_TESTING=1 -DCMAKE_CXX_COMPILER=clang++-19 . working-directory: ../boost-root/libs/math - name: Run Compile Tests run: make -j$((`nproc`+1)) working-directory: ../boost-root/libs/math standalone-gcc: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: compiler: [ g++-13 ] standard: [ c++14, c++17, c++20, c++23 ] suite: [ github_ci_block_1, github_ci_block_2 ] steps: - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Set TOOLSET run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV - name: Add repository continue-on-error: true id: addrepo run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo continue-on-error: true id: retry1 if: steps.addrepo.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Retry Add Repo 2 continue-on-error: true id: retry2 if: steps.retry1.outcome=='failure' run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - name: Install packages run: sudo apt-get install -y g++-13 libgmp-dev libmpfr-dev libfftw3-dev - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update tools/boostdep run: git submodule update --init tools/boostdep working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/math working-directory: ../boost-root - name: Install deps run: python tools/boostdep/depinst/depinst.py math -I example -I tools working-directory: ../boost-root - name: Bootstrap run: ./bootstrap.sh working-directory: ../boost-root - name: Generate headers run: ./b2 headers working-directory: ../boost-root - name: Generate user config run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} : -std=${{ matrix.standard }} ;" > ~/user-config.jam' working-directory: ../boost-root - name: Config info install run: ../../../b2 config_info_travis_install toolset=$TOOLSET working-directory: ../boost-root/libs/config/test - name: Config info run: ./config_info_travis working-directory: ../boost-root/libs/config/test - name: Test run: ../../../b2 toolset=$TOOLSET ${{ matrix.suite }} define=CI_SUPPRESS_KNOWN_ISSUES define=SLOW_COMPILER define=BOOST_MATH_STANDALONE define=BOOST_MP_STANDALONE working-directory: ../boost-root/libs/math/test posix-cmake-test: strategy: fail-fast: false matrix: include: - os: ubuntu-22.04 runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Install packages if: matrix.install run: sudo apt install ${{matrix.install}} libgmp-dev libmpfr-dev libfftw3-dev - name: Setup Boost run: | echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY LIBRARY=${GITHUB_REPOSITORY#*/} echo LIBRARY: $LIBRARY echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV echo GITHUB_BASE_REF: $GITHUB_BASE_REF echo GITHUB_REF: $GITHUB_REF REF=${GITHUB_BASE_REF:-$GITHUB_REF} REF=${REF#refs/heads/} echo REF: $REF BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true echo BOOST_BRANCH: $BOOST_BRANCH cd .. git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root mkdir -p libs/$LIBRARY cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY git submodule update --init tools/boostdep python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY - name: Configure run: | cd ../boost-root mkdir __build__ && cd __build__ cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DBUILD_TESTING=ON .. - name: Build tests run: | cd ../boost-root/__build__ cmake --build . --target tests