name: Windows

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:

    strategy:
      matrix:
        target:
          #- i686-pc-windows-gnu
          - i686-pc-windows-msvc
          #- x86_64-pc-windows-gnu
          - x86_64-pc-windows-msvc
        channel: [ stable ]

    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v4
      with:
        submodules: recursive
    - name: setup
      uses: dtolnay/rust-toolchain@master
      with:
        toolchain: ${{ matrix.channel }}-${{ matrix.target }}
        targets: ${{ matrix.target }}

    - name: Add mingw32 to path for i686-gnu
      run: |
        echo "C:\msys64\mingw32\bin" >> $GITHUB_PATH
        echo "C:\msys64\usr\bin" >> $GITHUB_PATH
      if: matrix.target == 'i686-pc-windows-gnu'
      shell: bash
    - name: Add mingw64 to path for x86_64-gnu
      run: |
        echo "C:\msys64\mingw64\bin" >> $GITHUB_PATH
        echo "C:\msys64\usr\bin" >> $GITHUB_PATH
      if: matrix.target == 'x86_64-pc-windows-gnu'
      shell: bash
    - name: Update gcc
      if: matrix.target == 'x86_64-pc-windows-gnu'
      run: pacman.exe -Sy --noconfirm mingw-w64-x86_64-toolchain
    - name: Update gcc
      if: matrix.target == 'i686-pc-windows-gnu'
      run: pacman.exe -Sy --noconfirm mingw-w64-i686-toolchain

    - name: Build
      run: cargo build --verbose --verbose
    - name: Run tests
      run: cargo test --verbose