Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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/
44 changes: 27 additions & 17 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 20
sudo apt install -y libc++-20-dev clang-format-20
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++-20 --version
"$CXX" --version

- name: build and run test with clang 20
- name: build and run test with clang 21 on cmake
run: |
cmake -B build -GNinja -DCMAKE_C_COMPILER=clang-20 -DCMAKE_CXX_COMPILER=clang++-20 -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 -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-20 --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++-20 build/drop/env-info.json
clang-format-21 --dry-run --Werror "${FILES[@]}"
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/
74 changes: 33 additions & 41 deletions .github/workflows/bvt-compatibility.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,54 +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: |
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

- 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 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
31 changes: 19 additions & 12 deletions .github/workflows/bvt-gcc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,39 @@ on:
jobs:
bvt-gcc:
runs-on: ubuntu-24.04
container: gcc:15
steps:
- uses: actions/checkout@v4

- name: install gcc
- name: install cmake and meson
run: |
sudo apt install -y gcc-14 g++-14
apt-get update
apt-get install -y cmake meson ninja-build

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

- name: build and run test with gcc 14
- name: build and run test with gcc 15 on cmake
run: |
cmake -B build -GNinja -DCMAKE_C_COMPILER=gcc-14 -DCMAKE_CXX_COMPILER=g++-14 -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++-14 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/
36 changes: 24 additions & 12 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 NVHPC 25.7
# - 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

- 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-7
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.7
- name: build and run test with NVHPC 25.11 on cmake
run: |
PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/25.7/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
Loading