| #!/bin/bash -eu |
| # Copyright 2017 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. |
| # |
| ################################################################################ |
| |
| # Wpantund's configure script is fuzzer-aware, so we |
| # move those flags into their own environment variables. |
| FUZZ_CFLAGS="${CFLAGS}" |
| FUZZ_CXXFLAGS="${CXXFLAGS}" |
| unset CFLAGS |
| unset CXXFLAGS |
| |
| ./bootstrap.sh |
| |
| ./configure \ |
| --enable-fuzz-targets \ |
| --disable-shared \ |
| --enable-static \ |
| CC="${CC}" \ |
| CXX="${CXX}" \ |
| FUZZ_LIBS="${LIB_FUZZING_ENGINE}" \ |
| FUZZ_CFLAGS="${FUZZ_CFLAGS}" \ |
| FUZZ_CXXFLAGS="${FUZZ_CXXFLAGS}" \ |
| LDFLAGS="-lpthread" \ |
| CXXFLAGS="-stdlib=libc++" |
| |
| # Build everything. |
| make -j$(nproc) |
| |
| # Copy all fuzzers and related options/dictionaries. |
| find . -name '*[-_]fuzz' -type f -exec cp -v '{}' $OUT ';' |
| find . -name '*[-_]fuzz.dict' -type f -exec cp -v '{}' $OUT ';' |
| find . -name '*[-_]fuzz.options' -type f -exec cp -v '{}' $OUT ';' |
| |
| # Copy all of the fuzzers' related corpi. |
| for f in etc/fuzz-corpus/*[-_]fuzz |
| do |
| fuzzer=$(basename $f) |
| if test -d "${f}" |
| then zip -j $OUT/${fuzzer}_seed_corpus.zip ${f}/* |
| fi |
| done |
| |
| # Dump out all of the files in the output. |
| find $OUT -type f > /dev/stderr |