version: 2.2.0.{build}

os: Visual Studio 2017
platform:
  - x64

branches:
  except:
    - /.*travis.*/
    - /.*linux.*/
    - /.*freebsd.*/
    - /.*osx.*/
    - /.*bitrise.*/
skip_commits:
  message: /travis/
  files:
    - .travis.yml

environment:
  global:
    APPVEYOR_SAVE_CACHE_ON_ERROR: true
    MINGW_ROOT: C:/mingw-w64/x86_64-7.2.0-posix-seh-rt_v5-rev1
    OPENSSL_ROOT: C:/OpenSSL-Win64
    MPATH: C:/mingw-w64/x86_64-7.2.0-posix-seh-rt_v5-rev1/bin;C:/msys64/bin;C:/cygwin64/bin
    EVENT_TESTS_PARALLEL: 20
    EVENT_BUILD_PARALLEL: 10
  matrix:
    # !EVENT_ALLOW_FAILURE
    - EVENT_BUILD_METHOD: "cmake"
      EVENT_CMAKE_OPTIONS: ""
    - EVENT_BUILD_METHOD: "cmake"
      EVENT_CMAKE_OPTIONS: "-DEVENT__LIBRARY_TYPE=STATIC"
    # EVENT_ALLOW_FAILURE
    - EVENT_BUILD_METHOD: "autotools"
      EVENT_CONFIGURE_OPTIONS: ""
      EVENT_ALLOW_FAILURE: 1
    - EVENT_BUILD_METHOD: "autotools"
      EVENT_CONFIGURE_OPTIONS: "--disable-openssl"
      EVENT_ALLOW_FAILURE: 1
    - EVENT_BUILD_METHOD: "autotools"
      EVENT_CONFIGURE_OPTIONS: "--disable-thread-support"
      EVENT_ALLOW_FAILURE: 1
    - EVENT_BUILD_METHOD: "autotools"
      EVENT_CONFIGURE_OPTIONS: "--disable-debug-mode"
      EVENT_ALLOW_FAILURE: 1
    - EVENT_BUILD_METHOD: "autotools"
      EVENT_CONFIGURE_OPTIONS: "--disable-malloc-replacement"
      EVENT_ALLOW_FAILURE: 1
    - EVENT_BUILD_METHOD: "cmake"
      EVENT_CMAKE_OPTIONS: "-DEVENT__DISABLE_OPENSSL=ON"
      EVENT_ALLOW_FAILURE: 1
    - EVENT_BUILD_METHOD: "cmake"
      EVENT_CMAKE_OPTIONS: "-DEVENT__DISABLE_THREAD_SUPPORT=ON"
      EVENT_ALLOW_FAILURE: 1
    - EVENT_BUILD_METHOD: "cmake"
      EVENT_CMAKE_OPTIONS: "-DEVENT__DISABLE_DEBUG_MODE=ON"
      EVENT_ALLOW_FAILURE: 1
    - EVENT_BUILD_METHOD: "cmake"
      EVENT_CMAKE_OPTIONS: "-DEVENT__DISABLE_MM_REPLACEMENT=ON"
      EVENT_ALLOW_FAILURE: 1
    - EVENT_BUILD_METHOD: "cmake"
      EVENT_CMAKE_OPTIONS: "-DCMAKE_C_FLAGS='-DUNICODE -D_UNICODE'"
      EVENT_ALLOW_FAILURE: 1

matrix:
  allow_failures:
    - EVENT_ALLOW_FAILURE: 1
  fast_finish: true

init:
  - 'echo Repo build branch is: %APPVEYOR_REPO_BRANCH%'
  - 'echo Build folder is: %APPVEYOR_BUILD_FOLDER%'
  - 'echo Repo build commit is: %APPVEYOR_REPO_COMMIT%'
  - 'echo PATH is: %PATH%'

build_script:
  - ps: |
      if ($env:EVENT_BUILD_METHOD -eq 'autotools') {
        $env:PATH="$env:MPATH;$env:OPENSSL_ROOT/bin;$env:PATH"
        $env:LDFLAGS="-L$($env:OPENSSL_ROOT)/lib -L$($env:OPENSSL_ROOT)"
        $env:CFLAGS="-I$($env:OPENSSL_ROOT)/include"

        bash ./autogen.sh 2>&1 3>&1

        md build-autotools 2> $null
        cd build-autotools

        bash ../configure $env:EVENT_CONFIGURE_OPTIONS 2>&1
        make -j $env:EVENT_BUILD_PARALLEL 2>&1
        make verify -j $env:EVENT_TESTS_PARALLEL 2>&1
      } else {
        md build-cmake 2> $null
        cd build-cmake
        cmake -G "Visual Studio 15 2017 Win64" .. $env:EVENT_CMAKE_OPTIONS
        cmake --build . -j $env:EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
        ctest --output-on-failure -j $env:EVENT_TESTS_PARALLEL
      }

cache:
  - build-cmake
  - build-autotools

on_failure:
  - 7z a libevent.zip .
  - appveyor PushArtifact libevent.zip
