# This is a copy of ci-unix-static.yml for building shared libraries. It differs from ci-unix-static.yml as follows:
#
#   * The os matrix consists of ubuntu-24.04 only.
#   * Does not build rav1e, SVT-AV1 nor libgav1.

name: CI Unix Shared Local
on: [push, pull_request]

permissions:
  contents: read

# Cancel the workflow if a new one is triggered from the same PR, branch, or tag, except on main.
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

jobs:
  build-shared-local:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-24.04, macos-latest]
        libyuv: [OFF, LOCAL]
        include:
          - runs-on: ubuntu-24.04
            compiler: gcc
            gcc: 14

    name: build-shared-local (${{ matrix.os }}, libyuv ${{ matrix.libyuv }})

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
      - uses: ./.github/actions/setup-linux
        if: runner.os == 'Linux'
        with:
          codec-aom: "LOCAL"
          codec-dav1d: "LOCAL"
          gcc-version: ${{ matrix.gcc }}
          libxml2: "LOCAL"
          libyuv: ${{ matrix.libyuv }}
      - uses: ./.github/actions/setup-macos
        if: runner.os == 'macOS'
        with:
          codec-aom: "LOCAL"
          codec-dav1d: "LOCAL"

      - name: Prepare libavif (cmake)
        run: >
          cmake -G Ninja -S . -B build
          -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON
          -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL
          -DAVIF_LIBSHARPYUV=LOCAL -DAVIF_LIBXML2=LOCAL
          -DAVIF_LIBYUV=${{ matrix.libyuv }}
          -DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
          -DAVIF_BUILD_TESTS=ON -DAVIF_GTEST=LOCAL
          -DAVIF_ENABLE_EXPERIMENTAL_MINI=ON
          -DAVIF_ENABLE_EXPERIMENTAL_SAMPLE_TRANSFORM=ON
          -DAVIF_ENABLE_EXPERIMENTAL_EXTENDED_PIXI=ON
          -DAVIF_ENABLE_WERROR=ON
      - name: Build libavif (ninja)
        working-directory: ./build
        run: ninja
      - name: Run AVIF Tests
        working-directory: ./build
        run: ctest -j $(getconf _NPROCESSORS_ONLN) --output-on-failure
