Merge pull request #1281 from cppalliance/gdb #2521
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright 2021-2022 Andrey Semashev | |
| # Copyright 2023 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: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| - develop | |
| - feature/** | |
| concurrency: | |
| group: ${{format('{0}:{1}', github.repository, github.ref)}} | |
| cancel-in-progress: true | |
| env: | |
| GIT_FETCH_JOBS: 8 | |
| NET_RETRY_COUNT: 5 | |
| DEFAULT_BUILD_VARIANT: debug,release | |
| ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
| jobs: | |
| posix: | |
| defaults: | |
| run: | |
| shell: bash | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - toolset: gcc-7 | |
| cxxstd: "03,11,14,17" | |
| address_model: 64 | |
| os: ubuntu-latest | |
| container: ubuntu:18.04 | |
| install: | |
| - g++-7-multilib | |
| - toolset: gcc-8 | |
| cxxstd: "03,11,14,17,2a" | |
| address_model: 32,64 | |
| os: ubuntu-latest | |
| container: ubuntu:18.04 | |
| install: | |
| - g++-8-multilib | |
| - toolset: gcc-9 | |
| cxxstd: "03,11,14,17,2a" | |
| address_model: 32,64 | |
| os: ubuntu-latest | |
| container: ubuntu:20.04 | |
| install: | |
| - g++-9-multilib | |
| - toolset: gcc-9 | |
| cxxstd: "03-gnu,11-gnu,14-gnu,17-gnu,2a-gnu" | |
| address_model: 32,64 | |
| os: ubuntu-latest | |
| container: ubuntu:20.04 | |
| install: | |
| - g++-9-multilib | |
| - toolset: gcc-10 | |
| cxxstd: "03,11,14,17,20" | |
| address_model: 32,64 | |
| os: ubuntu-latest | |
| container: ubuntu:20.04 | |
| install: | |
| - g++-10-multilib | |
| - toolset: gcc-11 | |
| cxxstd: "03,11,14,17,20,23" | |
| address_model: 32,64 | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - g++-11-multilib | |
| - toolset: gcc-12 | |
| cxxstd: "03,11,14,17,20,23" | |
| address_model: 64 | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - g++-12-multilib | |
| - toolset: gcc-12 | |
| cxxstd: "03,11,14,17,20,23" | |
| address_model: 32 | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - g++-12-multilib | |
| # Disabled for now. 22.04 dropped support and 24.04 has internal errors | |
| #- toolset: gcc-13 | |
| # cxxstd: "03,11,14,17,20,23" | |
| # address_model: 32,64 | |
| # os: ubuntu-24.04 | |
| # install: | |
| # - g++-13-multilib | |
| # cxxflags: -Wno-uninitialized | |
| - toolset: gcc-12 | |
| cxxstd: "03-gnu,11-gnu,14-gnu,17-gnu,20-gnu,23-gnu" | |
| address_model: "32" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - g++-12-multilib | |
| - toolset: gcc-12 | |
| cxxstd: "03-gnu,11-gnu,14-gnu,17-gnu,20-gnu,23-gnu" | |
| address_model: "64" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - g++-12-multilib | |
| - toolset: gcc-14 | |
| cxxstd: "03,11,14,17,20,23,2c" | |
| address_model: "64" | |
| os: ubuntu-latest | |
| container: ubuntu:24.04 | |
| install: | |
| - g++-14-multilib | |
| - toolset: gcc-14 | |
| cxxstd: "03,11,14,17,20,23,2c" | |
| cxxflags: -fno-exceptions | |
| address_model: "64" | |
| os: ubuntu-latest | |
| container: ubuntu:24.04 | |
| install: | |
| - g++-14-multilib | |
| - toolset: gcc-14 | |
| cxxstd: "03,11,14,17,20,23,2c" | |
| address_model: "32" | |
| os: ubuntu-latest | |
| container: ubuntu:24.04 | |
| install: | |
| - g++-14-multilib | |
| - name: 64-bit UBSAN | |
| toolset: gcc-14 | |
| cxxstd: "03,11,14,17,20,23,2c" | |
| address_model: "64" | |
| ubsan: 1 | |
| os: ubuntu-latest | |
| container: ubuntu:24.04 | |
| install: | |
| - g++-14-multilib | |
| # Linux, clang | |
| - toolset: clang | |
| compiler: clang++-6.0 | |
| cxxstd: "03,11,14,17" | |
| os: ubuntu-latest | |
| container: ubuntu:18.04 | |
| install: | |
| - clang-6.0 | |
| - toolset: clang | |
| compiler: clang++-7 | |
| cxxstd: "03,11,14,17" | |
| os: ubuntu-latest | |
| container: ubuntu:18.04 | |
| install: | |
| - clang-7 | |
| # Note: clang-8 does not fully support C++20, so it is not compatible with libstdc++-8 in this mode | |
| - toolset: clang | |
| compiler: clang++-8 | |
| cxxstd: "03,11,14,17,2a" | |
| os: ubuntu-latest | |
| container: ubuntu:18.04 | |
| install: | |
| - clang-8 | |
| - g++-7 | |
| gcc_toolchain: 7 | |
| - toolset: clang | |
| compiler: clang++-9 | |
| cxxstd: "03,11,14,17,2a" | |
| os: ubuntu-latest | |
| container: ubuntu:20.04 | |
| install: | |
| - clang-9 | |
| - toolset: clang | |
| compiler: clang++-10 | |
| cxxstd: "03,11,14,17,20" | |
| os: ubuntu-latest | |
| container: ubuntu:20.04 | |
| install: | |
| - clang-10 | |
| - toolset: clang | |
| compiler: clang++-11 | |
| cxxstd: "03,11,14,17" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - clang-11 | |
| - toolset: clang | |
| compiler: clang++-12 | |
| cxxstd: "03,11,14,17" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - clang-12 | |
| - toolset: clang | |
| compiler: clang++-13 | |
| cxxstd: "03,11,14,17" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - clang-13 | |
| - toolset: clang | |
| compiler: clang++-14 | |
| cxxstd: "03,11,14,17" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - clang-14 | |
| - toolset: clang | |
| compiler: clang++-14 | |
| cxxstd: "03-gnu,11-gnu,14-gnu,17-gnu" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - clang-14 | |
| - toolset: clang | |
| compiler: clang++-15 | |
| cxxstd: "03,11,14,17,20" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - clang-15 | |
| sources: | |
| - "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main" | |
| source_keys: | |
| - "https://apt.llvm.org/llvm-snapshot.gpg.key" | |
| - toolset: clang | |
| compiler: clang++-15 | |
| cxxstd: "03,11,14,17,20,2b" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - clang-15 | |
| - libc++-15-dev | |
| - libc++abi-15-dev | |
| sources: | |
| - "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main" | |
| source_keys: | |
| - "https://apt.llvm.org/llvm-snapshot.gpg.key" | |
| cxxflags: -stdlib=libc++ | |
| linkflags: -stdlib=libc++ | |
| - toolset: clang | |
| compiler: clang++-16 | |
| cxxstd: "03,11,14,17,20" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - clang-16 | |
| sources: | |
| - "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" | |
| source_keys: | |
| - "https://apt.llvm.org/llvm-snapshot.gpg.key" | |
| - toolset: clang | |
| compiler: clang++-17 | |
| cxxstd: "03,11,14,17,20,2b" | |
| os: ubuntu-latest | |
| container: ubuntu:22.04 | |
| install: | |
| - clang-17 | |
| sources: | |
| - "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main" | |
| source_keys: | |
| - "https://apt.llvm.org/llvm-snapshot.gpg.key" | |
| - toolset: clang | |
| compiler: clang++-18 | |
| cxxstd: "03,11,14,17,20,2b" | |
| os: ubuntu-24.04 | |
| install: | |
| - clang-18 | |
| sources: | |
| - "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-18 main" | |
| source_keys: | |
| - "https://apt.llvm.org/llvm-snapshot.gpg.key" | |
| - toolset: clang | |
| compiler: clang++-19 | |
| cxxstd: "03,11,14,17,20,2b" | |
| os: ubuntu-24.04 | |
| install: | |
| - clang-19 | |
| sources: | |
| - "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main" | |
| source_keys: | |
| - "https://apt.llvm.org/llvm-snapshot.gpg.key" | |
| - toolset: clang | |
| compiler: clang++-20 | |
| cxxstd: "03,11,14,17,20,2b" | |
| os: ubuntu-24.04 | |
| install: | |
| - clang-20 | |
| sources: | |
| - "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" | |
| source_keys: | |
| - "https://apt.llvm.org/llvm-snapshot.gpg.key" | |
| - toolset: clang | |
| compiler: clang++-21 | |
| cxxstd: "03,11,14,17,20,2b" | |
| os: ubuntu-24.04 | |
| install: | |
| - clang-21 | |
| sources: | |
| - "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-21 main" | |
| source_keys: | |
| - "https://apt.llvm.org/llvm-snapshot.gpg.key" | |
| - toolset: clang | |
| cxxstd: "03,11,14,17,20,2b" | |
| os: macos-14 | |
| - toolset: clang | |
| cxxstd: "03,11,14,17,20,2b" | |
| os: macos-15 | |
| timeout-minutes: 180 | |
| runs-on: ${{matrix.os}} | |
| container: | |
| image: ${{matrix.container}} | |
| volumes: | |
| - /node20217:/node20217:rw,rshared | |
| - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} | |
| steps: | |
| - name: Setup environment | |
| run: | | |
| if [ -f "/etc/debian_version" ] | |
| then | |
| echo "DEBIAN_FRONTEND=noninteractive" >> $GITHUB_ENV | |
| export DEBIAN_FRONTEND=noninteractive | |
| fi | |
| if [ -n "${{matrix.container}}" ] | |
| then | |
| echo "GHA_CONTAINER=${{matrix.container}}" >> $GITHUB_ENV | |
| if [ -f "/etc/debian_version" ] | |
| then | |
| apt-get -o Acquire::Retries=$NET_RETRY_COUNT update | |
| if [ "$(apt-cache search "^python-is-python3$" | wc -l)" -ne 0 ] | |
| then | |
| PYTHON_PACKAGE="python-is-python3" | |
| else | |
| PYTHON_PACKAGE="python" | |
| fi | |
| apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y sudo software-properties-common tzdata wget curl apt-transport-https ca-certificates make build-essential g++ $PYTHON_PACKAGE python3 perl git cmake | |
| fi | |
| if [[ "${{matrix.container}}" == "ubuntu:1"* ]]; then | |
| # Node 20 doesn't work with Ubuntu 16/18 glibc: https://github.com/actions/checkout/issues/1590 | |
| curl -sL https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz | tar -xJ --strip-components 1 -C /node20217 | |
| fi | |
| fi | |
| git config --global pack.threads 0 | |
| - uses: actions/checkout@v4 | |
| - name: Install packages | |
| if: matrix.install | |
| run: | | |
| declare -a SOURCE_KEYS SOURCES | |
| if [ -n "${{join(matrix.source_keys, ' ')}}" ] | |
| then | |
| SOURCE_KEYS=("${{join(matrix.source_keys, '" "')}}") | |
| fi | |
| if [ -n "${{join(matrix.sources, ' ')}}" ] | |
| then | |
| SOURCES=("${{join(matrix.sources, '" "')}}") | |
| fi | |
| for key in "${SOURCE_KEYS[@]}" | |
| do | |
| for i in {1..$NET_RETRY_COUNT} | |
| do | |
| echo "Adding key: $key" | |
| wget -O - "$key" | sudo apt-key add - && break || sleep 2 | |
| done | |
| done | |
| if [ ${#SOURCES[@]} -gt 0 ] | |
| then | |
| APT_ADD_REPO_COMMON_ARGS=("-y") | |
| APT_ADD_REPO_SUPPORTED_ARGS="$(apt-add-repository --help | perl -ne 'if (/^\s*-n/) { print "n"; } elsif (/^\s*-P/) { print "P"; } elsif (/^\s*-S/) { print "S"; } elsif (/^\s*-U/) { print "U"; }')" | |
| if [ -n "$APT_ADD_REPO_SUPPORTED_ARGS" -a -z "${APT_ADD_REPO_SUPPORTED_ARGS##*n*}" ] | |
| then | |
| APT_ADD_REPO_COMMON_ARGS+=("-n") | |
| fi | |
| APT_ADD_REPO_HAS_SOURCE_ARGS="$([ -n "$APT_ADD_REPO_SUPPORTED_ARGS" -a -z "${APT_ADD_REPO_SUPPORTED_ARGS##*P*}" -a -z "${APT_ADD_REPO_SUPPORTED_ARGS##*S*}" -a -z "${APT_ADD_REPO_SUPPORTED_ARGS##*U*}" ] && echo 1 || echo 0)" | |
| for source in "${SOURCES[@]}" | |
| do | |
| for i in {1..$NET_RETRY_COUNT} | |
| do | |
| APT_ADD_REPO_ARGS=("${APT_ADD_REPO_COMMON_ARGS[@]}") | |
| if [ $APT_ADD_REPO_HAS_SOURCE_ARGS -ne 0 ] | |
| then | |
| case "$source" in | |
| "ppa:"*) | |
| APT_ADD_REPO_ARGS+=("-P") | |
| ;; | |
| "deb "*) | |
| APT_ADD_REPO_ARGS+=("-S") | |
| ;; | |
| *) | |
| APT_ADD_REPO_ARGS+=("-U") | |
| ;; | |
| esac | |
| fi | |
| APT_ADD_REPO_ARGS+=("$source") | |
| echo "apt-add-repository ${APT_ADD_REPO_ARGS[@]}" | |
| sudo -E apt-add-repository "${APT_ADD_REPO_ARGS[@]}" && break || sleep 2 | |
| done | |
| done | |
| fi | |
| sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT update | |
| sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y ${{join(matrix.install, ' ')}} locales libfmt-dev | |
| sudo locale-gen de_DE.UTF-8 | |
| sudo locale-gen en_US.UTF-8 | |
| sudo locale-gen fr_FR.UTF-8 | |
| sudo update-locale | |
| - name: Setup GCC Toolchain | |
| if: matrix.gcc_toolchain | |
| run: | | |
| GCC_TOOLCHAIN_ROOT="$HOME/gcc-toolchain" | |
| echo "GCC_TOOLCHAIN_ROOT=\"$GCC_TOOLCHAIN_ROOT\"" >> $GITHUB_ENV | |
| MULTIARCH_TRIPLET="$(dpkg-architecture -qDEB_HOST_MULTIARCH)" | |
| mkdir -p "$GCC_TOOLCHAIN_ROOT" | |
| ln -s /usr/include "$GCC_TOOLCHAIN_ROOT/include" | |
| ln -s /usr/bin "$GCC_TOOLCHAIN_ROOT/bin" | |
| mkdir -p "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET" | |
| ln -s "/usr/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" | |
| - 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 | |
| BUILD_JOBS=$((nproc || sysctl -n hw.ncpu) 2> /dev/null) | |
| echo "BUILD_JOBS=$BUILD_JOBS" >> $GITHUB_ENV | |
| echo "CMAKE_BUILD_PARALLEL_LEVEL=$BUILD_JOBS" >> $GITHUB_ENV | |
| DEPINST_ARGS=() | |
| GIT_VERSION="$(git --version | sed -e 's/git version //')" | |
| GIT_HAS_JOBS=1 | |
| if [ -f "/etc/debian_version" ] | |
| then | |
| if $(dpkg --compare-versions "$GIT_VERSION" lt 2.8.0) | |
| then | |
| GIT_HAS_JOBS=0 | |
| fi | |
| else | |
| declare -a GIT_VER=(${GIT_VERSION//./ }) | |
| declare -a GIT_MIN_VER=(2 8 0) | |
| for ((i=0; i<${#GIT_VER[@]}; i++)) | |
| do | |
| if [ -z "${GIT_MIN_VER[i]}" ] | |
| then | |
| GIT_MIN_VER[i]=0 | |
| fi | |
| if [ "${GIT_VER[i]}" -lt "${GIT_MIN_VER[i]}" ] | |
| then | |
| GIT_HAS_JOBS=0 | |
| break | |
| fi | |
| done | |
| fi | |
| if [ "$GIT_HAS_JOBS" -ne 0 ] | |
| then | |
| DEPINST_ARGS+=("--git_args" "--jobs $GIT_FETCH_JOBS") | |
| fi | |
| 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 | |
| DEPINST_ARGS+=("$LIBRARY") | |
| python tools/boostdep/depinst/depinst.py "${DEPINST_ARGS[@]}" | |
| if [ -z "${{matrix.cmake_tests}}" ] | |
| then | |
| ./bootstrap.sh | |
| ./b2 headers | |
| if [ -n "${{matrix.compiler}}" -o -n "$GCC_TOOLCHAIN_ROOT" ] | |
| then | |
| echo -n "using ${{matrix.toolset}} : : ${{matrix.compiler}}" > ~/user-config.jam | |
| if [ -n "$GCC_TOOLCHAIN_ROOT" ] | |
| then | |
| echo -n " : <compileflags>\"--gcc-toolchain=$GCC_TOOLCHAIN_ROOT\" <linkflags>\"--gcc-toolchain=$GCC_TOOLCHAIN_ROOT\"" >> ~/user-config.jam | |
| fi | |
| echo " ;" >> ~/user-config.jam | |
| fi | |
| fi | |
| - name: Run tests | |
| if: matrix.cmake_tests == '' | |
| run: | | |
| cd ../boost-root | |
| B2_ARGS=("-j" "$BUILD_JOBS" "toolset=${{matrix.toolset}}" "cxxstd=${{matrix.cxxstd}}" "link=static,shared") | |
| if [ -n "${{matrix.build_variant}}" ] | |
| then | |
| B2_ARGS+=("variant=${{matrix.build_variant}}") | |
| else | |
| B2_ARGS+=("variant=$DEFAULT_BUILD_VARIANT") | |
| fi | |
| if [ -n "${{matrix.threading}}" ] | |
| then | |
| B2_ARGS+=("threading=${{matrix.threading}}") | |
| fi | |
| if [ -n "${{matrix.ubsan}}" ] | |
| then | |
| export UBSAN_OPTIONS="print_stacktrace=1" | |
| B2_ARGS+=("cxxflags=-fsanitize=undefined -fno-sanitize-recover=undefined" "linkflags=-fsanitize=undefined -fuse-ld=gold" "define=UBSAN=1" "debug-symbols=on" "visibility=global") | |
| fi | |
| if [ -n "${{matrix.cxxflags}}" ] | |
| then | |
| B2_ARGS+=("cxxflags=${{matrix.cxxflags}}") | |
| fi | |
| if [ -n "${{matrix.linkflags}}" ] | |
| then | |
| B2_ARGS+=("linkflags=${{matrix.linkflags}}") | |
| fi | |
| if [ -n "${{matrix.address_model}}" ] | |
| then | |
| B2_ARGS+=("address-model=${{matrix.address_model}}") | |
| fi | |
| B2_ARGS+=("libs/$LIBRARY/test") | |
| ./b2 "${B2_ARGS[@]}" cxxflags="-Wall -Wextra -Werror" | |
| windows: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Release mode has gobs of math failures that are not present in debug mode | |
| #- toolset: msvc-14.3 | |
| # cxxstd: "14,17,20,latest" | |
| # addrmd: "32" | |
| # os: windows-2022 | |
| - toolset: msvc-14.3 | |
| cxxstd: "14,17,20,latest" | |
| addrmd: "64" | |
| os: windows-2022 | |
| - toolset: clang-win | |
| cxxstd: "14,17,latest" | |
| addrmd: "32" | |
| os: windows-latest | |
| - toolset: clang-win | |
| cxxstd: "14,17,latest" | |
| addrmd: "64" | |
| os: windows-latest | |
| - toolset: gcc | |
| cxxstd: "03,11,14,17" # 20 has ICE | |
| addrmd: "64" | |
| os: windows-latest | |
| - toolset: msvc-14.3 | |
| cxxstd: "14,17,20,latest" | |
| addrmd: "64" | |
| os: windows-11-arm | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Boost | |
| shell: cmd | |
| run: | | |
| echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY% | |
| for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi | |
| echo LIBRARY: %LIBRARY% | |
| echo LIBRARY=%LIBRARY%>>%GITHUB_ENV% | |
| echo GITHUB_BASE_REF: %GITHUB_BASE_REF% | |
| echo GITHUB_REF: %GITHUB_REF% | |
| if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF% | |
| set BOOST_BRANCH=develop | |
| for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master | |
| echo BOOST_BRANCH: %BOOST_BRANCH% | |
| cd .. | |
| git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root | |
| cd boost-root | |
| xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\ | |
| git submodule update --init tools/boostdep | |
| python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY% | |
| cmd /c bootstrap | |
| b2 -d0 headers | |
| - name: Run tests | |
| shell: cmd | |
| run: | | |
| cd ../boost-root | |
| b2 -j3 libs/%LIBRARY%/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model=${{matrix.addrmd}} variant=debug,release link=static,shared embed-manifest-via=linker | |
| posix-cmake-subdir: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| - os: macos-14 | |
| - os: macos-15 | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install packages | |
| if: matrix.install | |
| run: sudo apt-get -y install ${{matrix.install}} | |
| - 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: Use library with add_subdirectory | |
| run: | | |
| cd ../boost-root/libs/$LIBRARY/test/cmake_subdir_test | |
| mkdir __build__ && cd __build__ | |
| cmake .. | |
| cmake --build . | |
| ctest --output-on-failure --no-tests=error | |
| posix-cmake-install: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| - os: macos-14 | |
| - os: macos-15 | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install packages | |
| if: matrix.install | |
| run: sudo apt install ${{matrix.install}} | |
| - 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 -DCMAKE_INSTALL_PREFIX=~/.local .. | |
| - name: Install | |
| run: | | |
| cd ../boost-root/__build__ | |
| cmake --build . --target install | |
| - name: Use the installed library | |
| run: | | |
| cd ../boost-root/libs/$LIBRARY/test/cmake_install_test && mkdir __build__ && cd __build__ | |
| cmake -DCMAKE_INSTALL_PREFIX=~/.local .. | |
| cmake --build . | |
| ctest --output-on-failure --no-tests=error | |
| posix-cmake-test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| - os: macos-14 | |
| - os: macos-15 | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install packages | |
| if: matrix.install | |
| run: sudo apt install ${{matrix.install}} | |
| - 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 | |
| - name: Run tests | |
| run: | | |
| cd ../boost-root/__build__ | |
| ctest --output-on-failure --no-tests=error | |
| posix-cmake-test-dectest: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| - os: macos-14 | |
| - os: macos-15 | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install packages | |
| if: matrix.install | |
| run: sudo apt install ${{matrix.install}} | |
| - 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 | |
| cd libs/$LIBRARY/test | |
| git clone https://github.com/cppalliance/decimal-dectest | |
| cd ../../../ | |
| 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 -DBUILD_DECTEST_TESTING=ON .. | |
| - name: Build tests | |
| run: | | |
| cd ../boost-root/__build__ | |
| cmake --build . --target tests | |
| - name: Run tests | |
| run: | | |
| cd ../boost-root/__build__ | |
| ctest --output-on-failure --no-tests=error | |
| posix-standalone-test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| - os: macos-14 | |
| - os: macos-15 | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Configure and Install | |
| run: | | |
| mkdir build && cd build | |
| cmake -DCMAKE_INSTALL_PREFIX=~/.local .. | |
| cmake --build . --target install | |
| - name: Test with find_package | |
| run: | | |
| export PKG_CONFIG_PATH=~/.local/lib/pkgconfig:$PKG_CONFIG_PATH | |
| export CPATH=~/.local/include:$CPATH | |
| mkdir ~/standalone_test | |
| cat > ~/standalone_test/CMakeLists.txt <<'EOF' | |
| cmake_minimum_required(VERSION 3.10) | |
| project(StandaloneTest) | |
| find_package(boost_decimal REQUIRED) | |
| message(STATUS "boost_decimal found: ${boost_decimal_FOUND}") | |
| add_executable(main main.cpp) | |
| target_link_libraries(main PRIVATE Boost::decimal) | |
| EOF | |
| cat > ~/standalone_test/main.cpp <<'EOF' | |
| #include <boost/decimal.hpp> | |
| #include <iostream> | |
| int main() { | |
| using namespace boost::decimal; | |
| decimal32_t d{456}; | |
| std::cout << "Value: " << d << "\n"; | |
| return 0; | |
| } | |
| EOF | |
| cd ~/standalone_test | |
| mkdir build && cd build | |
| cmake -DCMAKE_INSTALL_PREFIX=~/.local -DCMAKE_PREFIX_PATH=~/.local .. | |
| cmake --build . | |
| posix-cmake-find-package-test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install packages | |
| run: sudo apt install pkg-config | |
| - 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 and Install | |
| run: | | |
| cd ../boost-root | |
| mkdir __build_install__ && cd __build_install__ | |
| cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DCMAKE_INSTALL_PREFIX=~/.local .. | |
| cmake --build . --target install | |
| - name: Create test project | |
| run: | | |
| export PKG_CONFIG_PATH=~/.local/lib/pkgconfig:$PKG_CONFIG_PATH | |
| export CPATH=~/.local/include:$CPATH | |
| echo "Cflags: $(pkg-config --cflags boost_decimal)" | |
| echo "Libs: $(pkg-config --libs boost_decimal)" | |
| mkdir -p ~/test_project | |
| cat > ~/test_project/CMakeLists.txt <<'EOF' | |
| cmake_minimum_required(VERSION 3.8) | |
| project(TestFindPackage) | |
| find_package(boost_decimal REQUIRED) | |
| add_executable(test_main main.cpp) | |
| target_link_libraries(test_main PRIVATE Boost::decimal) | |
| EOF | |
| cat > ~/test_project/main.cpp <<'EOF' | |
| #include <boost/decimal.hpp> | |
| #include <iostream> | |
| int main() { | |
| using namespace boost::decimal; | |
| decimal32_t d{42}; | |
| std::cout << "Value: " << d << "\n"; | |
| return 0; | |
| } | |
| EOF | |
| - name: Test find_package | |
| run: | | |
| cd ~/test_project | |
| mkdir build && cd build | |
| cmake -DCMAKE_INSTALL_PREFIX=~/.local .. | |
| cmake --build . | |
| posix-pkg-config-test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install packages | |
| run: sudo apt install pkg-config | |
| - 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 and Install | |
| run: | | |
| cd ../boost-root | |
| mkdir __build_install__ && cd __build_install__ | |
| cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DCMAKE_INSTALL_PREFIX=~/.local .. | |
| cmake --build . --target install | |
| - name: Test pkg-config | |
| run: | | |
| export PKG_CONFIG_PATH=~/.local/lib/pkgconfig:$PKG_CONFIG_PATH | |
| export CPATH=~/.local/include:$CPATH | |
| echo "Cflags: $(pkg-config --cflags boost_decimal)" | |
| echo "Libs: $(pkg-config --libs boost_decimal)" | |
| mkdir -p ~/pkgconfig_test | |
| cat > ~/pkgconfig_test/main.cpp <<'EOF' | |
| #include <boost/decimal.hpp> | |
| #include <iostream> | |
| int main() { | |
| using namespace boost::decimal; | |
| decimal32_t d{123}; | |
| std::cout << "Value: " << d << "\n"; | |
| return 0; | |
| } | |
| EOF | |
| cd ~/pkgconfig_test | |
| g++ main.cpp $(pkg-config --cflags --libs boost_decimal) -o test_pkgconfig | |
| ./test_pkgconfig | |
| # Symlink in docs folder breaks these runs | |
| # MSYS2: | |
| # defaults: | |
| # run: | |
| # shell: msys2 {0} | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # include: | |
| # - { sys: MINGW32, compiler: gcc, cxxstd: '03,11,17,20' } | |
| # - { sys: MINGW64, compiler: gcc, cxxstd: '03,11,17,20' } | |
| # | |
| # runs-on: windows-latest | |
| # | |
| # steps: | |
| # - uses: actions/checkout@v4 | |
| # | |
| # - name: Setup MSYS2 environment | |
| # uses: msys2/setup-msys2@v2 | |
| # with: | |
| # msystem: ${{matrix.sys}} | |
| # update: true | |
| # install: git python | |
| # pacboy: gcc:p cmake:p ninja:p | |
| # | |
| # - name: Fetch Boost.CI | |
| # uses: actions/checkout@v4 | |
| # with: | |
| # repository: boostorg/boost-ci | |
| # ref: master | |
| # path: boost-ci-cloned | |
| # - name: Get CI scripts folder | |
| # run: | | |
| # # Copy ci folder if not testing Boost.CI | |
| # [[ "$GITHUB_REPOSITORY" =~ "boost-ci" ]] || cp -r boost-ci-cloned/ci . | |
| # rm -rf boost-ci-cloned | |
| # | |
| # - name: Setup Boost | |
| # env: | |
| # B2_COMPILER: ${{matrix.compiler}} | |
| # B2_CXXSTD: ${{matrix.cxxstd}} | |
| # B2_SANITIZE: ${{matrix.sanitize}} | |
| # B2_STDLIB: ${{matrix.stdlib}} | |
| # run: ci/github/install.sh | |
| # | |
| # - name: Run tests | |
| # run: ci/build.sh | |
| intel: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| compiler: [ intel ] | |
| standard: [ 14, 17, 20, 23 ] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: '0' | |
| - name: Intel Apt repository | |
| timeout-minutes: 1 | |
| run: | | |
| wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | |
| sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | |
| rm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | |
| echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
| sudo apt-get update | |
| - name: Install Intel oneAPI compilers | |
| timeout-minutes: 5 | |
| run: sudo apt-get install -y intel-oneapi-compiler-fortran intel-oneapi-compiler-dpcpp-cpp | |
| - name: Setup Intel oneAPI environment | |
| run: | | |
| source /opt/intel/oneapi/setvars.sh | |
| printenv >> $GITHUB_ENV | |
| - 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 -DCMAKE_C_COMPILER=icx \ | |
| -DCMAKE_CXX_COMPILER=icpx \ | |
| -DCMAKE_CXX_STANDARD=${{ matrix.standard }} \ | |
| -DCMAKE_CXX_STANDARD_REQUIRED=ON \ | |
| -DBOOST_INCLUDE_LIBRARIES=$LIBRARY \ | |
| -DBUILD_TESTING=ON .. | |
| - name: Build tests | |
| run: | | |
| cd ../boost-root/__build__ | |
| cmake --build . --target tests | |
| - name: Run tests | |
| run: | | |
| cd ../boost-root/__build__ | |
| ctest --output-on-failure --no-tests=error |