diff --git a/.ci/install.sh b/.ci/install.sh index 0502dfd7edb..d7593db2012 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -31,7 +31,7 @@ python3 -m pip install -U pytest-cov python3 -m pip install -U pytest-timeout python3 -m pip install pyroma python3 -m pip install test-image-results -python3 -m pip install meson + # TODO Remove condition when numpy supports 3.10 if ! [ "$GHA_PYTHON_VERSION" == "3.10-dev" ]; then python3 -m pip install numpy ; fi diff --git a/.github/workflows/macos-install.sh b/.github/workflows/macos-install.sh index 29030daa018..fb2ed60c7bf 100755 --- a/.github/workflows/macos-install.sh +++ b/.github/workflows/macos-install.sh @@ -2,7 +2,9 @@ set -e -brew install libtiff libjpeg openjpeg libimagequant webp little-cms2 freetype openblas libraqm cmake nasm ninja meson +brew install \ + libtiff libjpeg openjpeg libimagequant webp little-cms2 freetype openblas \ + libraqm dav1d aom rav1e PYTHONOPTIMIZE=0 python3 -m pip install cffi python3 -m pip install coverage diff --git a/depends/install_libavif.sh b/depends/install_libavif.sh index 5011cc0b016..e1da64ea9db 100755 --- a/depends/install_libavif.sh +++ b/depends/install_libavif.sh @@ -11,6 +11,8 @@ else MAKE_INSTALL=(sudo make install) fi +PKGCONFIG=${PKGCONFIG:-pkg-config} + export CFLAGS="-fPIC -O3 $CFLAGS" export CXXFLAGS="-fPIC -O3 $CXXFLAGS" @@ -19,24 +21,54 @@ curl -sLo - \ | tar Czxf . - pushd libavif-$LIBAVIF_VERSION -cd ext -bash libyuv.cmd -bash aom.cmd -# dav1d needs to be compiled with -Denable_avx512=false to accomodate -# older nasm on some systems -perl -pi -e 's/^meson /meson -Denable_avx512=false /g' dav1d.cmd -bash dav1d.cmd -cd .. +HAS_DECODER=0 +HAS_ENCODER=0 + +if $PKGCONFIG --exists dav1d; then + LIBAVIF_CMAKE_FLAGS+=(-DAVIF_CODEC_DAV1D=ON) + HAS_DECODER=1 +fi + +if $PKGCONFIG --exists rav1e; then + LIBAVIF_CMAKE_FLAGS+=(-DAVIF_CODEC_RAV1E=ON) + HAS_ENCODER=1 +fi + +if $PKGCONFIG --exists SvtAv1Enc; then + LIBAVIF_CMAKE_FLAGS+=(-DAVIF_CODEC_SVT=ON) + HAS_ENCODER=1 +fi + +if $PKGCONFIG --exists libgav1; then + LIBAVIF_CMAKE_FLAGS+=(-DAVIF_CODEC_LIBGAV1=ON) + HAS_DECODER=1 +fi + +if $PKGCONFIG --exists aom; then + LIBAVIF_CMAKE_FLAGS+=(-DAVIF_CODEC_AOM=ON) + HAS_ENCODER=1 + HAS_DECODER=1 +fi + +if [ "$HAS_ENCODER" != 1 ] || [ "$HAS_DECODER" != 1 ]; then + pushd ext > /dev/null + bash aom.cmd + popd > /dev/null + LIBAVIF_CMAKE_FLAGS+=(-DAVIF_CODEC_AOM=ON -DAVIF_LOCAL_AOM=ON) +fi + +if uname -s | grep -q Darwin; then + # Prevent cmake from using @rpath in install id, so that delocate can + # find and bundle the libavif dylib + LIBAVIF_CMAKE_FLAGS+=("-DCMAKE_INSTALL_NAME_DIR=$PREFIX/lib" -DCMAKE_MACOSX_RPATH=OFF) +fi mkdir build cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=$PREFIX \ - -DAVIF_CODEC_AOM=ON \ - -DAVIF_LOCAL_AOM=ON \ - -DAVIF_CODEC_DAV1D=ON \ - -DAVIF_LOCAL_DAV1D=ON \ - -DAVIF_LOCAL_LIBYUV=ON + -DCMAKE_BUILD_TYPE=Release \ + "${LIBAVIF_CMAKE_FLAGS[@]}" make && "${MAKE_INSTALL[@]}" cd .. diff --git a/docs/installation.rst b/docs/installation.rst index 7cf6f7f8eec..52223e36347 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -306,7 +306,7 @@ Then see ``depends/install_raqm_cmake.sh`` to install libraqm. To install libavif on macOS use Homebrew to install its build dependencies:: - brew install nasm ninja meson cmake + brew install aom dav1d rav1e Then see ``depends/install_libavif.sh`` to install libavif. @@ -411,7 +411,6 @@ See ``depends/install_raqm.sh`` to install libraqm. Build prerequisites for libavif on Ubuntu are installed with:: sudo apt-get install cmake ninja-build nasm - sudo python3 -m pip install meson Then see ``depends/install_libavif.sh`` to build and install libavif.