# AppVeyor configuration
#                          __  __            _
#                       ___\ \/ /_ __   __ _| |_
#                      / _ \\  /| '_ \ / _` | __|
#                     |  __//  \| |_) | (_| | |_
#                      \___/_/\_\ .__/ \__,_|\__|
#                               |_| XML parser
#
# Copyright (c) 2017      José Gutiérrez de la Concha <jose@zeroc.com>
# Copyright (c) 2017-2022 Sebastian Pipping <sebastian@pipping.org>
# Copyright (c) 2017      Franek Korta <fkorta@gmail.com>
# 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 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

    # Visual Studio 2019 Win32
    - GENERATOR: Visual Studio 16 2019
      PLATFORM: Win32
      CMAKE_ARGS: -A Win32
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019

    # Visual Studio 2019 Win32 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 16 2019
      PLATFORM: Win32
      CMAKE_ARGS: -A Win32 -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019

    # Visual Studio 2019 x64
    - GENERATOR: Visual Studio 16 2019
      PLATFORM: x64
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019

    # Visual Studio 2019 x64 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 16 2019
      PLATFORM: x64
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019

    # Visual Studio 2022 Win32
    - GENERATOR: Visual Studio 17 2022
      PLATFORM: Win32
      CMAKE_ARGS: -A Win32
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022

    # Visual Studio 2022 Win32 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 17 2022
      PLATFORM: Win32
      CMAKE_ARGS: -A Win32 -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022

    # Visual Studio 2022 x64
    - GENERATOR: Visual Studio 17 2022
      PLATFORM: x64
      EXPAT_DLL: libexpatd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022

    # Visual Studio 2022 x64 XML_UNICODE_WCHAR_T
    - GENERATOR: Visual Studio 17 2022
      PLATFORM: x64
      CMAKE_ARGS: -DEXPAT_CHAR_TYPE=wchar_t
      EXPAT_DLL: libexpatwd.dll
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022

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
