name: Build and Test

on:
  - pull_request
  - push

jobs:
  linux:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Configure
        run: CFLAGS='--coverage -Werror' cmake -DCMAKE_BUILD_TYPE=Debug -G 'Unix Makefiles' .
      - name: Build
        run: make VERBOSE=1
      - name: Test
        run: ./scripts/run-tests.sh
      - name: Create coverage report
        run: |
          sudo apt-get install -y lcov
          lcov --directory . --capture --output-file coverage.info
          lcov --remove coverage.info '/usr/*' --output-file coverage.info
          lcov --list coverage.info
      - name: Upload coverage report
        uses: codecov/codecov-action@v3

  windows-32:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: microsoft/setup-msbuild@v1.3.1
      - name: Configure
        run: cmake -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 17 2022" -A Win32 .
      - name: Build
        run: msbuild.exe md4c.sln /p:Configuration=Release /p:Platform=Win32

  windows-64:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: microsoft/setup-msbuild@v1.3.1
      - name: Configure
        run: cmake -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 17 2022" -A x64 .
      - name: Build
        run: msbuild.exe md4c.sln /p:Configuration=Release /p:Platform=x64
