Add build instructions for libavif on iOS.

This commit is contained in:
Russell Keith-Magee 2025-07-11 09:48:23 +08:00
parent 8ec31431cb
commit 1e65578ad4
No known key found for this signature in database
GPG Key ID: 3D2DAB6A37BB5BC3
3 changed files with 25 additions and 11 deletions

View File

@ -1 +1 @@
cibuildwheel==3.0.1 cibuildwheel==3.1.2

View File

@ -202,14 +202,24 @@ function build_libavif {
-DCMAKE_CXX_FLAGS_MINSIZEREL="-Oz -DNDEBUG -flto" \ -DCMAKE_CXX_FLAGS_MINSIZEREL="-Oz -DNDEBUG -flto" \
-DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,-S,-x,-dead_strip_dylibs" \ -DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,-S,-x,-dead_strip_dylibs" \
) )
if [[ -z "$IOS_SDK" ]]; then
libavif_cmake_flags=(
$libavif_cmake_flags
-DBUILD_SHARED_LIBS=ON
)
fi
else else
if [[ "$MB_ML_VER" == 2014 ]] && [[ "$PLAT" == "x86_64" ]]; then if [[ "$MB_ML_VER" == 2014 ]] && [[ "$PLAT" == "x86_64" ]]; then
build_type=Release build_type=Release
fi fi
libavif_cmake_flags=(-DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--strip-all,-z,relro,-z,now") libavif_cmake_flags=(
-DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--strip-all,-z,relro,-z,now" \
-DBUILD_SHARED_LIBS=ON \
)
fi fi
local out_dir=$(fetch_unpack https://github.com/AOMediaCodec/libavif/archive/refs/tags/v$LIBAVIF_VERSION.tar.gz libavif-$LIBAVIF_VERSION.tar.gz) local out_dir=$(fetch_unpack https://github.com/AOMediaCodec/libavif/archive/refs/tags/v$LIBAVIF_VERSION.tar.gz libavif-$LIBAVIF_VERSION.tar.gz)
# CONFIG_AV1_HIGHBITDEPTH=0 is a flag for libaom (included as a subproject # CONFIG_AV1_HIGHBITDEPTH=0 is a flag for libaom (included as a subproject
# of libavif) that disables support for encoding high bit depth images. # of libavif) that disables support for encoding high bit depth images.
(cd $out_dir \ (cd $out_dir \
@ -217,7 +227,6 @@ function build_libavif {
-DCMAKE_INSTALL_PREFIX=$BUILD_PREFIX \ -DCMAKE_INSTALL_PREFIX=$BUILD_PREFIX \
-DCMAKE_INSTALL_LIBDIR=$BUILD_PREFIX/lib \ -DCMAKE_INSTALL_LIBDIR=$BUILD_PREFIX/lib \
-DCMAKE_INSTALL_NAME_DIR=$BUILD_PREFIX/lib \ -DCMAKE_INSTALL_NAME_DIR=$BUILD_PREFIX/lib \
-DBUILD_SHARED_LIBS=ON \
-DAVIF_LIBSHARPYUV=LOCAL \ -DAVIF_LIBSHARPYUV=LOCAL \
-DAVIF_LIBYUV=LOCAL \ -DAVIF_LIBYUV=LOCAL \
-DAVIF_CODEC_AOM=LOCAL \ -DAVIF_CODEC_AOM=LOCAL \
@ -229,8 +238,17 @@ function build_libavif {
-DCMAKE_CXX_VISIBILITY_PRESET=hidden \ -DCMAKE_CXX_VISIBILITY_PRESET=hidden \
-DCMAKE_BUILD_TYPE=$build_type \ -DCMAKE_BUILD_TYPE=$build_type \
"${libavif_cmake_flags[@]}" \ "${libavif_cmake_flags[@]}" \
. \ $HOST_CMAKE_FLAGS . )
&& make install)
if [[ -n "$IOS_SDK" ]]; then
# libavif's CMake configuration generates a meson cross file... but it
# doesn't work for iOS cross-compilation. Copy in Pillow-generated
# meson-cross config to replace the cmake-generated version.
cp $WORKDIR/meson-cross.txt $out_dir/crossfile-apple.meson
fi
(cd $out_dir && make install)
touch libavif-stamp touch libavif-stamp
} }
@ -268,10 +286,7 @@ function build {
build_tiff build_tiff
fi fi
if [[ -z "$IOS_SDK" ]]; then build_libavif
# Short term workaround; don't build libavif on iOS
build_libavif
fi
build_libpng build_libpng
build_lcms2 build_lcms2
build_openjpeg build_openjpeg

View File

@ -25,8 +25,7 @@ def test_wheel_modules() -> None:
elif sys.platform == "ios": elif sys.platform == "ios":
# tkinter is not available on iOS # tkinter is not available on iOS
# libavif is not available on iOS (for now) expected_modules.remove("tkinter")
expected_modules -= {"tkinter", "avif"}
assert set(features.get_supported_modules()) == expected_modules assert set(features.get_supported_modules()) == expected_modules