• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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