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

# build version format
version: "{build}"

os: Visual Studio 2019

platform:
  - x64

configuration:
  - Debug
  - Release

branches:
  only:
    - main

# 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 main-tot tag to current top of the tree after
# each push into the main branch, because it relies on that tag to
# upload build artifacts to the main-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 16 2019" -A x64 -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-main-windows-"%PLATFORM%"-"%CONFIGURATION%".zip
    bin\glslangValidator.exe
    bin\spirv-remap.exe
    include\glslang\*
    lib\GenericCodeGen%SUFFIX%.lib
    lib\glslang%SUFFIX%.lib
    lib\glslang-default-resource-limits%SUFFIX%.lib
    lib\HLSL%SUFFIX%.lib
    lib\MachineIndependent%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: main-tot
    description: "Continuous build of the latest main branch by Appveyor and Github"
    artifact: artifacts-zip
    draft: false
    prerelease: false
    force_update: true
    on:
      branch: main
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
