# Windows Build Configuration for AppVeyor
# http://www.appveyor.com/docs/appveyor-yml

# version format
version: "{build}"

# The most recent compiler gives the most interesting new results.
# Put it first so we get its feedback first.
os:
  - Visual Studio 2017
  #- Visual Studio 2013

platform:
  - x64

configuration:
  - Debug
  #- Release

branches:
  only:
    - master

# Travis advances the master-tot tag to current top of the tree after
# each push into the master branch, because it relies on that tag to
# upload build artifacts to the master-tot release. This will cause
# double testing for each push on Appveyor: one for the push, one for
# the tag advance. Disable testing tags.
skip_tags: true

clone_depth: 1

matrix:
  fast_finish: true # Show final status immediately if a test fails.
  #exclude:
  #  - os: Visual Studio 2013
  #    configuration: Debug

# scripts that run after cloning repository
install:
  # Install ninja
  - set NINJA_URL="https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-win.zip"
  - appveyor DownloadFile %NINJA_URL% -FileName ninja.zip
  - 7z x ninja.zip -oC:\ninja > nul
  - set PATH=C:\ninja;%PATH%

before_build:
  - git clone --depth=1 https://github.com/KhronosGroup/SPIRV-Headers.git external/spirv-headers
  - git clone --depth=1 https://github.com/google/googletest.git external/googletest
  - git clone --depth=1 https://github.com/google/effcee.git external/effcee
  - git clone --depth=1 https://github.com/google/re2.git external/re2
  # Set path and environment variables for the current Visual Studio version
  - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2013" (call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64)
  - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017" (call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64)

build:
  parallel: true  # enable MSBuild parallel builds
  verbosity: minimal

build_script:
  - mkdir build && cd build
  - cmake -GNinja -DSPIRV_BUILD_COMPRESSION=ON -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DCMAKE_INSTALL_PREFIX=install -DRE2_BUILD_TESTING=OFF ..
  - ninja install

test_script:
  - ctest -C %CONFIGURATION% --output-on-failure --timeout 300

after_test:
  # Zip build artifacts for uploading and deploying
  - cd install
  - 7z a SPIRV-Tools-master-windows-"%PLATFORM%"-"%CONFIGURATION%".zip *\*

artifacts:
  - path: build\install\*.zip
    name: artifacts-zip

deploy:
  - provider: GitHub
    auth_token:
      secure: TMfcScKzzFIm1YgeV/PwCRXFDCw8Xm0wY2Vb2FU6WKlbzb5eUITTpr6I5vHPnAxS
    release: master-tot
    description: "Continuous build of the latest master branch by Appveyor and Travis CI"
    artifact: artifacts-zip
    draft: false
    prerelease: false
    force_update: true
    on:
      branch: master
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
