# Syntax reference https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
# Environment reference https://help.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners
name: CI-cygwin

on:
  push:
    branches:
      - 'main'
      - 'releases/**'
      - '2.*'
    tags:
      - '2.*'
  pull_request:

permissions:
  contents: read

defaults:
  run:
    shell: cmd

jobs:
  # TODO: add CMake build
  build_cygwin:
    strategy:
      matrix:
        # only use the latest windows-* as the installed toolchain is identical
        os: [windows-2025]
        platform: [x86_64]
        include:
          - platform: 'x86_64'
            packages: |
              gcc-g++
              python3
      fail-fast: false

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Set up Cygwin
        uses: cygwin/cygwin-install-action@master
        with:
          site: https://mirrors.cicku.me/cygwin/
          platform: ${{ matrix.platform }}
          packages: ${{ matrix.packages }}

      # Cygwin will always link the binaries even if they already exist. The linking is also extremely slow. So just run the "check" target which includes all the binaries.
      - name: Build all and run test
        run: |
          C:\cygwin\bin\bash.exe -l -c cd %GITHUB_WORKSPACE% && make VERBOSE=1 -j%NUMBER_OF_PROCESSORS% CXXOPTS="-Werror" test

      - name: Extra test for misra
        run: |
          cd %GITHUB_WORKSPACE%\addons\test
          ..\..\cppcheck.exe --dump -DDUMMY --suppress=uninitvar --inline-suppr misra\misra-test.c --std=c89 --platform=unix64
          python3 ..\misra.py -verify misra\misra-test.c.dump
          ..\..\cppcheck.exe --addon=misra --enable=style --inline-suppr --enable=information --error-exitcode=1 misra\misra-ctu-1-test.c misra\misra-ctu-2-test.c

