# 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-24.04, macos-latest]
        oldest-cmake: [false, true]
        include:
          # Add a gcc version on Ubuntu only
          - os: ubuntu-24.04
            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@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
      - uses: ./.github/actions/setup-linux
        if: runner.os == 'Linux'
        with:
          codec-aom: "SYSTEM"
          codec-dav1d: "SYSTEM"
          gcc-version: ${{ matrix.gcc }}
          gtest: "SYSTEM"
          libyuv: "SYSTEM"
          oldest-cmake: ${{ matrix.oldest-cmake }}
      - uses: ./.github/actions/setup-macos
        if: runner.os == 'macOS'
        with:
          codec-aom: "SYSTEM"
          codec-dav1d: "SYSTEM"
          gtest: "SYSTEM"
      - name: Disable libyuv on macOS
        # TODO(yguyon): Install libyuv (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_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
          -DAVIF_BUILD_TESTS=ON -DAVIF_ENABLE_GTEST=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 (ninja)
        working-directory: ./build
        run: ninja
      - name: Run AVIF Tests
        working-directory: ./build
        run: ctest -j $(getconf _NPROCESSORS_ONLN) --output-on-failure
      - name: Install AVIF
        working-directory: ./build
        run: ninja install
      - name: Test installed cmake
        working-directory: ./build
        run: >
          mkdir test && cd test

          echo "cmake_minimum_required(VERSION 3.13)
                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
      - name: Prepare libavif with [[nodiscard]] (cmake)
        # CMake 3.21 is needed to force C23 for [[nodiscard]].
        if: runner.oldest-cmake == 'false'
        run: >
          cmake -G Ninja -S . -B build_nodiscard
          -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_ENABLE_NODISCARD=ON -DAVIF_ENABLE_WERROR=ON
          -DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
          -DAVIF_BUILD_TESTS=ON -DAVIF_ENABLE_GTEST=ON -DAVIF_GTEST=LOCAL
          -DAVIF_BUILD_GDK_PIXBUF=ON  ${{ env.CMAKE_AVIF_FLAGS }}
      - name: Build libavif with [[nodiscard]] (ninja)
        if: runner.oldest-cmake == 'false'
        working-directory: ./build_nodiscard
        run: ninja
