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

# build version format
version: "{build}"

os: Visual Studio 2015

platform:
  - x64

configuration:
  - Debug
  - Release

branches:
  only:
    - master

# changes to these files don't need to trigger testing
skip_commits:
  files:
    - README.md
    - README-spirv-remap.txt
    - LICENSE.txt
    - CODE_OF_CONDUCT.md
    - BUILD.*
    - WORKSPACE
    - kokoro/*
    - make-revision
    - Android.mk
    - _config.yml

# 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: 5

matrix:
  fast_finish: true # Show final status immediately if a test fails.

# scripts that run after cloning repository
install:
  - C:/Python27/python.exe update_glslang_sources.py
  - set PATH=C:\ninja;C:\Python36;%PATH%
  - git clone https://github.com/google/googletest.git External/googletest

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

build_script:
  - mkdir build && cd build
  - cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=install ..
  - cmake --build . --config %CONFIGURATION% --target install

test_script:
  - ctest -C %CONFIGURATION% --output-on-failure
  - cd ../Test && bash runtests
  - cd ../build

after_test:
  # For debug build, the generated dll has a postfix "d" in its name.
  - ps: >-
      If ($env:configuration -Match "Debug") {
        $env:SUFFIX="d"
      } Else {
        $env:SUFFIX=""
      }
  - cd install
  # Zip all glslang artifacts for uploading and deploying
  - 7z a glslang-master-windows-"%PLATFORM%"-"%CONFIGURATION%".zip
    bin\glslangValidator.exe
    bin\spirv-remap.exe
    include\glslang\*
    lib\glslang%SUFFIX%.lib
    lib\HLSL%SUFFIX%.lib
    lib\OGLCompiler%SUFFIX%.lib
    lib\OSDependent%SUFFIX%.lib
    lib\SPIRV%SUFFIX%.lib
    lib\SPVRemapper%SUFFIX%.lib
    lib\SPIRV-Tools%SUFFIX%.lib
    lib\SPIRV-Tools-opt%SUFFIX%.lib

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

deploy:
  - provider: GitHub
    auth_token:
      secure: YglcSYdl0TylEa59H4K6lylBEDr586NAt2EMgZquSo+iuPrwgZQuJLPCoihSm9y6
    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 2015
