# 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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
    - name: Set GCC & G++ 11 compiler (on Linux)
      if: runner.os == 'Linux'
      run: echo "CC=gcc-11" >> $GITHUB_ENV && echo "CXX=g++-11" >> $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@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # v4
    - 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=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_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
    - name: Prepare libavif with [[nodiscard]] (cmake)
      run: >
        mkdir build_nodiscard && cd build_nodiscard

        cmake .. -G Ninja
        -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_WUNUSED_RESULT=ON -DAVIF_ENABLE_WERROR=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 with [[nodiscard]] (ninja)
      working-directory: ./build_nodiscard
      run: ninja
