# Appveyor configuration file for EPICS Base 3.15 builds
# (see also https://github.com/epics-base/ci-scripts)

# branches to build
branches:
  # whitelist
  only:
    - 3.15
    - /R3\.15\.\d+.*/

# Version format
version: base-{branch}-{build}

#---------------------------------#
#       build cache               #
#---------------------------------#
# The AppVeyor cache allowance is way too small (1GB per account across all projects, branches and jobs)
# to be used for the dependency builds.

cache:
  - C:\Users\appveyor\.tools

#---------------------------------#
#       repository cloning        #
#---------------------------------#

# Called at very beginning, before repo cloning
init:
  # Set autocrlf to make batch files work
  - git config --global core.autocrlf true

# Set clone depth (do not fetch complete history)
clone_depth: 5

# Skipping commits affecting only specific files
skip_commits:
  files:
    - 'documentation/*'
    - 'startup/*'
    - '.github/*'
    - '**/*.html'
    - '**/*.md'

#---------------------------------#
#   build matrix configuration    #
#---------------------------------#

image: Visual Studio 2015

# Build Configurations: dll/static, regular/debug
configuration:
  - dynamic
  - static
  - dynamic-debug
  - static-debug

# Environment variables: compiler toolchain, base version, setup file, ...
environment:
  # common / default variables for all jobs
  SETUP_PATH: .ci-local:.ci
  BASE: SELF
  EPICS_TEST_IMPRECISE_TIMING: YES

  matrix:
  - CMP: vs2019
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
  - CMP: vs2017
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
  - CMP: vs2015
  - CMP: vs2013
  - CMP: vs2012
  - CMP: vs2010
  - CMP: gcc

# Platform: processor architecture
platform:
  - x86
  - x64

# Matrix configuration: exclude sets of jobs
matrix:
  exclude:
  # VS2012 and older installs don't have the 64 bit compiler
  - platform: x64
    CMP: vs2012
  - platform: x64
    CMP: vs2010
  # Exclude more jobs to reduce build time
  # Skip 32-bit for "middle-aged" compilers
  - platform: x86
    CMP: vs2017
  - platform: x86
    CMP: vs2015
  # MinGW debug builds use the same libraries, unlike VS
  - configuration: dynamic-debug
    CMP: gcc
  - configuration: static-debug
    CMP: gcc

#---------------------------------#
#     building & testing          #
#---------------------------------#

install:
  - cmd: git submodule update --init --recursive
  - cmd: python .ci/cue.py prepare

build_script:
  - cmd: python .ci/cue.py build

test_script:
  - cmd: python .ci/cue.py test

on_finish:
  - ps: Get-ChildItem *.tap -Recurse -Force | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
  - cmd: python .ci/cue.py build test-results -s

#---------------------------------#
#         debugging               #
#---------------------------------#

## if you want to connect by remote desktop to a failed build, uncomment these lines
## note that you will need to connect within the usual build timeout limit (60 minutes)
## so you may want to adjust the build matrix above to just build the one of interest

# print the connection info
#init:
#  - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))

# block a failed build (until the watchdog barks)
#on_failure:
#  - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))

#---------------------------------#
#         notifications           #
#---------------------------------#

notifications:

  - provider: Email
    to:
      - core-talk@aps.anl.gov
    on_build_success: false

  - provider: GitHubPullRequest
