name: Windows CI

on:
  workflow_dispatch:
  push:
    branches: [ "master", "devel" ]
  pull_request:
    branches: [ "master", "devel" ]

env:
  BUILD_TYPE: RelWithDebInfo
  INSTALL_LOCATION: SonivoxV3

jobs:
  build:
    runs-on: windows-latest
    strategy:
        fail-fast: false
        matrix:
          include:
            - { icon: '⬛', sys: mingw32 }
            - { icon: '🟦', sys: mingw64 }
            - { icon: '🟨', sys: ucrt64  }
            - { icon: '🟧', sys: clang64 }
    name: 🚧${{ matrix.icon }} ${{ matrix.sys }}
    defaults:
      run:
        shell: msys2 {0}

    steps:
    - uses: actions/checkout@v4

    - name: '${{ matrix.icon }} Setup MSYS2'
      uses: msys2/setup-msys2@v2
      with:
        release: false
        msystem: ${{matrix.sys}}
        install: >-
          git
          make
        pacboy: >-
          toolchain:p
          cmake:p
          ninja:p
          gtest:p

    - name: '${{ matrix.icon }} Configure CMake'
      run: cmake -B build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_INSTALL_PREFIX=${{env.INSTALL_LOCATION}}

    - name: '${{ matrix.icon }} Build'
      run: cmake --build build --config ${{env.BUILD_TYPE}}

    - name: '${{ matrix.icon }} Test'
      working-directory: build
      run: ctest -C ${{env.BUILD_TYPE}} --verbose

    - name: '${{ matrix.icon }} Install'
      run: cmake --install build

    - name: '${{ matrix.icon }} Create Archive'
      run: tar cvf ${{env.INSTALL_LOCATION}}.tar ${{env.INSTALL_LOCATION}}

    - name: '${{ matrix.icon }} Upload Artifacts'
      uses: actions/upload-artifact@v4
      with:
        name: ${{env.INSTALL_LOCATION}}-${{matrix.sys}}
        path: ${{env.INSTALL_LOCATION}}.tar
        retention-days: 90
        overwrite: true
