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 .\\appveyor\\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"

# init:
#   - "ECHO %PYTHON% %PYTHON_VERSION% %PYTHON_ARCH%"

install:
  - ps: |
      if ($env:BUILD_SYSTEM -eq "Python") {
        # install Python and pip when not already installed
        if (-not(Test-Path($env:PYTHON))) { & appveyor\install.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 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
