# 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:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest]

    steps:
    - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
    - name: Set GCC & G++ 10 compiler (on Linux)
      if: runner.os == 'Linux'
      run: echo "CC=gcc-10" >> $GITHUB_ENV && echo "CXX=g++-10" >> $GITHUB_ENV

    - name: Cache external dependencies
      id: cache-ext
      uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
      with:
        path: ext
        key: ${{ runner.os }}-shared-installed-${{ hashFiles('ext/*.cmd') }}
    - name: Setup cmake
      uses: jwlawson/actions-setup-cmake@187efd9581ed20ee4e03c0dfb9ac2cd5896c4835 # v1.14.1
      with:
        cmake-version: '3.13.x'
    - name: Print cmake version
      run: cmake --version
    - uses: seanmiddleditch/gha-setup-ninja@16b940825621068d98711680b6c3ff92201f8fc0 # v3
    - name: Install dependencies (Linux)
      if: runner.os == 'Linux'
      run: |
        echo "deb http://azure.archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list
        sudo apt-get update
        sudo apt-get install libaom-dev libdav1d-dev libyuv-dev imagemagick
    - name: Install dependencies (macOS)
      if: runner.os == 'macOS'
      run: brew install aom dav1d imagemagick
    - name: Print ImageMagick version
      run: convert --version
      # TODO(yguyon): Install libyuv (not available with brew).

      # `sudo apt-get install googletest libgtest-dev` leads to the following:
      #   "libgtest.a(gtest-all.cc.o): undefined reference to `std::__throw_bad_array_new_length()'"
      # so build it locally instead.
    - 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=ON
        -DAVIF_CODEC_AOM_DECODE=OFF -DAVIF_CODEC_AOM_ENCODE=ON
        -DAVIF_CODEC_DAV1D=ON
        -DAVIF_BUILD_EXAMPLES=ON -DAVIF_BUILD_APPS=ON
        -DAVIF_BUILD_TESTS=ON -DAVIF_ENABLE_GTEST=ON -DAVIF_LOCAL_GTEST=ON
        -DAVIF_BUILD_GDK_PIXBUF=ON -DCMAKE_INSTALL_PREFIX=./install
    - 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
