@@ -51,6 +51,7 @@ LIBWEBP_VERSION=1.5.0
51
51
BZIP2_VERSION=1.0.8
52
52
LIBXCB_VERSION=1.17.0
53
53
BROTLI_VERSION=1.1.0
54
+ LIBAVIF_VERSION=1.3.0
54
55
55
56
function build_pkg_config {
56
57
if [ -e pkg-config-stamp ]; then return ; fi
@@ -98,6 +99,59 @@ function build_harfbuzz {
98
99
touch harfbuzz-stamp
99
100
}
100
101
102
+ function build_libavif {
103
+ if [ -e libavif-stamp ]; then return ; fi
104
+
105
+ python3 -m pip install meson ninja
106
+
107
+ if [[ " $PLAT " == " x86_64" ]] || [ -n " $SANITIZER " ]; then
108
+ build_simple nasm 2.16.03 https://www.nasm.us/pub/nasm/releasebuilds/2.16.03
109
+ fi
110
+
111
+ local build_type=MinSizeRel
112
+ local lto=ON
113
+
114
+ local libavif_cmake_flags
115
+
116
+ if [ -n " $IS_MACOS " ]; then
117
+ lto=OFF
118
+ libavif_cmake_flags=(
119
+ -DCMAKE_C_FLAGS_MINSIZEREL=" -Oz -DNDEBUG -flto" \
120
+ -DCMAKE_CXX_FLAGS_MINSIZEREL=" -Oz -DNDEBUG -flto" \
121
+ -DCMAKE_SHARED_LINKER_FLAGS_INIT=" -Wl,-S,-x,-dead_strip_dylibs" \
122
+ )
123
+ else
124
+ if [[ " $MB_ML_VER " == 2014 ]] && [[ " $PLAT " == " x86_64" ]]; then
125
+ build_type=Release
126
+ fi
127
+ libavif_cmake_flags=(-DCMAKE_SHARED_LINKER_FLAGS_INIT=" -Wl,--strip-all,-z,relro,-z,now" )
128
+ fi
129
+
130
+ local out_dir=$( fetch_unpack https://github.com/AOMediaCodec/libavif/archive/refs/tags/v$LIBAVIF_VERSION .tar.gz libavif-$LIBAVIF_VERSION .tar.gz)
131
+ # CONFIG_AV1_HIGHBITDEPTH=0 is a flag for libaom (included as a subproject
132
+ # of libavif) that disables support for encoding high bit depth images.
133
+ (cd $out_dir \
134
+ && cmake \
135
+ -DCMAKE_INSTALL_PREFIX=$BUILD_PREFIX \
136
+ -DCMAKE_INSTALL_LIBDIR=$BUILD_PREFIX /lib \
137
+ -DCMAKE_INSTALL_NAME_DIR=$BUILD_PREFIX /lib \
138
+ -DBUILD_SHARED_LIBS=ON \
139
+ -DAVIF_LIBSHARPYUV=LOCAL \
140
+ -DAVIF_LIBYUV=LOCAL \
141
+ -DAVIF_CODEC_AOM=LOCAL \
142
+ -DCONFIG_AV1_HIGHBITDEPTH=0 \
143
+ -DAVIF_CODEC_AOM_DECODE=OFF \
144
+ -DAVIF_CODEC_DAV1D=LOCAL \
145
+ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=$lto \
146
+ -DCMAKE_C_VISIBILITY_PRESET=hidden \
147
+ -DCMAKE_CXX_VISIBILITY_PRESET=hidden \
148
+ -DCMAKE_BUILD_TYPE=$build_type \
149
+ " ${libavif_cmake_flags[@]} " \
150
+ . \
151
+ && make install)
152
+ touch libavif-stamp
153
+ }
154
+
101
155
function build {
102
156
build_xz
103
157
if [ -z " $IS_ALPINE " ] && [ -z " $SANITIZER " ] && [ -z " $IS_MACOS " ]; then
@@ -132,6 +186,7 @@ function build {
132
186
build_tiff
133
187
fi
134
188
189
+ build_libavif
135
190
build_libpng
136
191
build_lcms2
137
192
build_openjpeg
0 commit comments