| #!/bin/bash -eu |
| # Copyright 2019 Google Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| ################################################################################ |
| |
| # Build dependencies. |
| export DEPS_PATH=$SRC/deps |
| mkdir -p $DEPS_PATH |
| |
| cd $SRC/x265/build/linux |
| cmake -G "Unix Makefiles" \ |
| -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX \ |
| -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ |
| -DCMAKE_INSTALL_PREFIX="$DEPS_PATH" \ |
| -DENABLE_SHARED:bool=off \ |
| ../../source |
| make clean |
| make -j$(nproc) x265-static |
| make install |
| |
| cd $SRC/libde265 |
| ./autogen.sh |
| ./configure \ |
| --prefix="$DEPS_PATH" \ |
| --disable-shared \ |
| --enable-static \ |
| --disable-dec265 \ |
| --disable-sherlock265 \ |
| --disable-hdrcopy \ |
| --disable-enc265 \ |
| --disable-acceleration_speed |
| make clean |
| make -j$(nproc) |
| make install |
| |
| mkdir -p $SRC/aom/build/linux |
| cd $SRC/aom/build/linux |
| cmake -G "Unix Makefiles" \ |
| -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX \ |
| -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ |
| -DCMAKE_INSTALL_PREFIX="$DEPS_PATH" \ |
| -DENABLE_SHARED:bool=off -DCONFIG_PIC=1 \ |
| -DENABLE_EXAMPLES=0 -DENABLE_DOCS=0 -DENABLE_TESTS=0 \ |
| -DCONFIG_SIZE_LIMIT=1 \ |
| -DDECODE_HEIGHT_LIMIT=12288 -DDECODE_WIDTH_LIMIT=12288 \ |
| -DDO_RANGE_CHECK_CLAMP=1 \ |
| -DAOM_MAX_ALLOCABLE_MEMORY=536870912 \ |
| -DAOM_TARGET_CPU=generic \ |
| ../../ |
| make clean |
| make -j$(nproc) |
| make install |
| |
| # Remove shared libraries to avoid accidental linking against them. |
| rm -f $DEPS_PATH/lib/*.so |
| rm -f $DEPS_PATH/lib/*.so.* |
| |
| cd $SRC/libheif |
| ./autogen.sh |
| PKG_CONFIG="pkg-config --static" PKG_CONFIG_PATH="$DEPS_PATH/lib/pkgconfig" ./configure \ |
| --disable-shared \ |
| --enable-static \ |
| --disable-examples \ |
| --disable-go \ |
| --enable-libfuzzer="$LIB_FUZZING_ENGINE" \ |
| CPPFLAGS="-I$DEPS_PATH/include" |
| make clean |
| make -j$(nproc) |
| |
| cp libheif/*-fuzzer $OUT |
| cp fuzzing/dictionary.txt $OUT/box-fuzzer.dict |
| cp fuzzing/dictionary.txt $OUT/file-fuzzer.dict |
| |
| zip -r $OUT/file-fuzzer_seed_corpus.zip fuzzing/corpus/*.heic |