libfdt-sys 0.0.1

A sys crate for libfdt.
---
name: Build test
'on':
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

# ensure that the workflow is only triggered once per PR,  subsequent pushes to the PR will cancel
# and restart the workflow. See https://docs.github.com/en/actions/using-jobs/using-concurrency
concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  build-make:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
          os: [ "alpine", "archlinux", "fedora", "ubuntu" ]

    container:
      image: ${{ matrix.os }}

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        run: |
          ./scripts/install-deps.sh

      - name: Build
        run: |
          make

      - name: Run check
        run: |
          make check

  build-meson:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
          os: [ "alpine", "archlinux", "fedora", "ubuntu" ]

    container:
      image: ${{ matrix.os }}

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Dependencies
        run: |
          ./scripts/install-deps.sh

      - name: Setup
        run: meson setup -D python=enabled -D yaml=enabled build

      - name: Build
        run: meson compile -C build

      - name: Run check
        run: if ! meson test -C build; then cat build/meson-logs/testlog.txt; false; fi

  build-windows:
    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - { sys: mingw32 }
          - { sys: mingw64 }
          - { sys: ucrt64  }
          - { sys: clang64 }
    name: ${{ matrix.sys }}
    defaults:
      run:
        shell: msys2 {0}
    steps:
    - name: Checkout
      uses: actions/checkout@v4
      with:
        fetch-depth: 0

    - name: Setup MSYS2
      uses: msys2/setup-msys2@v2
      with:
        msystem: ${{matrix.sys}}
        update: true
        install: >-
          git
          flex
          bison
        pacboy: >-
          toolchain:p
          meson:p
          ninja:p
          libyaml:p
          swig:p
          python-setuptools-scm:p

    - name: '🚧 Build'
      run: |
        meson setup -Dtools=true -Dtests=false build
        meson compile -C build