# 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: |
        echo "::group::Show platform specific defines"
        echo | ${{ matrix.CC }} -dM -xc -E -
        echo "::endgroup::"
        make -j$(nproc) all \
          ERR=1 \
          TARGET=${{ matrix.TARGET }} \
          CC=${{ matrix.CC }} \
          DEBUG="-DDEBUG_STRICT -DDEBUG_MEMORY_POOLS -DDEBUG_POOL_INTEGRITY" \
          ${{ 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}')"
