name: Build

on:
  push:
    branches:
      - "*"
  pull_request:
    branches:
      - "*"
    types: [opened, synchronize, reopened]

jobs:
  build:
    name: Build binaries
    runs-on: windows-latest
    strategy:
      matrix:
        configuration:
          - Debug
          - Release
    steps:
      - name: Check out files
        uses: actions/checkout@v2
        with:
          submodules: true
          fetch-depth: 0
          lfs: false

      - name: Install WDK
        run: |
          curl -L --output wdksetup.exe https://go.microsoft.com/fwlink/?linkid=2166289
          cmd /c start /wait wdksetup.exe /ceip off /quiet /features +

      - name: Setup CMake
        uses: lukka/get-cmake@latest

      - name: Set up problem matching
        uses: ammaraskar/msvc-problem-matcher@master

      - name: Add msbuild to PATH
        uses: microsoft/setup-msbuild@v1.1
        with:
          msbuild-architecture: x64

      - name: Setup DevCmd
        uses: ilammy/msvc-dev-cmd@v1.10.0
        with:
          arch: x64

      - name: Configure CMake
        run: cmake --preset=vs2022

      - name: Build ${{matrix.configuration}}
        run: cmake --build --preset=vs2022 --config ${{matrix.configuration}}

      - name: Upload ${{matrix.configuration}} binaries
        uses: actions/upload-artifact@v2
        with:
          name: ${{matrix.configuration}} binaries
          path: |
            build/vs2022/artifacts-${{matrix.configuration}}/*.exe
            build/vs2022/artifacts-${{matrix.configuration}}/*.pdb
            build/vs2022/artifacts-${{matrix.configuration}}/*.sys