Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
39e5615
Start to try with boost v1.92.0
ClausKlein Aug 17, 2026
431fae1
pre-commit autoupdate
ClausKlein Aug 17, 2026
5f41811
Bump version: 1.92.0-rc0 -> 1.92.0-rc1
ClausKlein Aug 17, 2026
9100fba
Build with clang++ and import std; on OSX
ClausKlein Aug 19, 2026
03d5298
Add patch for boost-stacktrace-addr2line_impls
ClausKlein Aug 19, 2026
ddfd409
Add patch for boost-pfr-io impl.
ClausKlein Aug 19, 2026
56edd42
Build default only with c++23 standard
ClausKlein Aug 19, 2026
7321215
Use only git apply for patches
ClausKlein Aug 19, 2026
df4c7e7
Add type_index example and cleanup
ClausKlein Aug 19, 2026
593b975
Add boost-stacktrace_dump.patch
ClausKlein Aug 19, 2026
19c8ff3
Quickfix
ClausKlein Aug 19, 2026
e0b0a72
Bump version: 1.92.0-rc1 -> 1.92.0-rc2
ClausKlein Aug 19, 2026
2fe1e04
Enable CMAKE_CXX_MODULE_STD as default on CI
ClausKlein Aug 19, 2026
b9f8e9a
Patch stacktrace to fix cstdint usage
ClausKlein Aug 20, 2026
5cc175c
Disble ccache on CI
ClausKlein Aug 20, 2026
8d3bf19
Fix clang-tidy warnings on examples
ClausKlein Aug 20, 2026
ae519e2
Add prelude.cmake to set CMAKE_CXX_STDLIB_MODULES_JSON
ClausKlein Aug 20, 2026
aca6b14
Prevent cmake warnings in BoostInstall.cmake
ClausKlein Aug 20, 2026
df9b5c7
Quickfix for ubuntu Linux and clang++
ClausKlein Aug 20, 2026
2035f1f
Prevent to patch the boost sources more than ones
ClausKlein Aug 20, 2026
b18b162
Install the CXX_MODULES in a consistent way
ClausKlein Aug 21, 2026
3669e1f
Add a minimal reproducible example (MRE) for GCC
ClausKlein Aug 21, 2026
ac2e3af
Add workaround to build lexical_cast with g++ too
ClausKlein Aug 21, 2026
a20d1ba
Use separate Unix and Windows CI jobs.
ClausKlein Aug 21, 2026
7cf017b
Cleanup GNUmakefile
ClausKlein Aug 21, 2026
470cce8
Add Diagnose GCC long long configuration on CI
ClausKlein Aug 22, 2026
d23f97e
Change CI matrix
ClausKlein Aug 22, 2026
ba538c3
Update the patches to actual state
ClausKlein Aug 23, 2026
7f6e441
Bump version: 1.92.0-rc2 -> 1.92.0-rc3
ClausKlein Aug 23, 2026
5007286
Create a MRE for a cmake issue
ClausKlein Aug 23, 2026
3a9dbf5
Do not use DOWNLOAD_EXTRACT_TIMESTAMP
ClausKlein Aug 23, 2026
0d2902d
Ctest use boost_library_uses_modules() checks
ClausKlein Aug 25, 2026
cccaec9
Update patches to be sync with my PR at boost
ClausKlein Aug 25, 2026
88ade83
Test pft module on CI with all OS
ClausKlein Aug 25, 2026
6dd2b37
The final cut
ClausKlein Aug 25, 2026
a8b01c2
Use CMAKE_MESSAGE_LOG_LEVEL
ClausKlein Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .bumpversion.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ message = Bump version: {current_version} -> {new_version}
tag_message = Release v{new_version}
tag_name = v{new_version}
tag = True
current_version = 1.91.0-rc3
current_version = 1.92.0-rc3
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)([-](?P<release>(dev|rc))+(?P<build>\d+))?
serialize =
{major}.{minor}.{patch}-{release}{build}
Expand All @@ -27,8 +27,8 @@ serialize =
{major}.{minor}.{patch}

[bumpversion:file:CMakeLists.txt]
search = project(Boost-CMake LANGUAGES CXX VERSION {current_version})
replace = project(Boost-CMake LANGUAGES CXX VERSION {new_version})
search = project(Boost-CMake LANGUAGES C CXX VERSION {current_version})
replace = project(Boost-CMake LANGUAGES C CXX VERSION {new_version})
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<build>\d+))?
serialize =
{major}.{minor}.{patch}.{build}
Expand Down
2 changes: 1 addition & 1 deletion .bumpversion.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Start with an initial release, say `1.0.0`.
`ValueError: The part has already the maximum value among ['dev', 'rc', 'ga'] and cannot be bumped`.
* A whole version string may be set with:

bumpversion --new-version 1.91.0-rc0 release --no-commit --no-tag --allow-dirty
bumpversion --new-version 1.92.0-rc0 release --no-commit --no-tag --allow-dirty

# Reference

Expand Down
219 changes: 207 additions & 12 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,33 +22,228 @@ env:
CTEST_OUTPUT_ON_FAILURE: 1

jobs:
build:
unix:
strategy:
fail-fast: false

matrix:
os: [macos-latest, ubuntu-26.04, windows-latest]
os:
- macos-latest
- ubuntu-26.04

runs-on: ${{ matrix.os }} # -latest
compiler:
- llvm-22
- gcc-16

variant:
- disabled_modules
- cxx_module
- cxx_module_std

exclude:
- os: macos-latest
compiler: gcc-16
variant: cxx_module_std

name: ${{ matrix.os }} / ${{ matrix.compiler }} / ${{ matrix.variant }}
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Setup build environment
uses: lukka/get-cmake@latest
with:
cmakeVersion: "^4.3.4"
cmakeVersion: "^4.4.2"
ninjaVersion: "~1.13.0"
- name: Setup MSVC
if: startsWith(matrix.os, 'windows')
uses: TheMrMilchmann/setup-msvc-dev@v4
with:
arch: x64

- name: Setup Cpp
if: matrix.os != 'windows-latest'
uses: aminya/setup-cpp@v1
with:
compiler: llvm-22
compiler: ${{ matrix.compiler }}

- name: Configure CMake custom preset
run: make ${{ matrix.variant }}

- name: Diagnose GCC long long configuration
if: matrix.os == 'macos-latest' && matrix.compiler == 'gcc-16'
shell: bash
run: |
printf '#include <boost/config.hpp>\n' |
"${CXX}" \
-std=c++23 -arch arm64 \
-Ibuild/Release/_deps/boost-src/libs/config/include \
-dM -E -x c++ - |
grep -E 'BOOST_(HAS|NO)_LONG_LONG|_GLIBCXX_USE_LONG_LONG|_GLIBCPP_USE_LONG_LONG|ULLONG_MAX' ||
true

printf '#include <limits.h>\n' |
"${CXX}" \
-std=c++23 -arch arm64 \
-dM -E -x c++ - |
grep -E 'ULLONG_MAX|ULONG_LONG_MAX|ULONGLONG_MAX' ||
true

printf '#include <boost/config.hpp>\nboost::ulong_long_type value{};\n' |
"${CXX}" \
-std=c++23 -arch arm64 \
-DBOOST_USE_MODULES \
-Ibuild/Release/_deps/boost-src/libs/config/include \
-fsyntax-only -x c++ -

- name: Diagnose Boost long long configuration
if: matrix.os == 'macos-latest' && matrix.compiler == 'gcc-16'
shell: /bin/bash --noprofile --norc -e -o pipefail {0}
run: |
boost_source="${PWD}/build/Release/_deps/boost-src"

boost_include_arguments=()
while IFS= read -r include_directory; do
boost_include_arguments+=("-I${include_directory}")
done < <(
find "${boost_source}/libs" \
-mindepth 2 -maxdepth 2 \
-type d -name include |
sort
)

printf '#include <boost/config.hpp>\nboost::ulong_long_type value{};\n' |
"${CXX}" \
-std=c++23 -arch arm64 \
-DBOOST_USE_MODULES \
"${boost_include_arguments[@]}" \
-fsyntax-only -x c++ -

printf '#include <boost/system/error_code.hpp>\n' |
"${CXX}" \
-std=c++23 -arch arm64 \
-DBOOST_USE_MODULES \
"${boost_include_arguments[@]}" \
-fsyntax-only -x c++ -

printf '#include <boost/coroutine/exceptions.hpp>\n' |
"${CXX}" \
-std=c++23 -arch arm64 \
-DBOOST_USE_MODULES \
"${boost_include_arguments[@]}" \
-fsyntax-only -x c++ -

printf '#include <boost/coroutine/exceptions.hpp>\n' |
"${CXX}" \
-std=c++23 -arch arm64 \
-DBOOST_USE_MODULES \
-DBOOST_CONTEXT_DYN_LINK= \
-DBOOST_CONTEXT_EXPORT=EXPORT \
-DBOOST_CONTEXT_NO_LIB= \
-DBOOST_COROUTINES_DYN_LINK \
-DBOOST_COROUTINES_SOURCE \
-DBOOST_COROUTINE_DYN_LINK \
-DBOOST_COROUTINE_NO_LIB \
-DBOOST_COROUTINE_SOURCE \
"${boost_include_arguments[@]}" \
-fsyntax-only -x c++ -

- name: Preprocess failing coroutine source
if: matrix.os == 'macos-latest' && matrix.compiler == 'gcc-16'
shell: /bin/bash --noprofile --norc -e -o pipefail {0}
run: |
boost_source="${PWD}/build/Release/_deps/boost-src"
source_file="${boost_source}/libs/coroutine/src/exceptions.cpp"
preprocessed="${RUNNER_TEMP}/boost-coroutine-exceptions.ii"

definitions=(
-DBOOST_USE_MODULES
-DBOOST_CONTEXT_DYN_LINK=
-DBOOST_CONTEXT_EXPORT=EXPORT
-DBOOST_CONTEXT_NO_LIB=
-DBOOST_COROUTINES_DYN_LINK
-DBOOST_COROUTINES_SOURCE
-DBOOST_COROUTINE_DYN_LINK
-DBOOST_COROUTINE_NO_LIB
-DBOOST_COROUTINE_SOURCE
-Dboost_coroutine_EXPORTS
)

includes=(
"-I${boost_source}/libs/coroutine/include"
-isystem "${boost_source}/libs/assert/include"
-isystem "${boost_source}/libs/config/include"
-isystem "${boost_source}/libs/context/include"
-isystem "${boost_source}/libs/core/include"
-isystem "${boost_source}/libs/throw_exception/include"
-isystem "${boost_source}/libs/mp11/include"
-isystem "${boost_source}/libs/pool/include"
-isystem "${boost_source}/libs/integer/include"
-isystem "${boost_source}/libs/type_traits/include"
-isystem "${boost_source}/libs/winapi/include"
-isystem "${boost_source}/libs/predef/include"
-isystem "${boost_source}/libs/smart_ptr/include"
-isystem "${boost_source}/libs/exception/include"
-isystem "${boost_source}/libs/tuple/include"
-isystem "${boost_source}/libs/move/include"
-isystem "${boost_source}/libs/system/include"
-isystem "${boost_source}/libs/compat/include"
-isystem "${boost_source}/libs/variant2/include"
-isystem "${boost_source}/libs/utility/include"
-isystem "${boost_source}/libs/io/include"
-isystem "${boost_source}/libs/preprocessor/include"
)

"${CXX}" \
"${definitions[@]}" \
"${includes[@]}" \
-fmodules-ts \
-O3 -DNDEBUG -std=c++23 -arch arm64 -fPIC \
-E "${source_file}" > "${preprocessed}"

grep -n -C 3 \
'typedef unsigned long long ulong_long_type' \
"${preprocessed}" ||
true

"${CXX}" \
"${definitions[@]}" \
"${includes[@]}" \
-O3 -DNDEBUG -std=c++23 -arch arm64 -fPIC \
-fmodules-ts \
-dM -E "${source_file}" |
grep -E \
'BOOST_(HAS|NO)_LONG_LONG|_GLIBCXX_USE_LONG_LONG|_GLIBCPP_USE_LONG_LONG|ULLONG_MAX' ||
true

"${CXX}" \
"${definitions[@]}" \
"${includes[@]}" \
-O3 -DNDEBUG -std=c++23 -arch arm64 -fPIC \
-fmodules-ts \
-fsyntax-only "${source_file}" ||
true

- name: Build CMake custom preset
run: make build

- name: Install custom project
run: make install

- name: Test custom examples
run: make ctest

windows:
runs-on: windows-latest

steps:
- uses: actions/checkout@v6

- name: Setup build environment
uses: lukka/get-cmake@latest
with:
cmakeVersion: "^4.4.2"
ninjaVersion: "~1.13.0"

- name: Setup MSVC
uses: TheMrMilchmann/setup-msvc-dev@v4
with:
arch: x64

- name: Configure CMake
run: cmake --preset ${{env.BUILD_TYPE}} --log-level=VERBOSE -D BOOST_USE_MODULES=ON
Expand Down
10 changes: 5 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ repos:
# This brings in a portable version of clang-format.
# See also: https://github.com/ssciwr/clang-format-wheel
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v22.1.5
rev: v22.1.8
hooks:
- id: clang-format
types_or: [c++, c, json]
exclude: docs/TODO.json

# # CMake linting and formatting
# CMake linting and formatting
# - repo: https://github.com/BlankSpruce/gersemi
# rev: 0.27.7
# rev: 0.28.1
# hooks:
# - id: gersemi
# name: CMake linting
# args: ["--no-warn-about-unknown-commands", "--in-place"]

# TODO: Markdown linting
# Config file: .markdownlint.yaml
Expand All @@ -37,7 +37,7 @@ repos:
# - id: markdownlint

- repo: https://github.com/codespell-project/codespell
rev: v2.4.2
rev: v2.4.3
hooks:
- id: codespell
files: ^.*\.(cmake|cpp|hpp|txt|md|json|in|yaml|yml)$
Expand Down
Loading
Loading