
name: CI Windows

on:
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ${{matrix.os}}
    
    defaults:
      run:
        shell: bash
    
    strategy:
      matrix:
        os: [windows-2022, windows-2025]
        architecture: [x86, x64]
        cpp_standard: [11, 14, 17, 20, 23]
        build_type: [Debug, Release]

    steps:
    - uses: actions/checkout@v4
      with:
        submodules: recursive

    - name: Setup MSVC
      uses: TheMrMilchmann/setup-msvc-dev@v2
      with:
        arch: ${{matrix.architecture}}
        
    - name: Build
      run: |
        modules_flag=${{(contains(fromJSON('["windows-2019"]'), matrix.os) || matrix.cpp_standard < 20) && 'OFF' || 'ON'}}
        cmake -B build/${{matrix.cpp_standard}}/${{matrix.build_type}} \
          -DVULKAN_HPP_SAMPLES_BUILD=ON                                \
          -DVULKAN_HPP_TESTS_BUILD=ON                                  \
          -DVULKAN_HPP_ENABLE_CPP20_MODULES=$modules_flag              \
          -DVULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON                      \
          -DVULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON                  \
          -DVULKAN_HPP_PRECOMPILE=OFF                                  \
          -DVULKAN_HPP_RUN_GENERATOR=ON                                \
          -DCMAKE_CXX_STANDARD=${{matrix.cpp_standard}}                \
          -DCMAKE_BUILD_TYPE=${{matrix.build_type}}
        cmake --build build/${{matrix.cpp_standard}}/${{matrix.build_type}} --parallel
