name: MinGW64-CI

on: [push, pull_request]

# Important: scoop will either install 32-bit GCC or 64-bit GCC, not both.

# It is important to build static libraries because cmake is not smart enough under Windows/mingw to take care of the path. So
# with a dynamic library, you could get failures due to the fact that the EXE can't find its DLL.

jobs:
  ci:
    name: windows-gcc
    runs-on: windows-2016

    env:
      CMAKE_GENERATOR: Ninja
      CC: gcc
      CXX: g++

    steps: # To reproduce what is below, start a powershell with administrative rights, using scoop *is* a good idea
      - uses: actions/checkout@v2

      - uses: actions/cache@v2 # we cache the scoop setup with 64-bit GCC
        id: cache
        with:
          path: |
            C:\ProgramData\scoop
          key: scoop64 # static key: should be good forever
      - name: Setup Windows # This should almost never run if the cache works.
        if: steps.cache.outputs.cache-hit != 'true'
        shell: powershell
        run: |
          Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
          scoop install sudo --global
          sudo scoop install git --global
          sudo scoop install ninja --global
          sudo scoop install cmake --global
          sudo scoop install gcc --arch 64bit --global
          $env:path
          Write-Host 'Everything has been installed, you are good!'
      - name: Build and Test 64-bit x64
        shell: powershell
        run: |
          $ENV:PATH="C:\ProgramData\scoop\shims;C:\ProgramData\scoop\apps\gcc\current\bin;C:\ProgramData\scoop\apps\ninja\current;$ENV:PATH"
          mkdir build64
          cd build64
          cmake  -DFASTFLOAT_TEST=ON ..
          cmake --build .   --verbose
          ctest -j4 --output-on-failure -R basictest