shallow_clone: true

platform:
  - x86
  - x64

configuration:
  - Debug
  - Release

image:
  - Visual Studio 2015
  - Visual Studio 2017
  - Visual Studio 2019

environment:
  NINJA_TAG: v1.8.2
  NINJA_SHA512: 9B9CE248240665FCD6404B989F3B3C27ED9682838225E6DC9B67B551774F251E4FF8A207504F941E7C811E7A8BE1945E7BCB94472A335EF15E23A0200A32E6D5
  NINJA_PATH: C:\Tools\ninja\ninja-%NINJA_TAG%
  VCVAR2015: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'
  VCVAR2017: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
  VCVAR2019: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat'
  matrix:
    - GSL_CXX_STANDARD: 14
      USE_TOOLSET: MSVC
      USE_GENERATOR: MSBuild
    - GSL_CXX_STANDARD: 17
      USE_TOOLSET: MSVC
      USE_GENERATOR: MSBuild
    - GSL_CXX_STANDARD: 14
      USE_TOOLSET: LLVM
      USE_GENERATOR: Ninja
    - GSL_CXX_STANDARD: 17
      USE_TOOLSET: LLVM
      USE_GENERATOR: Ninja

matrix:
    exclude:
    - image: Visual Studio 2015
      GSL_CXX_STANDARD: 17
    - image: Visual Studio 2015
      USE_TOOLSET: LLVM
      USE_GENERATOR: MSBuild

cache:
  - C:\cmake-3.14.4-win32-x86
  - C:\Tools\ninja

install:
  - ps: |
      if (![IO.File]::Exists("$env:NINJA_PATH\ninja.exe")) {
        Start-FileDownload `
          "https://github.com/ninja-build/ninja/releases/download/$env:NINJA_TAG/ninja-win.zip"
        $hash = (Get-FileHash ninja-win.zip -Algorithm SHA512).Hash
        if ($env:NINJA_SHA512 -eq $hash) {
          7z e -y -bso0 ninja-win.zip -o"$env:NINJA_PATH"
        } else { Write-Warning "Ninja download hash changed!"; Write-Output "$hash" }
      }
      if ([IO.File]::Exists("$env:NINJA_PATH\ninja.exe")) {
        $env:PATH = "$env:NINJA_PATH;$env:PATH"
      } else { Write-Warning "Failed to find ninja.exe in expected location." }
      if ($env:USE_TOOLSET -ne "LLVM") {
        if (![IO.File]::Exists("C:\cmake-3.14.0-win32-x86\bin\cmake.exe")) {
          Start-FileDownload 'https://cmake.org/files/v3.14/cmake-3.14.4-win32-x86.zip'
          7z x -y -bso0 cmake-3.14.4-win32-x86.zip -oC:\
        }
        $env:PATH="C:\cmake-3.14.4-win32-x86\bin;$env:PATH"
      }

before_build:
  - ps: |
      if ("$env:USE_GENERATOR" -eq "Ninja") {
        $GeneratorFlags = '-k 10'
        $Architecture = $env:PLATFORM
        if ("$env:APPVEYOR_BUILD_WORKER_IMAGE" -eq "Visual Studio 2015") {
          $env:VCVARSALL = "`"$env:VCVAR2015`" $Architecture"
        } elseif ("$env:APPVEYOR_BUILD_WORKER_IMAGE" -eq "Visual Studio 2017") {
          $env:VCVARSALL = "`"$env:VCVAR2017`" $Architecture"
        } else {
          $env:VCVARSALL = "`"$env:VCVAR2019`" $Architecture"
        }
        $env:CMakeGenFlags = "-G Ninja -DGSL_CXX_STANDARD=$env:GSL_CXX_STANDARD"
      } else {
        $GeneratorFlags = '/m /v:minimal'
        if ("$env:APPVEYOR_BUILD_WORKER_IMAGE" -eq "Visual Studio 2015") {
          $Generator = 'Visual Studio 14 2015'
        } elseif ("$env:APPVEYOR_BUILD_WORKER_IMAGE" -eq "Visual Studio 2017") {
          $Generator = 'Visual Studio 15 2017'
        } else {
          $Generator = 'Visual Studio 16 2019'
        }
        if ("$env:PLATFORM" -eq "x86") { 
            $Architecture = "Win32"
        } else { 
            $Architecture = "x64" 
        }
        if ("$env:USE_TOOLSET" -eq "LLVM") {
          $env:CMakeGenFlags = "-G `"$Generator`" -A $Architecture -T llvm -DGSL_CXX_STANDARD=$env:GSL_CXX_STANDARD"
        } else {
          $env:CMakeGenFlags = "-G `"$Generator`" -A $Architecture -DGSL_CXX_STANDARD=$env:GSL_CXX_STANDARD"
        }
      }
      if ("$env:USE_TOOLSET" -eq "LLVM") {
        $env:CC  = "clang-cl"
        $env:CXX = "clang-cl"
        if ("$env:PLATFORM" -eq "x86") {
          $env:CFLAGS   = "-m32";
          $env:CXXFLAGS = "-m32";
        } else {
          $env:CFLAGS   = "-m64";
          $env:CXXFLAGS = "-m64";
        }
      }
      $env:CMakeBuildFlags = "--config $env:CONFIGURATION -- $GeneratorFlags"
  - mkdir build
  - cd build
  - if %USE_GENERATOR%==Ninja (call %VCVARSALL%)
  - echo %CMakeGenFlags%
  - cmake .. %CMakeGenFlags%

build_script:
  - echo %CMakeBuildFlags%
  - cmake --build . %CMakeBuildFlags%

test_script:
  - ctest -j2

deploy: off
