environment:

  global:
    # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
    # /E:ON and /V:ON options are not enabled in the batch script intepreter
    # See: http://stackoverflow.com/a/13751649/163740
    WITH_COMPILER: "cmd /E:ON /V:ON /C .\\scripts\\run_with_compiler.cmd"

  matrix:
    - BUILD_SYSTEM: CMake
      GENERATOR: Visual Studio 14 2015 Win64

    - BUILD_SYSTEM: CMake
      GENERATOR: Visual Studio 14 2015

    - BUILD_SYSTEM: CMake
      GENERATOR: Visual Studio 12 2013 Win64

    - BUILD_SYSTEM: CMake
      GENERATOR: Visual Studio 12 2013

    - BUILD_SYSTEM: Python
      PYTHON: "C:\\Python27"
      PYTHON_VERSION: "2.7.x"
      PYTHON_ARCH: "32"

    - BUILD_SYSTEM: Python
      PYTHON: "C:\\Python34"
      PYTHON_VERSION: "3.4.x"
      PYTHON_ARCH: "32"

    - BUILD_SYSTEM: Python
      PYTHON: "C:\\Python35"
      PYTHON_VERSION: "3.5.0"
      PYTHON_ARCH: "32"

    - BUILD_SYSTEM: Python
      PYTHON: "C:\\Python27-x64"
      PYTHON_VERSION: "2.7.x"
      PYTHON_ARCH: "64"

    - BUILD_SYSTEM: Python
      PYTHON: "C:\\Python34-x64"
      PYTHON_VERSION: "3.4.x"
      PYTHON_ARCH: "64"

    - BUILD_SYSTEM: Python
      PYTHON: "C:\\Python35-x64"
      PYTHON_VERSION: "3.5.0"
      PYTHON_ARCH: "64"

install:
  - ps: |
      if ($env:BUILD_SYSTEM -eq "Python") {
        # install Python and pip when not already installed
        if (-not(Test-Path($env:PYTHON))) { & scripts\install_py.ps1 }

        # prepend newly installed Python to the PATH
        $env:Path = $env:PYTHON + ';' + $env:PYTHON + '\\Scripts;' + $env:PATH

        # upgrade pip to avoid out-of-date warnings
        pip install --disable-pip-version-check --user --upgrade pip

        # install/upgrade setuptools and wheel to build packages
        pip install --upgrade setuptools six wheel
      }

before_build:
  - ps: |
      if ($env:BUILD_SYSTEM -eq "CMake") {
        mkdir builddir
        cd builddir

        cmake -G "$env:GENERATOR" ..
      }

build_script:
  - ps: |
      if ($env:BUILD_SYSTEM -eq "CMake") {
        cmake --build . --config Debug
      }

test_script:
  - if "%BUILD_SYSTEM%" == "CMake" ( ctest --output-on-failure --interactive-debug-mode 0 -C Debug )
  - if "%BUILD_SYSTEM%" == "Python" ( python setup.py build test )

after_test:
  - if "%BUILD_SYSTEM%" == "Python" ( pip wheel -w dist . )
  - if "%BUILD_SYSTEM%" == "Python" ( python setup.py sdist --formats=gztar,zip )

artifacts:
  # archive the generated packages in the ci.appveyor.com build report
  - path: dist\*.whl
  - path: dist\*.zip
  - path: dist\*.tar.gz

# For info, see: http://www.appveyor.com/docs/deployment/github

deploy:
  - provider: GitHub
    auth_token:
      secure: dfL56DgbwuGJNNE5GzKi/pAgBQnJ37Du+AnCtnsTnIYxpis8ah3fPmA/G+bn4NJ3
    artifact:
    draft: false
    prerelease: false
    on:
      appveyor_repo_tag: true
