#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

# build Apache Thrift on AppVeyor - https://ci.appveyor.com

version: '1.0.0-dev.{build}'

shallow_clone: true

os:
  - Visual Studio 2015

cache:
  - C:\projects\thrift\buildcache -> build\appveyor\MSVC-appveyor-install.bat
  - C:\ProgramData\chocolatey\lib -> build\appveyor\MSVC-appveyor-install.bat
  - C:\msys64\var\cache\pacman    -> build\appveyor\MSYS-appveyor-install.bat

configuration:
# - Debug
  - Release

platform:
# - x86
  - x64

environment:
  matrix:
   - PROFILE: MSVC2015
     BOOST_VERSION: 1.63.0
     LIBEVENT_VERSION: 2.0.22
     PYTHON_VERSION: 3.6
     QT_VERSION: 5.8
     ZLIB_VERSION: 1.2.11

   - PROFILE: MINGW

#   - PROFILE: MSVC2010
#     BOOST_VERSION: 1.59.0
#     LIBEVENT_VERSION: 2.0.22
#     PYTHON_VERSION: 3.3
#     ZLIB_VERSION: 1.2.8

#   - PROFILE: MSYS

matrix:
  allow_failures:
    # MSVC2010 appears to be 32-bit only in appveyor
    - platform: x64
      PROFILE: MSVC2010

    # Only have 64-bit MinGW working so far (inside MSYS2)
    - platform: x86
      PROFILE: MINGW
    - platform: x86
      PROFILE: MSYS

install:
  - cd %APPVEYOR_BUILD_FOLDER%
  - call build\appveyor\%PROFILE:~0,4%-appveyor-install.bat
  - refreshenv

build_script:
  - cd %APPVEYOR_BUILD_FOLDER%
  - call build\appveyor\%PROFILE:~0,4%-appveyor-build.bat

test_script:
  - cd %APPVEYOR_BUILD_FOLDER%
  - call build\appveyor\%PROFILE:~0,4%-appveyor-test.bat

# artifact capture disabled as it might increase service cost for little gain:
#
# artifacts:
#  - path: local-thrift-inst
#    name: cmake installed content
#    type: zip
#
#  - path: local-thrift-build\Testing
#    name: ctest output
#    type: zip
