# This is a copy of ci-unix-shared-local.yml for building shared libraries
# with an additional build configuration (using installed deps and dav1d).

name: CI Unix Shared Installed
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-installed:
    strategy:
      fail-fast: false
      # Generate the configurations:
      # Ubuntu with gcc 14 with oldest-cmake set to true or false
      # OSX with default gcc and CMake (oldest-cmake is unused on OSX)
      matrix:
        os: [ubuntu-latest, macos-latest]
        oldest-cmake: [false, true]
        include:
          # Add a gcc version on Ubuntu only
          - os: ubuntu-latest
            compiler: gcc
            gcc: 14
        exclude:
          # Do not use the oldest CMake on OSX
          - os: macos-latest
            oldest-cmake: true
    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: ./.github/actions/setup-linux
        if: runner.os == 'Linux'
        with:
          codec-aom: "SYSTEM"
          codec-dav1d: "SYSTEM"
          codec-rav1e: "SYSTEM"
          codec-svt: "SYSTEM"
          gcc-version: ${{ matrix.gcc }}
          gtest: "SYSTEM"
          libjpeg-turbo: "SYSTEM"
          libyuv: "SYSTEM"
          oldest-cmake: ${{ matrix.oldest-cmake }}
          zlibpng: "SYSTEM"
      - uses: ./.github/actions/setup-macos
        if: runner.os == 'macOS'
        with:
          codec-aom: "SYSTEM"
          codec-dav1d: "SYSTEM"
          codec-rav1e: "SYSTEM"
          codec-svt: "SYSTEM"
          gtest: "SYSTEM"
          libjpeg-turbo: "SYSTEM"
          zlibpng: "SYSTEM"
      - name: Disable libyuv on macOS
        # libyuv is not available with brew.
        if: runner.os == 'macOS'
        run: echo "CMAKE_AVIF_FLAGS=\"-DAVIF_LIBYUV=OFF\""  >> $GITHUB_ENV

      - name: Prepare libavif (cmake)
        run: >
          cmake -G Ninja -S . -B build
          -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON
          -DAVIF_CODEC_AOM=SYSTEM
          -DAVIF_CODEC_AOM_DECODE=OFF -DAVIF_CODEC_AOM_ENCODE=ON
          -DAVIF_CODEC_DAV1D=SYSTEM -DAVIF_CODEC_RAV1E=SYSTEM
          -DAVIF_CODEC_SVT=SYSTEM
          -DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
          -DAVIF_BUILD_TESTS=ON -DAVIF_GTEST=SYSTEM
          -DAVIF_BUILD_GDK_PIXBUF=ON -DCMAKE_INSTALL_PREFIX=./build/install
          -DAVIF_ENABLE_WERROR=ON ${{ env.CMAKE_AVIF_FLAGS }}
      - name: Build libavif
        run: cmake --build build --config Release --parallel 4
      - name: Run AVIF Tests
        working-directory: ./build
        run: ctest -j $(getconf _NPROCESSORS_ONLN) --output-on-failure
      - name: Install AVIF
        run: cmake --install build
      - name: Test installed cmake
        working-directory: ./build
        run: >
          mkdir test && cd test

          echo "cmake_minimum_required(VERSION 3.22)
                project(FindPackageTest)
                message(STATUS ${CMAKE_PREFIX_PATH})
                find_package(libavif REQUIRED)
                if(TARGET avif)
                  message(STATUS "\""avif found"\"")
                else()
                  message(FATAL_ERROR "\""avif not found"\"")
                endif()" >> CMakeLists.txt

          cmake . -DCMAKE_PREFIX_PATH=../install
