From 85a9983dd4751ca5d327647aca9d8772c8b26ee4 Mon Sep 17 00:00:00 2001 From: Jan Kuhlmann <33833587+M2-TE@users.noreply.github.com> Date: Fri, 16 Jan 2026 11:47:16 +0100 Subject: [PATCH 1/4] separate gen and sample stages, exclude module test runners from samples --- .github/workflows/build.yml | 64 ++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 05309a8f0..8b8155fe4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -90,24 +90,38 @@ jobs: sed -i '' 's|\${_clang_modules_json_impl}.modules.json|/opt/homebrew/opt/llvm/lib/c++/libc++.modules.json|g' $CMAKE_FIX # https://gitlab.kitware.com/cmake/cmake/-/issues/25965#note_1523575 # Build generator (C++20) and generate headers. - # Build samples directly after (highest C++ version possible) - - name: Generate Headers and Build Samples with C++${{matrix.env.cxx_max}} + - name: Generate Headers with C++20 run: | for BUILD_TYPE in Debug Release; do - cmake -B build -G '${{matrix.env.gen}}' --fresh \ - ${{matrix.env.c && format('-D CMAKE_C_COMPILER={0}', matrix.env.c)}} \ - ${{matrix.env.cxx && format('-D CMAKE_CXX_COMPILER={0}', matrix.env.cxx)}} \ - ${{matrix.env.cxx_flags && format('-D CMAKE_CXX_FLAGS''={0}''', matrix.env.cxx_flags)}} \ + cmake -B build -G '${{matrix.env.gen}}' --fresh \ + ${{matrix.env.c && format('-D CMAKE_C_COMPILER={0}', matrix.env.c)}} \ + ${{matrix.env.cxx && format('-D CMAKE_CXX_COMPILER={0}', matrix.env.cxx)}} \ + ${{matrix.env.cxx_flags && format('-D CMAKE_CXX_FLAGS''={0}''', matrix.env.cxx_flags)}} \ ${{matrix.env.linker_flags && format('-D CMAKE_EXE_LINKER_FLAGS=''{0}''', matrix.env.linker_flags)}} \ - -D VULKAN_HPP_GENERATOR_BUILD=ON \ - -D VULKAN_HPP_RUN_GENERATOR=ON \ - -D VULKAN_HPP_SAMPLES_BUILD=ON \ - -D VULKAN_HPP_TESTS_BUILD=OFF \ - -D VULKAN_HPP_TESTS_CTEST=ON \ - -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ - -D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \ - -D VULKAN_HPP_PRECOMPILE=OFF \ - -D CMAKE_CXX_STANDARD=${{matrix.env.cxx_max}} \ + -D VULKAN_HPP_GENERATOR_BUILD=ON \ + -D VULKAN_HPP_RUN_GENERATOR=ON \ + -D CMAKE_BUILD_TYPE=$BUILD_TYPE + cmake --build build --parallel --config $BUILD_TYPE --clean-first + done + + # Build samples using highest available C++ standard. + - name: Build Samples with C++${{matrix.env.cxx_max}} + if: (!matrix.env.modules) # Exclude module runners. + run: | + for BUILD_TYPE in Debug Release; do + cmake -B build -G '${{matrix.env.gen}}' --fresh \ + ${{matrix.env.c && format('-D CMAKE_C_COMPILER={0}', matrix.env.c)}} \ + ${{matrix.env.cxx && format('-D CMAKE_CXX_COMPILER={0}', matrix.env.cxx)}} \ + ${{matrix.env.cxx_flags && format('-D CMAKE_CXX_FLAGS''={0}''', matrix.env.cxx_flags)}} \ + ${{matrix.env.linker_flags && format('-D CMAKE_EXE_LINKER_FLAGS=''{0}''', matrix.env.linker_flags)}} \ + -D VULKAN_HPP_GENERATOR_BUILD=OFF \ + -D VULKAN_HPP_RUN_GENERATOR=OFF \ + -D VULKAN_HPP_SAMPLES_BUILD=ON \ + -D VULKAN_HPP_TESTS_BUILD=OFF \ + -D VULKAN_HPP_TESTS_CTEST=ON \ + -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ + -D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \ + -D CMAKE_CXX_STANDARD=${{matrix.env.cxx_max}} \ -D CMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build build --parallel --config $BUILD_TYPE --clean-first done @@ -133,21 +147,21 @@ jobs: echo "Building C++$CXX_STANDARD in $BUILD_TYPE" echo "=================================================================================" - cmake -B build -G '${{matrix.env.gen}}' --fresh \ + cmake -B build -G '${{matrix.env.gen}}' --fresh \ -D VULKAN_HPP_BUILD_CXX_MODULE=${{matrix.env.modules && 'ON' || 'OFF'}} \ ${{matrix.env.cxx && format('-D CMAKE_CXX_COMPILER={0}', matrix.env.cxx)}} \ ${{matrix.env.cxx_flags && format('-D CMAKE_CXX_FLAGS''={0}''', matrix.env.cxx_flags)}} \ ${{matrix.env.linker_flags && format('-D CMAKE_EXE_LINKER_FLAGS=''{0}''', matrix.env.linker_flags)}} \ ${{matrix.env.modules && '-DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=d0edc3af-4c50-42ea-a356-e2862fe7a444' || ''}} \ - -D VULKAN_HPP_GENERATOR_BUILD=OFF \ - -D VULKAN_HPP_RUN_GENERATOR=OFF \ - -D VULKAN_HPP_SAMPLES_BUILD=OFF \ - -D VULKAN_HPP_TESTS_BUILD=ON \ - -D VULKAN_HPP_TESTS_CTEST=ON \ - -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ - -D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \ - -D VULKAN_HPP_PRECOMPILE=OFF \ - -D CMAKE_CXX_STANDARD=$CXX_STANDARD \ + -D VULKAN_HPP_GENERATOR_BUILD=OFF \ + -D VULKAN_HPP_RUN_GENERATOR=OFF \ + -D VULKAN_HPP_SAMPLES_BUILD=OFF \ + -D VULKAN_HPP_TESTS_BUILD=ON \ + -D VULKAN_HPP_TESTS_CTEST=ON \ + -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ + -D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \ + -D VULKAN_HPP_PRECOMPILE=OFF \ + -D CMAKE_CXX_STANDARD=$CXX_STANDARD \ -D CMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build build --parallel --config $BUILD_TYPE --clean-first ctest -j --output-on-failure --test-dir build -C $BUILD_TYPE From 3a8d9c53a60c3e4dd74430f207e07f57cf53564a Mon Sep 17 00:00:00 2001 From: Jan Kuhlmann <33833587+M2-TE@users.noreply.github.com> Date: Fri, 16 Jan 2026 11:47:35 +0100 Subject: [PATCH 2/4] only run release mode generator --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b8155fe4..2a1fcc748 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -99,7 +99,7 @@ jobs: ${{matrix.env.cxx_flags && format('-D CMAKE_CXX_FLAGS''={0}''', matrix.env.cxx_flags)}} \ ${{matrix.env.linker_flags && format('-D CMAKE_EXE_LINKER_FLAGS=''{0}''', matrix.env.linker_flags)}} \ -D VULKAN_HPP_GENERATOR_BUILD=ON \ - -D VULKAN_HPP_RUN_GENERATOR=ON \ + -D VULKAN_HPP_RUN_GENERATOR=$([ $BUILD_TYPE = Release ] && ON || OFF) \ -D CMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build build --parallel --config $BUILD_TYPE --clean-first done From 2de0a28bb8379ce1e334d8e0b9ba194d99dc12e7 Mon Sep 17 00:00:00 2001 From: Jan Kuhlmann <33833587+M2-TE@users.noreply.github.com> Date: Fri, 16 Jan 2026 11:50:37 +0100 Subject: [PATCH 3/4] enable dynamic dispatch to suppress warnings --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a1fcc748..ff45a812f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -99,7 +99,8 @@ jobs: ${{matrix.env.cxx_flags && format('-D CMAKE_CXX_FLAGS''={0}''', matrix.env.cxx_flags)}} \ ${{matrix.env.linker_flags && format('-D CMAKE_EXE_LINKER_FLAGS=''{0}''', matrix.env.linker_flags)}} \ -D VULKAN_HPP_GENERATOR_BUILD=ON \ - -D VULKAN_HPP_RUN_GENERATOR=$([ $BUILD_TYPE = Release ] && ON || OFF) \ + -D VULKAN_HPP_RUN_GENERATOR=$([ $BUILD_TYPE = Release ] && "ON" || "OFF") \ + -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ -D CMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build build --parallel --config $BUILD_TYPE --clean-first done From d57d987ee5071f6fb95c9c061d6ea9b02e8f7a52 Mon Sep 17 00:00:00 2001 From: Jan Kuhlmann <33833587+M2-TE@users.noreply.github.com> Date: Fri, 16 Jan 2026 11:53:31 +0100 Subject: [PATCH 4/4] ternary bash --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ff45a812f..811695fd8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -93,13 +93,14 @@ jobs: - name: Generate Headers with C++20 run: | for BUILD_TYPE in Debug Release; do + $([ $BUILD_TYPE = Release ] && RUN_GENERATOR="ON" || RUN_GENERATOR="OFF") cmake -B build -G '${{matrix.env.gen}}' --fresh \ ${{matrix.env.c && format('-D CMAKE_C_COMPILER={0}', matrix.env.c)}} \ ${{matrix.env.cxx && format('-D CMAKE_CXX_COMPILER={0}', matrix.env.cxx)}} \ ${{matrix.env.cxx_flags && format('-D CMAKE_CXX_FLAGS''={0}''', matrix.env.cxx_flags)}} \ ${{matrix.env.linker_flags && format('-D CMAKE_EXE_LINKER_FLAGS=''{0}''', matrix.env.linker_flags)}} \ -D VULKAN_HPP_GENERATOR_BUILD=ON \ - -D VULKAN_HPP_RUN_GENERATOR=$([ $BUILD_TYPE = Release ] && "ON" || "OFF") \ + -D VULKAN_HPP_RUN_GENERATOR=$RUN_GENERATOR \ -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ -D CMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build build --parallel --config $BUILD_TYPE --clean-first