2
0
mirror of https://github.com/boostorg/cmake.git synced 2026-01-24 05:42:13 +00:00
Files
cmake/.github/workflows/ci.yml
Andrey Semashev 1686f57663 Remove dependencies on Boost.StaticAssert.
Boost.StaticAssert has been merged into Boost.Config and its submodule
should not be used anymore, so remove the dependency and tesing the
library in CI.

Boost.StaticAssert is still retained in include_library.yml GHA config
to continue testing the submodule until it is removed, at request by
Peter Dimov.
2026-01-23 16:29:27 +03:00

786 lines
24 KiB
YAML

name: Main CI
on:
pull_request:
push:
branches:
- master
- develop
- feature/**
tags: ['**']
env:
UBSAN_OPTIONS: print_stacktrace=1
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
shared: OFF
layout: tagged
python: ON
mpi: OFF
- os: ubuntu-latest
shared: ON
layout: versioned
python: ON
mpi: OFF
- os: ubuntu-latest
shared: ON
layout: system
python: ON
mpi: ON
install: libopenmpi-dev
- os: macos-latest
shared: OFF
layout: versioned
python: ON
mpi: OFF
- os: macos-latest
shared: ON
layout: tagged
python: ON
mpi: OFF
- os: ubuntu-latest
shared: ON
testing: ON
layout: system
python: OFF
mpi: OFF
exclude: "process;geometry"
- os: ubuntu-latest
include: assert
testing: ON
test_install: ON
- os: macos-latest
include: assert
testing: ON
test_install: ON
- os: ubuntu-latest
include: mp11
testing: ON
test_install: ON
- os: macos-latest
include: mp11
testing: ON
test_install: ON
- os: ubuntu-latest
include: preprocessor
testing: ON
test_install: ON
- os: macos-latest
include: preprocessor
testing: ON
test_install: ON
- os: ubuntu-latest
include: timer
testing: ON
layout: versioned
shared: OFF
test_install: ON
- os: ubuntu-latest
include: timer
testing: ON
layout: versioned
shared: ON
test_install: ON
- os: macos-latest
include: timer
testing: ON
layout: versioned
shared: OFF
test_install: ON
- os: macos-latest
include: timer
testing: ON
layout: versioned
shared: ON
test_install: ON
- os: ubuntu-latest
include: iostreams
layout: versioned
shared: OFF
test_install: ON
- os: ubuntu-latest
include: iostreams
layout: versioned
shared: ON
test_install: ON
- os: macos-latest
include: iostreams
layout: versioned
shared: OFF
test_install: ON
- os: macos-latest
include: iostreams
layout: versioned
shared: ON
test_install: ON
- os: ubuntu-latest
include: locale
layout: versioned
shared: OFF
test_install: ON
- os: ubuntu-latest
include: locale
layout: versioned
shared: ON
test_install: ON
- os: macos-latest
include: locale
layout: versioned
shared: OFF
test_install: ON
- os: macos-latest
include: locale
layout: versioned
shared: ON
test_install: ON
- os: ubuntu-latest
include: mysql
testing: ON
install: libssl-dev
- os: ubuntu-latest
include: mysql
test_install: ON
install: libssl-dev
- os: ubuntu-latest
include: bind
testing: ON
- os: ubuntu-latest
include: bind
test_install: ON
- os: ubuntu-latest
include: endian
testing: ON
- os: ubuntu-latest
include: endian
test_install: ON
- os: ubuntu-latest
include: system
testing: ON
- os: ubuntu-latest
include: system
test_install: ON
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_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
git submodule update --init --jobs 3
rm -rf tools/cmake/*
cp -r $GITHUB_WORKSPACE/* tools/cmake
- name: Configure Boost
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBUILD_TESTING=${{matrix.testing}} -DBOOST_INCLUDE_LIBRARIES="${{matrix.include}}" -DBOOST_EXCLUDE_LIBRARIES="${{matrix.exclude}}" -DBUILD_SHARED_LIBS=${{matrix.shared}} -DBOOST_INSTALL_LAYOUT=${{matrix.layout}} -DBOOST_ENABLE_MPI=${{matrix.mpi}} -DBOOST_ENABLE_PYTHON=${{matrix.python}} ..
- name: Build Boost
run: |
cd ../boost-root/__build__
cmake --build .
- name: Install Boost
run: |
cd ../boost-root/__build__
cmake --build . --target install
- name: Test Boost
if: matrix.testing
run: |
cd ../boost-root/__build__
cmake --build . --target tests -- -j 3
ctest --output-on-failure --no-tests=error -j 3
- name: Test installed Boost library
if: matrix.test_install
run: |
cd ../boost-root/tools/cmake/test/${{matrix.include}}
mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
cmake --build .
export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH
cmake --build . --target check
windows:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
shared: OFF
python: ON
mpi: OFF
- os: windows-2022
shared: ON
python: ON
mpi: OFF
- os: windows-2022
include: assert
testing: ON
test_install: ON
- os: windows-2022
include: mp11
testing: ON
test_install: ON
- os: windows-2022
include: timer
shared: OFF
testing: ON
test_install: ON
- os: windows-2022
include: timer
shared: ON
testing: ON
test_install: ON
- os: windows-2022
include: iostreams
shared: OFF
test_install: ON
- os: windows-2022
include: iostreams
shared: ON
test_install: ON
- os: windows-2022
include: bind
testing: ON
- os: windows-2022
include: bind
test_install: ON
- os: windows-2022
include: endian
testing: ON
- os: windows-2022
include: endian
test_install: ON
- os: windows-2022
include: system
testing: ON
- os: windows-2022
include: system
test_install: ON
# mingw
- os: windows-latest
include: timer
shared: OFF
testing: ON
test_install: ON
opts: "-G \"MinGW Makefiles\""
- os: windows-latest
include: timer
shared: ON
testing: ON
test_install: ON
opts: "-G \"MinGW Makefiles\""
# clang-cl
- os: windows-latest
include: timer
shared: OFF
testing: ON
test_install: ON
opts: "-T clangcl"
- os: windows-latest
include: timer
shared: ON
testing: ON
test_install: ON
opts: "-T clangcl"
runs-on: ${{matrix.os}}
defaults:
run:
shell: cmd
steps:
- uses: actions/checkout@v4
- name: Setup Boost
run: |
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
git submodule update --init --jobs 3
rd /s/q tools\cmake
xcopy /s /e /q %GITHUB_WORKSPACE% tools\cmake\
- name: Configure Boost
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBoost_VERBOSE=${{matrix.verbose}} -DBUILD_TESTING=${{matrix.testing}} -DBOOST_INCLUDE_LIBRARIES=${{matrix.include}} -DBOOST_EXCLUDE_LIBRARIES=${{matrix.exclude}} -DBUILD_SHARED_LIBS=${{matrix.shared}} -DBOOST_ENABLE_MPI=${{matrix.mpi}} -DBOOST_ENABLE_PYTHON=${{matrix.python}} -DCMAKE_IGNORE_PREFIX_PATH="C:/Strawberry/c" ${{matrix.opts}} ..
- name: Build Boost (Debug)
run: cmake --build ../boost-root/__build__ --config Debug
- name: Build Boost (Release)
run: cmake --build ../boost-root/__build__ --config Release
- name: Install Boost (Debug)
run: cmake --build ../boost-root/__build__ --target install --config Debug
- name: Install Boost (Release)
run: cmake --build ../boost-root/__build__ --target install --config Release
- name: Test Boost (Debug)
if: matrix.testing
run: cd ../boost-root/__build__ && cmake --build . --target tests --config Debug && ctest --output-on-failure --no-tests=error -j 3 -C Debug
- name: Test Boost (Release)
if: matrix.testing
run: cd ../boost-root/__build__ && cmake --build . --target tests --config Release && ctest --output-on-failure --no-tests=error -j 3 -C Release
- name: Configure test project
if: matrix.test_install
run: |
cd ../boost-root/tools/cmake/test/${{matrix.include}}
mkdir __build__ && cd __build__
cmake -DCMAKE_PREFIX_PATH=C:/Boost ${{matrix.opts}} ..
- name: Test installed Boost library (Debug)
if: matrix.test_install
run: |
cd ../boost-root/tools/cmake/test/${{matrix.include}}/__build__
PATH C:\Boost\bin;%PATH%
cmake --build . --config Debug && ctest --output-on-failure --no-tests=error -j 3 -C Debug
- name: Test installed Boost library (Release)
if: matrix.test_install
run: |
cd ../boost-root/tools/cmake/test/${{matrix.include}}/__build__
PATH C:\Boost\bin;%PATH%
cmake --build . --config Release && ctest --output-on-failure --no-tests=error -j 3 -C Release
BoostRoot:
strategy:
fail-fast: false
matrix:
container:
- ubuntu:20.04
- ubuntu:22.04
- ubuntu:24.04
- ubuntu:25.04
testing: [OFF, ON]
include:
- container: ubuntu:18.04
testing: OFF
exclude: cobalt;histogram;locale;msm;parser
- container: ubuntu:18.04
testing: ON
exclude: cobalt;histogram;locale;msm;parser;pfr;mysql
container:
image: ${{matrix.container}}
volumes:
- /node20217:/node20217:rw,rshared
- ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }}
defaults:
run:
shell: bash
runs-on: ubuntu-latest
steps:
- name: Setup container environment
if: matrix.container
run: |
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get -y install sudo python3 git g++ curl xz-utils cmake libssl-dev
- name: Install nodejs20glibc2.17
if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }}
run: |
curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
ldd /__e/node20/bin/node
- uses: actions/checkout@v4
- name: Setup Boost
run: |
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
git submodule update --init
rm -rf tools/cmake/*
cp -r $GITHUB_WORKSPACE/* tools/cmake
- name: Configure Boost
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBUILD_TESTING=${{matrix.testing}} -DBOOST_EXCLUDE_LIBRARIES="${{matrix.exclude}}" ..
BoostTest:
strategy:
fail-fast: false
matrix:
container:
- ubuntu:16.04
- ubuntu:18.04
- ubuntu:20.04
- ubuntu:22.04
- ubuntu:24.04
- ubuntu:25.04
container:
image: ${{matrix.container}}
volumes:
- /node20217:/node20217:rw,rshared
- ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }}
defaults:
run:
shell: bash
runs-on: ubuntu-latest
steps:
- name: Setup container environment
if: matrix.container
run: |
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get -y install sudo python3 git g++ curl xz-utils cmake
- name: Install nodejs20glibc2.17
if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }}
run: |
curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
ldd /__e/node20/bin/node
- uses: actions/checkout@v4
- name: Setup Boost
run: |
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
git submodule update --init libs/core libs/assert libs/config libs/throw_exception
rm -rf tools/cmake/*
cp -r $GITHUB_WORKSPACE/* tools/cmake
- name: Test BoostTest
run: |
cd ../boost-root/tools/cmake/test/boost_test
mkdir __build__ && cd __build__
cmake -DBoost_VERBOSE=ON ..
cmake --build . --target tests
ctest --output-on-failure --no-tests=error -j 3
BoostFetch:
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Test BoostFetch
run: |
cd test/boost_fetch
mkdir __build__ && cd __build__
cmake ..
cmake --build .
cmake --build . --target check
posix-subdir:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-22.04, ubuntu-24.04, macos-14, macos-15, macos-26 ]
shared: [ ON, OFF ]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Setup Boost
run: |
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
git submodule update --init --jobs 3
rm -rf tools/cmake/*
cp -r $GITHUB_WORKSPACE/* tools/cmake
- name: Test Boost with add_subdirectory
run: |
cd ../boost-root/tools/cmake/test/add_subdir
mkdir __build__ && cd __build__
cmake -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} ..
cmake --build .
ctest --output-on-failure --no-tests=error
- name: Test Boost with add_subdirectory(EXCLUDE_FROM_ALL)
run: |
cd ../boost-root/tools/cmake/test/add_subdir_exc
mkdir __build__ && cd __build__
cmake -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} ..
cmake --build .
ctest --output-on-failure --no-tests=error
- name: Test installation with add_subdirectory
run: |
cd ../boost-root/tools/cmake/test/add_subdir
mkdir __build2__ && cd __build2__
cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} ..
cmake --build . --target install
cmake --install .
- name: Test installation with add_subdirectory(EXCLUDE_FROM_ALL)
run: |
cd ../boost-root/tools/cmake/test/add_subdir_exc
mkdir __build2__ && cd __build2__
cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} ..
cmake --build . --target install
cmake --install .
- name: Test add_subdirectory compatibility targets
run: |
cd ../boost-root/tools/cmake/test/add_subdir_compat
mkdir __build__ && cd __build__
cmake -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} ..
cmake --build .
ctest --output-on-failure --no-tests=error
- name: Test add_subdirectory(EXCLUDE_FROM_ALL) compatibility targets
run: |
cd ../boost-root/tools/cmake/test/add_subdir_exc_compat
mkdir __build__ && cd __build__
cmake -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} ..
cmake --build .
ctest --output-on-failure --no-tests=error
posix-target-check:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
include: timer
shared: ON
- os: ubuntu-24.04
include: timer
shared: ON
- os: macos-14
include: timer
shared: ON
- os: macos-15
include: timer
shared: ON
- os: macos-26
include: timer
shared: ON
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Setup Boost
run: |
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
git submodule update --init --jobs 3
rm -rf tools/cmake/*
cp -r $GITHUB_WORKSPACE/* tools/cmake
- name: Configure Boost
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBoost_VERBOSE=${{matrix.verbose}} -DBUILD_TESTING=ON -DBOOST_INCLUDE_LIBRARIES=${{matrix.include}} -DBUILD_SHARED_LIBS=${{matrix.shared}} ..
- name: Test Boost
run: |
cd ../boost-root/__build__
cmake --build . --target check
posix-check-quick:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-22.04, ubuntu-24.04, macos-14, macos-15, macos-26 ]
shared: [ ON, OFF ]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Setup Boost
run: |
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
git submodule update --init --jobs 3
rm -rf tools/cmake/*
cp -r $GITHUB_WORKSPACE/* tools/cmake
- name: Configure Boost
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBoost_VERBOSE=${{matrix.verbose}} -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} ..
- name: Test Boost
run: |
cd ../boost-root/__build__
cmake --build . --target check-quick
posix-install:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest ]
include_libraries: [ timer ]
layout: [ system, versioned ]
verbose: [ ON ]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Setup Boost
run: |
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
git submodule update --init --jobs 3
rm -rf tools/cmake/*
cp -r $GITHUB_WORKSPACE/* tools/cmake
- name: Configure (Static)
run: |
cd ../boost-root
mkdir __build_static__ && cd __build_static__
cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBOOST_INCLUDE_LIBRARIES="${{matrix.include_libraries}}" -DBOOST_EXCLUDE_LIBRARIES="${{matrix.exclude_libraries}}" -DBUILD_SHARED_LIBS=OFF -DBOOST_INSTALL_LAYOUT=${{matrix.layout}} ..
- name: Build (Static)
run: |
cd ../boost-root/__build_static__
cmake --build .
- name: Install (Static)
run: |
cd ../boost-root/__build_static__
cmake --build . --target install
- name: Configure (Shared)
run: |
cd ../boost-root
mkdir __build_shared__ && cd __build_shared__
cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBOOST_INCLUDE_LIBRARIES="${{matrix.include_libraries}}" -DBOOST_EXCLUDE_LIBRARIES="${{matrix.exclude_libraries}}" -DBUILD_SHARED_LIBS=ON -DBOOST_INSTALL_LAYOUT=${{matrix.layout}} ..
- name: Build (Shared)
run: |
cd ../boost-root/__build_shared__
cmake --build .
- name: Install (Shared)
run: |
cd ../boost-root/__build_shared__
cmake --build . --target install
- name: Test (Static)
run: |
cd ../boost-root/tools/cmake/test/${{matrix.include_libraries}}
mkdir __build_static__ && cd __build_static__
cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBoost_USE_STATIC_LIBS=ON ..
cmake --build .
export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH
cmake --build . --target check
- name: Test (Shared)
run: |
cd ../boost-root/tools/cmake/test/${{matrix.include_libraries}}
mkdir __build_shared__ && cd __build_shared__
cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBoost_USE_STATIC_LIBS=OFF ..
cmake --build .
export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH
cmake --build . --target check