name: Build CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
  schedule:
    # build the main branch every Monday morning
    - cron: '37 9 * * 1'
  workflow_dispatch:

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        compiler: [cc, clang, gcc-12]
        exclude:
          - os: macos-latest
            compiler: cc
          - os: macos-latest
            compiler: gcc-12
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Compiler version
        run: $CC -v
        env:
          CC: ${{ matrix.compiler }}
      - name: Install Linux dependencies
        run: sudo apt install cmake ninja-build libssl-dev libpcap-dev libnet1-dev libjson-c-dev
        if: ${{ runner.os == 'Linux' }}
      - name: Install macOS dependencies
        run: |
          brew install cmake ninja openssl@3 libpcap libnet json-c
          echo "LDFLAGS=-L$(brew --prefix openssl@3)/lib" >> $GITHUB_ENV
          echo "CPPFLAGS=-I$(brew --prefix openssl@3)/include" >> $GITHUB_ENV
        if: ${{ runner.os == 'macOS' }}
      - name: cmake -B ${{github.workspace}}/build -G Ninja
        run: cmake -B ${{github.workspace}}/build -G Ninja
        env:
          CC: ${{ matrix.compiler }}
      - name: ninja -C ${{github.workspace}}/build
        run: ninja -C ${{github.workspace}}/build
