# 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-latest 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-latest, macos-latest]
        libyuv: [OFF, LOCAL]
        include:
          - runs-on: ubuntu-latest
            compiler: gcc
            gcc: 13

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

    steps:
    - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
    - name: Set GCC & G++ compiler (on Linux)
      if: runner.os == 'Linux'
      run: echo "CC=gcc-${{matrix.gcc}}" >> $GITHUB_ENV && echo "CXX=g++-${{matrix.gcc}}" >> $GITHUB_ENV
    - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
      with:
        python-version: '3.x'

    - name: Cache external dependencies
      id: cache-ext
      uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
      with:
        path: ext
        key: ${{ runner.os }}-shared-local-${{ hashFiles('ext/*.cmd') }}
    - name: Setup cmake
      uses: jwlawson/actions-setup-cmake@d06b37b47cfd043ec794ffa3e40e0b6b5858a7ec # v1.14.2
      with:
        # CMake version 3.17 is required to build libwebp (which libsharpyuv is part of) on macOS.
        cmake-version: '3.17.x'
    - name: Print cmake version
      run: cmake --version
    - uses: ilammy/setup-nasm@13cbeb366c45c4379d3478cdcbadd8295feb5028 # v1.5.1
      with:
        version: 2.15.05
    - uses: seanmiddleditch/gha-setup-ninja@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # v4
    - run: pip install meson
    - name: Print ImageMagick version
      run: convert --version
    - name: Build aom
      if: steps.cache-ext.outputs.cache-hit != 'true'
      working-directory: ./ext
      run: bash -e aom.cmd
    - name: Build dav1d
      if: steps.cache-ext.outputs.cache-hit != 'true'
      working-directory: ./ext
      run: bash -e dav1d.cmd
    - name: Build libyuv
      if: steps.cache-ext.outputs.cache-hit != 'true'
      working-directory: ./ext
      run: bash -e libyuv.cmd
    - name: Build libsharpyuv
      if: steps.cache-ext.outputs.cache-hit != 'true'
      working-directory: ./ext
      run: bash -e libsharpyuv.cmd
    - name: Build GoogleTest
      if: steps.cache-ext.outputs.cache-hit != 'true'
      working-directory: ./ext
      run: bash -e googletest.cmd

    - name: Prepare libavif (cmake)
      run: >
        mkdir build && cd build

        cmake .. -G Ninja
        -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON
        -DAVIF_CODEC_AOM=LOCAL -DAVIF_CODEC_DAV1D=LOCAL
        -DAVIF_LIBYUV=${{ matrix.libyuv }}
        -DAVIF_LIBSHARPYUV=LOCAL
        -DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
        -DAVIF_BUILD_TESTS=ON -DAVIF_ENABLE_GTEST=ON -DAVIF_LOCAL_GTEST=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
