# AppVeyor configuration for CI Builds of ICU4C.

image: Visual Studio 2017
platform: x64

# Don't clone the entire repo.
clone_depth: 5

# Cache things between builds to speed things up and save bandwidth.
cache:
  - c:\icu-ci-cache

# Notes:
#  - The VS2017 build is disabled (commented out) below, as we build both VS2015 and VS2017
#    on Azure Pipelines instead, since that is much faster.
#
#  - For the Cygwin build, the CYG_MIRROR URL used to use the "Cygwin Time Machine" archive
#    in order to pull a previous version of Cygwin, v2.11.2-1 (with timestamp 1550062412).
#    This was done as version 3 had issues and didn't build at all.
#    The previous URL was:
#      http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2019/02/13/045332
#
#    In order to speed the builds up we use the "-X" or "--no-verify" option to skip checking
#    the signatures on packages.

environment:
  global:
    ICU_CI_CACHE: c:\icu-ci-cache
    CYG_URL: https://cygwin.com/setup-x86_64.exe
    CYG_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/
    CYG_PACKAGES: automake,gcc-core,gcc-g++,make,pkg-config,perl,python3
    CYG_ROOT: c:\cygwin-root
    CYG_CACHE: '%ICU_CI_CACHE%\cygwin64-v3'
    CYG_CACHED_SETUP: '%CYG_CACHE%\setup.exe'

  matrix:
    - BUILDSYSTEM: cygwin64-gcc
      CC: gcc
      CXX: g++
      APPVEYOR_SAVE_CACHE_ON_ERROR: true
#    - BUILDSYSTEM: VS2017
#      configuration: Release
#      APPVEYOR_CACHE_SKIP_RESTORE: true
#      APPVEYOR_CACHE_SKIP_SAVE: true

for:
  -
    matrix:
      only:
        - BUILDSYSTEM: cygwin64-gcc

    install:
      - ps: >-
          if ( !(Test-Path "${env:CYG_CACHED_SETUP}" -NewerThan (Get-Date).AddDays(-7)) )
          {
            Write-Host "Cached Cygwin setup does not exist or is older than 7 days, downloading from external site."
            
            New-Item -Force -Type Directory $env:CYG_CACHE
            Write-Host "Downloading Cygwin setup..."
            
            $start_time = Get-Date
            (New-Object System.Net.WebClient).DownloadFile($env:CYG_URL, $env:CYG_CACHED_SETUP)

            Write-Output "Download took: $((Get-Date).Subtract($start_time).Seconds) second(s)."
          }
      - cmd: >-
          %CYG_CACHED_SETUP% --no-verify --quiet-mode --no-shortcuts --no-startmenu --no-desktop --upgrade-also --only-site --site "%CYG_MIRROR%" --root "%CYG_ROOT%"  --local-package-dir "%CYG_CACHE%" --packages "%CYG_PACKAGES%"

    # Check that we have a working Cygwin environment before building.
    before_build:
      - "%CYG_ROOT%\\bin\\sh -lc 'echo Hello'"
      - "%CYG_ROOT%\\bin\\sh -lc 'uname -a'"

    build_script:
      - '%CYG_ROOT%\\bin\\bash -lc "cd $(cygpath ${APPVEYOR_BUILD_FOLDER}) && cd icu4c/source && ./runConfigureICU Cygwin && make check"'

#  -
#    matrix:
#      only:
#        - BUILDSYSTEM: VS2017
#
#    build:
#      project: icu4c/source/allinone/allinone.sln
#
#    test_script:
#      - icu4c/source/allinone/icucheck.bat x64 Release
