# AppVeyor configuration
#                          __  __            _
#                       ___\ \/ /_ __   __ _| |_
#                      / _ \\  /| '_ \ / _` | __|
#                     |  __//  \| |_) | (_| | |_
#                      \___/_/\_\ .__/ \__,_|\__|
#                               |_| XML parser
#
# Copyright (C) 2017 José Gutiérrez de la Concha <jose@zeroc.com>
# Copyright (C) 2017 Expat development team
# Licensed under the MIT license:
#
# Permission is  hereby granted,  free of charge,  to any  person obtaining
# a  copy  of  this  software   and  associated  documentation  files  (the
# "Software"),  to  deal in  the  Software  without restriction,  including
# without  limitation the  rights  to use,  copy,  modify, merge,  publish,
# distribute, sublicense, and/or sell copies of the Software, and to permit
# persons  to whom  the Software  is  furnished to  do so,  subject to  the
# following conditions:
#
# The above copyright  notice and this permission notice  shall be included
# in all copies or substantial portions of the Software.
#
# THE  SOFTWARE  IS  PROVIDED  "AS  IS",  WITHOUT  WARRANTY  OF  ANY  KIND,
# EXPRESS  OR IMPLIED,  INCLUDING  BUT  NOT LIMITED  TO  THE WARRANTIES  OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
# NO EVENT SHALL THE AUTHORS OR  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR  OTHER LIABILITY, WHETHER  IN AN  ACTION OF CONTRACT,  TORT OR
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
# USE OR OTHER DEALINGS IN THE SOFTWARE.

# scripts that are called at very beginning, before repo cloning
init:
- git config --global core.autocrlf input

# version format
version: libexpat-{build}

# set clone depth, clone entire repository history if not defined
clone_depth: 50

# clone directory
clone_folder: c:\projects\libexpat

configuration: Debug

# AppVeyor pre-installed software:
# https://www.appveyor.com/docs/build-environment/#pre-installed-software
#
# CMake Visual Studio generators:
# https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators
environment:
  matrix:
    # Visual Studio 2010 Win32
    - GENERATOR: Visual Studio 10 2010
      PLATFORM: Win32
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2010 Win32 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 10 2010
      PLATFORM: Win32
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2010 x64
    - GENERATOR: Visual Studio 10 2010 Win64
      PLATFORM: x64
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2010 x64 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 10 2010 Win64
      PLATFORM: x64
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2012 Win32
    - GENERATOR: Visual Studio 11 2012
      PLATFORM: Win32
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2012 Win32 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 11 2012
      PLATFORM: Win32
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2012 x64
    - GENERATOR: Visual Studio 11 2012 Win64
      PLATFORM: x64
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2012 x64 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 11 2012 Win64
      PLATFORM: x64
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2013 Win32
    - GENERATOR: Visual Studio 12 2013
      PLATFORM: Win32
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2013 Win32 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 12 2013
      PLATFORM: Win32
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2013 x64
    - GENERATOR: Visual Studio 12 2013 Win64
      PLATFORM: x64
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2013 x64 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 12 2013 Win64
      PLATFORM: x64
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013

    # Visual Studio 2015 Win32
    - GENERATOR: Visual Studio 14 2015
      PLATFORM: Win32
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015

    # Visual Studio 2015 Win32 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 14 2015
      PLATFORM: Win32
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015

    # Visual Studio 2015 x64
    - GENERATOR: Visual Studio 14 2015 Win64
      PLATFORM: x64
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015

    # Visual Studio 2015 x64 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 14 2015 Win64
      PLATFORM: x64
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015

    # Visual Studio 2017 Win32
    - GENERATOR: Visual Studio 15 2017
      PLATFORM: Win32
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017

    # Visual Studio 2017 Win32 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 15 2017
      PLATFORM: Win32
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017

    # Visual Studio 2017 x64
    - GENERATOR: Visual Studio 15 2017 Win64
      PLATFORM: x64
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017

    # Visual Studio 2017 x64 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 15 2017 Win64
      PLATFORM: x64
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017

before_build:
  - echo Running cmake...
  - cd c:\projects\libexpat
  - cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DEXPAT_WARNINGS_AS_ERRORS=ON %CMAKE_ARGS% expat

build:
  parallel: true                  # enable MSBuild parallel builds
  project: expat.sln              # path to Visual Studio solution or project

test_script:
  - cp %CONFIGURATION%\\%EXPAT_DLL% tests\\%CONFIGURATION%\\
  - ctest --build-config %CONFIGURATION% --output-on-failure --parallel 2
