mirror of https://github.com/google/oss-fuzz.git
58 lines
1.6 KiB
Bash
Executable File
58 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
# Copyright 2022 Google LLC
|
|
#
|
|
# 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.
|
|
#
|
|
################################################################################
|
|
|
|
set -eu
|
|
|
|
./autogen.sh
|
|
|
|
# Sniff $CXXFLAGS to figure out what to pass to ./configure.
|
|
configure_flags=
|
|
case $CXXFLAGS in
|
|
*-fsanitize=address*)
|
|
configure_flags="$configure_flags --enable-asan"
|
|
;;
|
|
esac
|
|
case $CXXFLAGS in
|
|
*-fcoverage*)
|
|
configure_flags="$configure_flags --enable-code-coverage"
|
|
;;
|
|
esac
|
|
|
|
# Use libstdc++, not libc++, since the base image's prebuild libraries require
|
|
# libstdc++.
|
|
export CXXFLAGS="$CXXFLAGS -stdlib=libstdc++"
|
|
|
|
# Clear CFLAGS and CXXFLAGS during configure tests so configure won't try to
|
|
# link with -fsanitize=fuzz.
|
|
CFLAGS= CXXFLAGS= ./configure --disable-silent-rules --enable-fuzzing --enable-static-libraries $configure_flags
|
|
|
|
n=$(nproc)
|
|
make -j$n CFLAGS+="$CFLAGS" CXXFLAGS+="$CXXFLAGS"
|
|
|
|
cd src/fuzz
|
|
|
|
make -j$n CFLAGS+="$CFLAGS" CXXFLAGS+="$CXXFLAGS"
|
|
|
|
for fuzzer in *_fuzzer; do
|
|
cp $fuzzer $OUT
|
|
|
|
corpus=${fuzzer%_fuzzer}_corpus
|
|
if [ -d $corpus ]; then
|
|
zip -j $OUT/${fuzzer}_seed_corpus.zip $corpus/*
|
|
fi
|
|
done
|