@@ -186,51 +186,71 @@ function build_libavif {
186
186
187
187
python3 -m pip install meson ninja
188
188
189
- if [[ " $PLAT " == " x86_64" ]] || [ -n " $SANITIZER " ]; then
189
+ if ( [[ " $PLAT " == " x86_64" ]] && [[ -z " $IOS_SDK " ]]) || [ -n " $SANITIZER " ]; then
190
190
build_simple nasm 2.16.03 https://www.nasm.us/pub/nasm/releasebuilds/2.16.03
191
191
fi
192
192
193
193
local build_type=MinSizeRel
194
+ local build_shared=ON
194
195
local lto=ON
195
196
196
197
local libavif_cmake_flags
197
198
198
- if [ -n " $IS_MACOS " ]; then
199
+ if [[ -n " $IS_MACOS " ] ]; then
199
200
lto=OFF
200
201
libavif_cmake_flags=(
201
202
-DCMAKE_C_FLAGS_MINSIZEREL=" -Oz -DNDEBUG -flto" \
202
203
-DCMAKE_CXX_FLAGS_MINSIZEREL=" -Oz -DNDEBUG -flto" \
203
204
-DCMAKE_SHARED_LINKER_FLAGS_INIT=" -Wl,-S,-x,-dead_strip_dylibs" \
204
205
)
206
+ if [[ -n " $IOS_SDK " ]]; then
207
+ build_shared=OFF
208
+ fi
205
209
else
206
210
if [[ " $MB_ML_VER " == 2014 ]] && [[ " $PLAT " == " x86_64" ]]; then
207
211
build_type=Release
208
212
fi
209
213
libavif_cmake_flags=(-DCMAKE_SHARED_LINKER_FLAGS_INIT=" -Wl,--strip-all,-z,relro,-z,now" )
210
214
fi
215
+ if [[ -n " $IOS_SDK " ]] && [[ " $PLAT " == " x86_64" ]]; then
216
+ libavif_cmake_flags+=(-DAOM_TARGET_CPU=generic)
217
+ else
218
+ libavif_cmake_flags+=(
219
+ -DAVIF_CODEC_AOM_DECODE=OFF \
220
+ -DAVIF_CODEC_DAV1D=LOCAL
221
+ )
222
+ fi
211
223
212
224
local out_dir=$( fetch_unpack https://github.com/AOMediaCodec/libavif/archive/refs/tags/v$LIBAVIF_VERSION .tar.gz libavif-$LIBAVIF_VERSION .tar.gz)
225
+
213
226
# CONFIG_AV1_HIGHBITDEPTH=0 is a flag for libaom (included as a subproject
214
227
# of libavif) that disables support for encoding high bit depth images.
215
228
(cd $out_dir \
216
229
&& cmake \
217
230
-DCMAKE_INSTALL_PREFIX=$BUILD_PREFIX \
218
231
-DCMAKE_INSTALL_LIBDIR=$BUILD_PREFIX /lib \
219
232
-DCMAKE_INSTALL_NAME_DIR=$BUILD_PREFIX /lib \
220
- -DBUILD_SHARED_LIBS=ON \
233
+ -DBUILD_SHARED_LIBS=$build_shared \
221
234
-DAVIF_LIBSHARPYUV=LOCAL \
222
235
-DAVIF_LIBYUV=LOCAL \
223
236
-DAVIF_CODEC_AOM=LOCAL \
224
237
-DCONFIG_AV1_HIGHBITDEPTH=0 \
225
- -DAVIF_CODEC_AOM_DECODE=OFF \
226
- -DAVIF_CODEC_DAV1D=LOCAL \
227
238
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=$lto \
228
239
-DCMAKE_C_VISIBILITY_PRESET=hidden \
229
240
-DCMAKE_CXX_VISIBILITY_PRESET=hidden \
230
241
-DCMAKE_BUILD_TYPE=$build_type \
231
242
" ${libavif_cmake_flags[@]} " \
232
- . \
233
- && make install)
243
+ $HOST_CMAKE_FLAGS . )
244
+
245
+ if [[ -n " $IOS_SDK " ]]; then
246
+ # libavif's CMake configuration generates a meson cross file... but it
247
+ # doesn't work for iOS cross-compilation. Copy in Pillow-generated
248
+ # meson-cross config to replace the cmake-generated version.
249
+ cp $WORKDIR /meson-cross.txt $out_dir /crossfile-apple.meson
250
+ fi
251
+
252
+ (cd $out_dir && make install)
253
+
234
254
touch libavif-stamp
235
255
}
236
256
@@ -268,10 +288,7 @@ function build {
268
288
build_tiff
269
289
fi
270
290
271
- if [[ -z " $IOS_SDK " ]]; then
272
- # Short term workaround; don't build libavif on iOS
273
- build_libavif
274
- fi
291
+ build_libavif
275
292
build_libpng
276
293
build_lcms2
277
294
build_openjpeg
0 commit comments