# Copyright 2019 Ilya Shipitsin <chipitsine@gmail.com>
# Copyright 2020 Tim Duesterhus <tim@bastelstu.be>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.

name: Windows

on:
  push:

jobs:
  msys2:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    defaults:
      run:
        shell: msys2 {0}
    strategy:
      matrix:
        include:
        - name: "Windows, gcc, all features"
          TARGET: cygwin
          CC: gcc
          os: windows-latest
          FLAGS:
          - USE_OPENSSL=1
          - USE_PCRE=1
          - USE_PCRE_JIT=1
          - USE_THREAD=1
          - USE_ZLIB=1
    steps:
    - uses: actions/checkout@v2
    - uses: msys2/setup-msys2@v2
      with:
        install: >-
          coreutils
          curl
          diffutils
          gawk
          gcc
          make
          tar
          openssl-devel
          pcre-devel
          zlib-devel
    - name: Compile HAProxy with ${{ matrix.CC }}
      run: |
        make -j$(nproc) all \
          ERR=1 \
          TARGET=${{ matrix.TARGET }} \
          CC=${{ matrix.CC }} \
          DEBUG=-DDEBUG_STRICT=1 \
          ${{ join(matrix.FLAGS, ' ') }}
    - name: Show HAProxy version
      id: show-version
      run: |
        ./haproxy -vv
        echo "::set-output name=version::$(./haproxy -v |awk 'NR==1{print $3}')"
