---
name: build

on:
  push:
    paths-ignore:
      - '**.md'
  pull_request:
    paths-ignore:
      - '**.md'

jobs:
  linux:
    runs-on: ubuntu-latest
    continue-on-error: ${{ ! matrix.stable }}
    strategy:
      matrix:
        compiler:
          - gcc
          - clang
        os:
          - fedora:latest
          - quay.io/centos/centos:stream9
          - quay.io/centos/centos:stream8
          - debian:testing
          - debian:latest
          - ubuntu:rolling
          - ubuntu:jammy
          - ubuntu:focal
        stable:: [true]
        include:
          - compiler: gcc
            os: quay.io/fedora/fedora:rawhide
            stable: false
          - compiler: clang
            os: quay.io/fedora/fedora:rawhide
            stable: false
          - compiler: gcc
            os: ubuntu:devel
            stable: false
          - compiler: clang
            os: ubuntu:devel
            stable: false
    steps:
      - uses: actions/checkout@v4

      - name: Show OS information
        run: |
          cat /etc/os-release 2>/dev/null || echo /etc/os-release not available

      - name: Install build dependencies
        run: bash .github/workflows/install-dependencies

      - name: Build jose
        run: |
          mkdir -p build && cd build
          export ninja=$(command -v ninja)
          [ -z "${ninja}" ] && export ninja=$(command -v ninja-build)
          meson setup .. || cat meson-logs/meson-log.txt >&2
          ${ninja}

      - name: Run tests
        run: |
          cd build
          if ! meson test; then
            cat meson-logs/testlog.txt >&2
            exit -1
          fi

      - name: Show full test logs
        run: |
          if [ -r build/meson-logs/testlog.txt ]; then
            cat build/meson-logs/testlog.txt >&2
          else
            echo "No test log available" >&2
          fi
          cat build/meson-private/jose.pc

    container:
      image: ${{matrix.os}}
      env:
        DISTRO: ${{matrix.os}}
        CC: ${{ matrix.compiler }}

  osx:
    runs-on: macos-latest
    strategy:
      matrix:
        compiler:
          - gcc
          - clang
    steps:
      - uses: actions/checkout@v4

      - name: Show OS information
        run: |
          cat /etc/os-release 2>/dev/null || echo /etc/os-release not available

      - name: Install build dependencies
        run: bash .github/workflows/install-dependencies

      - name: Build jose
        run: |
          mkdir -p build && cd build
          export ninja=$(command -v ninja)
          [ -z "${ninja}" ] && export ninja=$(command -v ninja-build)
          CFLAGS=-I$(brew --prefix openssl)/include LDFLAGS=-L$(brew --prefix openssl)/lib PKG_CONFIG_PATH=$(brew --prefix openssl)/lib/pkgconfig meson setup .. || cat meson-logs/meson-log.txt >&2
          ${ninja}

      - name: Run tests
        run: |
          cd build
          if ! meson test; then
            cat meson-logs/testlog.txt >&2
            exit -1
          fi

      - name: Show full test logs
        run: |
          if [ -r build/meson-logs/testlog.txt ]; then
            cat build/meson-logs/testlog.txt >&2
          else
            echo "No test log available" >&2
          fi
          cat build/meson-private/jose.pc

    env:
      DISTRO: osx:macos-latest
      CC: ${{ matrix.compiler }}

# vim:set ts=2 sw=2 et:
