diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 05309a8f0..811695fd8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -90,24 +90,40 @@ 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)}} \ + $([ $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=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=$RUN_GENERATOR \ + -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=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 +149,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