Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
0a07d5c
tests: migrate deprecated std::is_trivial_v
mochaaP Dec 1, 2025
9904bdd
tools: add python typings
mochaaP Dec 1, 2025
b33dc01
build: support meson build system
mochaaP Dec 1, 2025
72bd4d2
ci: fix shellcheck warnings
mochaaP Dec 1, 2025
a478e01
ci: add meson tests
mochaaP Dec 1, 2025
10c0fd3
style: run clang-format
mochaaP Dec 1, 2025
1363a27
ci: workaround clang sanitizer linking bug
mochaaP Dec 1, 2025
ae9c89e
build/meson: fix modules builds on mingw winpthreads
mochaaP Dec 1, 2025
ec80d04
build/meson: do not link -nodefaultlibs on sanitized builds
mochaaP Dec 1, 2025
3b8e063
build/meson: increase max object section count on msvc
mochaaP Dec 1, 2025
d998003
ci: only test release builds, do not run benchmarks
mochaaP Dec 2, 2025
de5f1bb
ci: pin runner versions
mochaaP Dec 2, 2025
dffce20
ci: exclude unsupported / broken platforms
mochaaP Dec 2, 2025
4c3ff52
build: add a notice about clang-cl broken msvc compatibility
mochaaP Dec 2, 2025
5e8745e
build: meson gtest autodiscovery
mochaaP Dec 2, 2025
56edfc0
build: meson doctest autoglob
mochaaP Dec 2, 2025
bdcf49f
ci: manage meson builds from proxy-ci
mochaaP Dec 2, 2025
8de73b7
build: meson benchmarks autogen
mochaaP Dec 2, 2025
4e64a00
build: make meson use common doctest extract logic
mochaaP Dec 3, 2025
337c368
build/meson: auto disable tests if in a subproject
mochaaP Dec 3, 2025
cf35391
build/meson: auto disable benchmarks if in a subproject
mochaaP Dec 3, 2025
479b2c1
build/meson: remove docdir installation
mochaaP Dec 3, 2025
6692953
build/meson: remove all autogen
mochaaP Dec 5, 2025
e020f0b
build/meson: only add WINPTHREAD_COND_DECL workaround if winpthreads …
mochaaP Dec 5, 2025
443b90f
ci: reword step names
mochaaP Dec 5, 2025
124bce2
ci: move meson ci tests into bvt workflows
mochaaP Dec 6, 2025
32071d5
build/meson: support pgi compilers
mochaaP Dec 6, 2025
df5bd1b
ci: remove meson from compatibility tests
mochaaP Dec 6, 2025
f32138f
ci: run meson and cmake in one pass
mochaaP Dec 6, 2025
886f11f
Test for std::format using __cpp_lib_format
mochaaP Dec 6, 2025
76e68d2
build/meson: remove module support
mochaaP Dec 8, 2025
09e7ef2
fixup! ci: add meson tests
mochaaP Dec 8, 2025
5dd012d
fixup! Test for std::format using __cpp_lib_format
mochaaP Dec 8, 2025
e5fad93
build/meson: add test and benchmarks to all targets, only test build …
mochaaP Dec 8, 2025
952456f
fixup! Test for std::format using __cpp_lib_format
mochaaP Dec 8, 2025
a740673
fixup! build/meson: add test and benchmarks to all targets, only test…
mochaaP Dec 8, 2025
717c86d
fixup! build/meson: add test and benchmarks to all targets, only test…
mochaaP Dec 8, 2025
4744c25
build/meson: update fmt to 12.1.0
mochaaP Dec 8, 2025
2c7f068
fixup! tools: add python typings
mochaaP Dec 8, 2025
0ad0d06
fixup! build/meson: remove all autogen
mochaaP Dec 8, 2025
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
29 changes: 18 additions & 11 deletions .github/workflows/bvt-appleclang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,33 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: install meson
run: pipx install meson

- name: check compiler versions
run: |
clang --version
cc --version
xcodebuild -version

- name: build and run test with AppleClang
- name: build and run test with AppleClang on cmake
run: |
cmake -B build -GNinja -DCMAKE_CXX_STANDARD=23 -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=FALSE
cmake --build build -j
ctest --test-dir build -j
mkdir build/drop
chmod +x tools/dump_build_env.sh
./tools/dump_build_env.sh clang++ build/drop/env-info.json
cmake -B build-cmake -GNinja -DCMAKE_CXX_STANDARD=23 -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=FALSE
cmake --build build-cmake -j
ctest --test-dir build-cmake -j
mkdir build-cmake/drop
bash ./tools/dump_build_env.sh c++ build-cmake/drop/env-info.json

- name: run benchmarks
- name: build and run test with AppleClang on meson
run: |
build/benchmarks/msft_proxy_benchmarks --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build/drop/benchmarking-results.json
meson setup build-meson --buildtype=release -Dtests=enabled -Dbenchmarks=enabled --force-fallback-for=fmt
meson test -C build-meson
meson test -C build-meson --benchmark --test-args=--benchmark_list_tests=true

- name: run benchmarks
run: build-cmake/benchmarks/msft_proxy_benchmarks --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build-cmake/drop/benchmarking-results.json

- name: archive benchmarking results
uses: actions/upload-artifact@v4
with:
name: drop-appleclang
path: build/drop/
path: build-cmake/drop/
42 changes: 26 additions & 16 deletions .github/workflows/bvt-clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,45 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: install meson
run: pipx install meson

- name: install clang
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 21
sudo apt install -y libc++-21-dev clang-format-21
curl https://apt.llvm.org/llvm.sh | sudo bash -s -- 21
sudo apt install -y clang-21 libc++-21-dev clang-format-21
cat <<'EOF' >> "$GITHUB_ENV"
CC=clang-21
CXX=clang++-21
CXXFLAGS=-stdlib=libc++
EOF

- name: check compiler version
run: |
clang++-21 --version
"$CXX" --version

- name: build and run test with clang 21
- name: build and run test with clang 21 on cmake
run: |
cmake -B build -GNinja -DCMAKE_C_COMPILER=clang-21 -DCMAKE_CXX_COMPILER=clang++-21 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_CXX_STANDARD=23 -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=TRUE
mapfile -t FILES < <(find include tests benchmarks build/examples_from_docs tools -type f \( -name '*.h' -o -name '*.ixx' -o -name '*.cpp' \))
cmake -B build-cmake -GNinja -DCMAKE_CXX_STANDARD=23 -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=TRUE
mapfile -t FILES < <(find include tests benchmarks build-cmake/examples_from_docs tools -type f \( -name '*.h' -o -name '*.ixx' -o -name '*.cpp' \))
echo "Running clang-format on ${#FILES[@]} files: ${FILES[*]}"
clang-format-21 --dry-run --Werror "${FILES[@]}"
cmake --build build -j
ctest --test-dir build -j
mkdir build/drop
chmod +x tools/dump_build_env.sh
./tools/dump_build_env.sh clang++-21 build/drop/env-info.json
cmake --build build-cmake -j
ctest --test-dir build-cmake -j
mkdir build-cmake/drop
bash ./tools/dump_build_env.sh "$CXX" build-cmake/drop/env-info.json

- name: run benchmarks
- name: build and run test with clang 21 on meson
run: |
build/benchmarks/msft_proxy_benchmarks --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build/drop/benchmarking-results.json
meson setup build-meson --buildtype=release -Dtests=enabled -Dbenchmarks=enabled --force-fallback-for=fmt
meson test -C build-meson
meson test -C build-meson --benchmark --test-args=--benchmark_list_tests=true

- name: run benchmarks
run: build-cmake/benchmarks/msft_proxy_benchmarks --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build-cmake/drop/benchmarking-results.json

- name: archive benchmarking results
uses: actions/upload-artifact@v4
with:
name: drop-clang
path: build/drop/
path: build-cmake/drop/
83 changes: 33 additions & 50 deletions .github/workflows/bvt-compatibility.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,63 +4,46 @@ on:
jobs:
bvt-compatibility:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
compiler:
- {family: gcc, version: 13, modules: false}
- {family: gcc, version: 14, modules: true}
- {family: clang, version: 16, modules: false}
- {family: clang, version: 17, modules: false}
- {family: clang, version: 18, modules: false}
- {family: clang, version: 19, modules: false}
- {family: clang, version: 20, modules: true}

steps:
- uses: actions/checkout@v4

- name: install compilers
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 20
sudo apt install -y gcc-13 g++-13 gcc-14 g++-14 clang-16 clang-17 clang-18 clang-19 libc++-17-dev

- name: check compiler versions
run: |
g++-13 --version
g++-14 --version
clang++-16 --version
clang++-17 --version
clang++-18 --version
clang++-19 --version
clang++-20 --version

- name: build and run test with gcc 14
run: |
cmake -B build-gcc-14 -GNinja -DCMAKE_C_COMPILER=gcc-14 -DCMAKE_CXX_COMPILER=g++-14 -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=TRUE
cmake --build build-gcc-14 -j
ctest --test-dir build-gcc-14 -j

- name: build and run test with gcc 13
run: |
cmake -B build-gcc-13 -DCMAKE_C_COMPILER=gcc-13 -DCMAKE_CXX_COMPILER=g++-13 -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=FALSE
cmake --build build-gcc-13 -j
ctest --test-dir build-gcc-13 -j

- name: build and run test with clang 20
run: |
cmake -B build-clang-20 -GNinja -DCMAKE_C_COMPILER=clang-20 -DCMAKE_CXX_COMPILER=clang++-20 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=TRUE
cmake --build build-clang-20 -j
ctest --test-dir build-clang-20 -j
- name: build and run test with clang 19
- name: install gcc
if: ${{ matrix.compiler.family == 'gcc' }}
run: |
cmake -B build-clang-19 -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=FALSE
cmake --build build-clang-19 -j
ctest --test-dir build-clang-19 -j
sudo apt install -y 'g++-${{ matrix.compiler.version }}'
cat <<'EOF' >> "$GITHUB_ENV"
CC=gcc-${{ matrix.compiler.version }}
CXX=g++-${{ matrix.compiler.version }}
EOF

- name: build and run test with clang 18
- name: install clang
if: ${{ matrix.compiler.family == 'clang' }}
run: |
cmake -B build-clang-18 -DCMAKE_C_COMPILER=clang-18 -DCMAKE_CXX_COMPILER=clang++-18 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=FALSE
cmake --build build-clang-18 -j
ctest --test-dir build-clang-18 -j
sudo apt install -y 'clang-${{ matrix.compiler.version }}' 'clang-tools-${{ matrix.compiler.version }}' 'libc++-${{ matrix.compiler.version }}-dev' 'libc++abi-${{ matrix.compiler.version }}-dev'
cat <<'EOF' >> "$GITHUB_ENV"
CC=clang-${{ matrix.compiler.version }}
CXX=clang++-${{ matrix.compiler.version }}
CXXFLAGS=-stdlib=libc++
EOF

- name: build and run test with clang 17
- name: check compiler version
run: |
cmake -B build-clang-17 -DCMAKE_C_COMPILER=clang-17 -DCMAKE_CXX_COMPILER=clang++-17 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=FALSE
cmake --build build-clang-17 -j
ctest --test-dir build-clang-17 -j
"$CXX" --version

- name: build and run test with clang 16
- name: build and run test with cmake
run: |
cmake -B build-clang-16 -DCMAKE_C_COMPILER=clang-16 -DCMAKE_CXX_COMPILER=clang++-16 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=FALSE
cmake --build build-clang-16 -j
ctest --test-dir build-clang-16 -j
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release '-DPROXY_BUILD_MODULES=${{ matrix.compiler.modules }}'
cmake --build build -j
ctest --test-dir build -j
27 changes: 16 additions & 11 deletions .github/workflows/bvt-gcc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,35 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: install dependencies
- name: install cmake and meson
run: |
apt-get update
apt-get install -y cmake ninja-build
apt-get install -y cmake meson ninja-build

- name: check compiler version
run: |
g++ --version

- name: build and run test with gcc 15
- name: build and run test with gcc 15 on cmake
run: |
cmake -B build -GNinja -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_STANDARD=23 -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=TRUE
cmake --build build -j
ctest --test-dir build -j
mkdir build/drop
cmake -B build-cmake -GNinja -DCMAKE_CXX_STANDARD=23 -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=TRUE
cmake --build build-cmake -j
ctest --test-dir build-cmake -j
mkdir build-cmake/drop
chmod +x tools/dump_build_env.sh
./tools/dump_build_env.sh g++ build/drop/env-info.json
./tools/dump_build_env.sh g++ build-cmake/drop/env-info.json

- name: run benchmarks
- name: build and run test with gcc 15 on meson
run: |
build/benchmarks/msft_proxy_benchmarks --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build/drop/benchmarking-results.json
meson setup build-meson --buildtype=release -Dtests=enabled -Dbenchmarks=enabled --force-fallback-for=fmt
meson test -C build-meson
meson test -C build-meson --benchmark --test-args=--benchmark_list_tests=true

- name: run benchmarks
run: build-cmake/benchmarks/msft_proxy_benchmarks --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build-cmake/drop/benchmarking-results.json

- name: archive benchmarking results
uses: actions/upload-artifact@v4
with:
name: drop-gcc
path: build/drop/
path: build-cmake/drop/
26 changes: 17 additions & 9 deletions .github/workflows/bvt-msvc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,31 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: install meson
run: pipx install meson

- name: add cl.exe to PATH
uses: ilammy/msvc-dev-cmd@v1

- name: build and run test with MSVC
- name: build and run test with MSVC on cmake
run: |
cmake -B build -DCMAKE_CXX_STANDARD=23 -DPROXY_BUILD_MODULES=TRUE `
&& cmake --build build --config Release -j `
&& ctest --test-dir build -j `
&& mkdir build\drop > $null `
&& .\tools\dump_build_env_msvc.ps1 -OutputPath build\drop\env-info.json
cmake -B build-cmake -DCMAKE_CXX_STANDARD=23 -DPROXY_BUILD_MODULES=TRUE `
&& cmake --build build-cmake --config Release -j `
&& ctest --test-dir build-cmake -j `
&& mkdir build-cmake\drop > $null `
&& .\tools\dump_build_env_msvc.ps1 -OutputPath build-cmake\drop\env-info.json

- name: run benchmarks
- name: build and run test with MSVC on meson
run: |
build\benchmarks\Release\msft_proxy_benchmarks.exe --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build\drop\benchmarking-results.json
meson setup build-meson --buildtype=release -Dtests=enabled -Dbenchmarks=enabled --force-fallback-for=fmt --vsenv
meson test -C build-meson
meson test -C build-meson --benchmark --test-args=--benchmark_list_tests=true

- name: run benchmarks
run: build-cmake\benchmarks\Release\msft_proxy_benchmarks.exe --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build-cmake\drop\benchmarking-results.json

- name: archive benchmarking results
uses: actions/upload-artifact@v4
with:
name: drop-msvc
path: build/drop/
path: build-cmake/drop/
32 changes: 22 additions & 10 deletions .github/workflows/bvt-nvhpc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,41 @@ jobs:
- name: free disk space
uses: jlumbroso/free-disk-space@v1.3.1

# - name: install meson
# # FIXME: install from upstream once https://github.com/mesonbuild/meson/pull/15353 is released
# run: pipx install git+https://github.com/mesonbuild/meson@02b85a846629090a0c7f18e860bab0a10ea4349b
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed that this change was released in 1.10.0. Thanks for the update! However, when building locally with NVHPC, I encountered several errors. I haven't had a chance to investigate in detail yet, but it seems related to the configuration.

In our CMake setup, we explicitly declare fmt as a SYSTEM dependency to suppress compiler warnings from third-party code, which helps avoid build failures with NVHPC. Does Meson offer a similar mechanism to mark dependencies as system includes?


- name: install NVHPC 25.11
run: |
curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
sudo apt-get update -y
sudo apt-get install -y nvhpc-25-11
cat<<'EOF' >> "$GITHUB_ENV"
CC=/opt/nvidia/hpc_sdk/Linux_x86_64/25.11/compilers/bin/nvc
CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/25.11/compilers/bin/nvc++
EOF

- name: build and run test with NVHPC 25.11
- name: build and run test with NVHPC 25.11 on cmake
run: |
PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/25.11/compilers/bin:$PATH; export PATH
cmake -B build -GNinja -DCMAKE_C_COMPILER=nvc -DCMAKE_CXX_COMPILER=nvc++ -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=FALSE
cmake --build build -j
ctest --test-dir build -j
mkdir build/drop
cmake -B build-cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DPROXY_BUILD_MODULES=FALSE
cmake --build build-cmake -j
ctest --test-dir build-cmake -j
mkdir build-cmake/drop
chmod +x tools/dump_build_env.sh
./tools/dump_build_env.sh nvc++ build/drop/env-info.json
./tools/dump_build_env.sh "$CXX" build-cmake/drop/env-info.json

# - name: build and run test with NVHPC 25.11 on meson
# run: |
# meson setup build-meson --buildtype=release -Dtests=enabled -Dbenchmarks=enabled --force-fallback-for=fmt
# meson test -C build-meson
# meson test -C build-meson --benchmark --test-args=--benchmark_list_tests=true

- name: run benchmarks
run: |
build/benchmarks/msft_proxy_benchmarks --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build/drop/benchmarking-results.json
run: build-cmake/benchmarks/msft_proxy_benchmarks --benchmark_min_warmup_time=0.1 --benchmark_min_time=0.1s --benchmark_repetitions=30 --benchmark_enable_random_interleaving=true --benchmark_report_aggregates_only=true --benchmark_format=json > build-cmake/drop/benchmarking-results.json

- name: archive benchmarking results
uses: actions/upload-artifact@v4
with:
name: drop-nvhpc
path: build/drop/
path: build-cmake/drop/
Loading