# 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:

permissions:
  contents: read

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}')"
