1#!/bin/bash -eu 2 3# build zlib 4pushd "$SRC/zlib" 5./configure --static --prefix="$WORK" 6make -j$(nproc) CFLAGS="$CFLAGS -fPIC" 7make install 8popd 9 10# Build xz 11pushd "$SRC/xz" 12./autogen.sh 13./configure --disable-xz --disable-xzdec --disable-lzmadec --disable-lzmainfo --disable-lzma-links --disable-scripts --disable-doc --disable-shared --with-pic=yes --prefix="$WORK" 14make -j$(nproc) 15make install 16popd 17 18# Build png 19pushd "$SRC/libpng" 20cmake . -DCMAKE_INSTALL_PREFIX=$WORK -DPNG_SHARED=off 21make -j$(nproc) 22make install 23popd 24 25# Build libjpeg-turbo 26pushd "$SRC/libjpeg-turbo" 27CFLAGS="$CFLAGS -fPIC" cmake . -DCMAKE_INSTALL_PREFIX=$WORK -DENABLE_STATIC=on -DENABLE_SHARED=off 28make -j$(nproc) 29make install 30popd 31 32# Build libtiff 33pushd "$SRC/libtiff" 34autoreconf -fiv 35./configure --prefix="$WORK" 36make -j$(nproc) 37make install 38popd 39 40# Build liblcms2 41pushd "$SRC/Little-CMS" 42autoreconf -fiv 43./configure --disable-shared --prefix="$WORK" 44make -j$(nproc) 45make install 46popd 47 48# build libraw 49pushd "$SRC/libraw" 50autoreconf -fiv 51./configure --prefix="$WORK" --disable-shared --with-pic=yes --disable-examples PKG_CONFIG_PATH="$WORK/lib/pkgconfig" CXXFLAGS="$CXXFLAGS -DLIBRAW_USE_CALLOC_INSTEAD_OF_MALLOC=on" 52make -j$(nproc) 53make install 54popd 55 56# Build freetype2 57pushd "$SRC/freetype2" 58./autogen.sh 59./configure --prefix="$WORK" --disable-shared PKG_CONFIG_PATH="$WORK/lib/pkgconfig" 60make -j$(nproc) 61make install 62popd 63 64# Build libde265 65pushd "$SRC/libde265" 66./autogen.sh 67./configure --disable-shared --prefix="$WORK" 68make -j$(nproc) 69make install 70popd 71 72# Build libheif 73pushd "$SRC/libheif" 74./autogen.sh 75./configure --disable-shared --disable-go --prefix="$WORK" PKG_CONFIG_PATH="$WORK/lib/pkgconfig" 76make -j$(nproc) 77make install 78popd 79 80# Build webp 81pushd "$SRC/libwebp" 82./autogen.sh 83./configure --disable-shared --prefix="$WORK" 84make -j$(nproc) 85make install 86popd 87 88# Build openjpg 89pushd "$SRC/openjpeg" 90cmake . -DCMAKE_INSTALL_PREFIX=$WORK -DBUILD_SHARED_LIBS=off -DBUILD_CODEC=off -DCMAKE_BUILD_TYPE=Release 91make -j$(nproc) 92make install 93popd 94 95 96# Build ImageMagick 97./configure --prefix="$WORK" --disable-shared --disable-docs --with-utilities=no LDFLAGS="${LDFLAGS:-} -L$WORK/lib" CFLAGS="$CFLAGS -I$WORK/include" PKG_CONFIG_PATH="$WORK/lib/pkgconfig" 98make "-j$(nproc)" 99make install 100 101MAGICK_COMPILER=$CXX 102MAGICK_COMPILER_FLAGS=$CXXFLAGS 103MAGICK_INCLUDE="$WORK/include/ImageMagick-7" 104MAGICK_SRC="$SRC/imagemagick/Magick++/fuzz" 105MAGICK_LIBS_NO_FUZZ="$WORK/lib/libMagick++-7.Q16HDRI.a $WORK/lib/libMagickWand-7.Q16HDRI.a $WORK/lib/libMagickCore-7.Q16HDRI.a $WORK/lib/libpng.a $WORK/lib/libtiff.a $WORK/lib/libheif.a $WORK/lib/libde265.a $WORK/lib/libopenjp2.a $WORK/lib/libwebp.a $WORK/lib/libturbojpeg.a $WORK/lib/libjpeg.a $WORK/lib/libfreetype.a $WORK/lib/libraw.a $WORK/lib/liblzma.a $WORK/lib/liblcms2.a $WORK/lib/libz.a" 106MAGICK_LIBS="$LIB_FUZZING_ENGINE $MAGICK_LIBS_NO_FUZZ" 107MAGICK_OUTPUT=$OUT 108MAGICK_FAST_BUILD=0 109 110. $MAGICK_SRC/build_fuzzers.sh 111 112mkdir afl_testcases 113(cd afl_testcases; tar xvf "$SRC/afl_testcases.tgz") 114for format in gif jpg png bmp ico webp tif; do 115 mkdir $format 116 find afl_testcases -type f -name '*.'$format -exec mv -n {} $format/ \; 117 zip -rj $format.zip $format/ 118 cp $format.zip "$OUT/encoder_${format}_fuzzer_seed_corpus.zip" 119done 120 121zip -rj "$OUT/encoder_heic_fuzzer_seed_corpus.zip" "$SRC/heic_corpus" 122