#!/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.
#
################################################################################

# Case-sensitive names of internal Firefox fuzzing targets. Edit to add more.
FUZZ_TARGETS=(
  StructuredCloneReader
  Wasm
)

# Install dependencies.
export SHELL=/bin/bash
../../mach --no-interactive bootstrap --application-choice browser

autoconf2.13

# Skip patches for now
rm ../../tools/fuzzing/libfuzzer/patches/*.patch
touch ../../tools/fuzzing/libfuzzer/patches/dummy.patch

# Update internal libFuzzer.
(cd ../../tools/fuzzing/libfuzzer && ./clone_libfuzzer.sh HEAD)

mkdir -p build_OPT.OBJ
cd build_OPT.OBJ

../configure \
    --enable-debug \
    --enable-optimize="-O2 -gline-tables-only" \
    --disable-jemalloc \
    --enable-tests \
    --enable-fuzzing \
    --enable-$SANITIZER-sanitizer

make "-j$(nproc)"

cp dist/bin/fuzz-tests $OUT

# Build a wrapper binary for each target to set environment variables.
for FUZZ_TARGET in ${FUZZ_TARGETS[@]}
do
  $CC $CFLAGS -O0 \
    -DFUZZ_TARGET=$FUZZ_TARGET \
    $SRC/target.c -o $OUT/$FUZZ_TARGET
done

# Copy libraries.
mkdir -p $OUT/lib
cp -L /usr/lib/x86_64-linux-gnu/libc++.so.1 $OUT/lib
cp -L /usr/lib/x86_64-linux-gnu/libc++abi.so.1 $OUT/lib
