diff --git a/.github/workflows/build-latest-spec.yml b/.github/workflows/build-latest-spec.yml index 0756ae4ce..2293ad128 100644 --- a/.github/workflows/build-latest-spec.yml +++ b/.github/workflows/build-latest-spec.yml @@ -29,18 +29,8 @@ jobs: - name: Generate Vulkan-Hpp and Build Samples/Tests run: | - cmake -B build -G Ninja \ - -D VULKAN_HPP_GENERATOR_BUILD=ON \ - -D VULKAN_HPP_RUN_GENERATOR=ON \ - -D VULKAN_HPP_SAMPLES_BUILD=ON \ - -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=ON \ - -D CMAKE_C_COMPILER=gcc \ - -D CMAKE_CXX_COMPILER=g++ \ - -D CMAKE_CXX_STANDARD=23 \ + cmake -B build -G Ninja --preset generator-tests \ + -D CMAKE_CXX_STANDARD=23 \ -D CMAKE_BUILD_TYPE=Release cmake --build build --parallel ctest -j --output-on-failure --test-dir build diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c332bdf78..e9dc0a831 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,6 +47,13 @@ jobs: { os: windows-2025, cxx: cl, c: cl , arch: x64, gen: Ninja, modules: true, cxx_max: 23, cxx_flags: '//EHsc' }, ] + env: + VAR_CMAKE_FLAGS: | + ${{ 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) }} \ + steps: - name: Checkout uses: actions/checkout@v5.0.0 @@ -93,15 +100,9 @@ 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=$RUN_GENERATOR \ - -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ + [ $BUILD_TYPE = Release ] && PRESET="generator-run" || PRESET="generator-build" + cmake -B build -G '${{matrix.env.gen}}' --fresh --preset $PRESET \ + ${{ env.VAR_CMAKE_FLAGS }} \ -D CMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build build --parallel --config $BUILD_TYPE --clean-first done @@ -111,20 +112,9 @@ jobs: 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=OFF \ - -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ - -D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \ - -D VULKAN_HPP_PRECOMPILE=ON \ - -D CMAKE_CXX_STANDARD=${{matrix.env.cxx_max}} \ + cmake -B build -G '${{matrix.env.gen}}' --fresh --preset samples \ + ${{ env.VAR_CMAKE_FLAGS }} \ + -D CMAKE_CXX_STANDARD=${{matrix.env.cxx_max}} \ -D CMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build build --parallel --config $BUILD_TYPE --clean-first done @@ -150,22 +140,12 @@ jobs: echo "Building C++$CXX_STANDARD in $BUILD_TYPE" echo "=================================================================================" - 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=ON \ - -D CMAKE_CXX_STANDARD=$CXX_STANDARD \ - -D CMAKE_BUILD_TYPE=$BUILD_TYPE + cmake -B build -G '${{matrix.env.gen}}' --fresh --preset tests \ + -D VULKAN_HPP_BUILD_CXX_MODULE=${{matrix.env.modules && 'ON' || 'OFF'}} \ + ${{ env.VAR_CMAKE_FLAGS }} \ + -D CMAKE_CXX_STANDARD=$CXX_STANDARD \ + -D CMAKE_BUILD_TYPE=$BUILD_TYPE \ + ${{matrix.env.modules && '-DCMAKE_EXPERIMENTAL_CXX_IMPORT_STD=d0edc3af-4c50-42ea-a356-e2862fe7a444' || ''}} cmake --build build --parallel --config $BUILD_TYPE --clean-first ctest -j --output-on-failure --test-dir build -C $BUILD_TYPE done diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 000000000..0d51e2c98 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,76 @@ +{ + "version": 3, + "cmakeMinimumRequired": { + "major": 3, + "minor": 22 + }, + "configurePresets": [ + { + "name": "base", "hidden": true, + "cacheVariables": { "VULKAN_HPP_DISPATCH_LOADER_DYNAMIC": "ON", "VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP": "ON" } + }, + { + "name": "base-generator-disabled", "hidden": true, + "cacheVariables": { "VULKAN_HPP_GENERATOR_BUILD": "OFF", "VULKAN_HPP_RUN_GENERATOR": "OFF" } + }, + { + "name": "base-generator-build", "hidden": true, + "cacheVariables": { "VULKAN_HPP_GENERATOR_BUILD": "ON", "VULKAN_HPP_RUN_GENERATOR": "OFF" } + }, + { + "name": "base-generator-run", "hidden": true, + "cacheVariables": { "VULKAN_HPP_GENERATOR_BUILD": "ON", "VULKAN_HPP_RUN_GENERATOR": "ON" } + }, + { + "name": "base-samples", "hidden": true, + "cacheVariables": { "VULKAN_HPP_SAMPLES_BUILD": "ON", "VULKAN_HPP_PRECOMPILE": "ON" } + }, + { + "name": "base-samples-disabled", "hidden": true, + "cacheVariables": { "VULKAN_HPP_SAMPLES_BUILD": "OFF", "VULKAN_HPP_PRECOMPILE": "OFF" } + }, + { + "name": "base-tests", "hidden": true, + "cacheVariables": { "VULKAN_HPP_TESTS_BUILD": "ON", "VULKAN_HPP_TESTS_CTEST": "ON" } + }, + { + "name": "base-tests-disabled", "hidden": true, + "cacheVariables": { "VULKAN_HPP_TESTS_BUILD": "OFF", "VULKAN_HPP_TESTS_CTEST": "OFF" } + }, + + { + "name": "generator-build", "displayName": "Standalone: Build Generator", + "inherits": [ "base", "base-generator-build", "base-samples-disabled", "base-tests-disabled" ] + }, + { + "name": "generator-run", "displayName": "Standalone: Build and Run Generator", + "inherits": [ "base", "base-generator-run", "base-samples-disabled", "base-tests-disabled" ] + }, + + { + "name": "samples", "displayName": "Validation: Samples", + "inherits": [ "base", "base-generator-disabled", "base-samples", "base-tests-disabled" ] + }, + { + "name": "tests", "displayName": "Validation: Tests", + "inherits": [ "base", "base-generator-disabled", "base-samples-disabled", "base-tests" ] + }, + { + "name": "samples-tests", "displayName": "Validation: Samples and Tests", + "inherits": [ "base", "base-generator-disabled", "base-samples", "base-tests" ] + }, + + { + "name": "generator-samples", "displayName": "Fresh Validation: Generator + Samples", + "inherits": [ "base", "base-generator-run", "base-samples", "base-tests-disabled" ] + }, + { + "name": "generator-tests", "displayName": "Fresh Validation: Generator + Tests", + "inherits": [ "base", "base-generator-run", "base-samples-disabled", "base-tests" ] + }, + { + "name": "generator-samples-tests", "displayName": "Fresh Validation: Generator + Samples and Tests", + "inherits": [ "base", "base-generator-run", "base-samples", "base-tests" ] + } + ] +} \ No newline at end of file