#!/usr/bin/env bash
set -e

NPROC=1

# OS detection
if [ "$(uname)" = "Linux" ]; then
	NPROC=$(nproc)
	CC=clang-10
elif [ "$(uname)" = "Darwin" ]; then
	NPROC=$(sysctl -n hw.ncpu)
	CC=/usr/local/opt/llvm/bin/clang
elif [ "$(uname)" = "FreeBSD" ]; then
	NPROC=$(sysctl -n hw.ncpu)
	CC=clang-devel
else
	echo "Error: $(uname) not supported, sorry!"
	exit 1
fi

# Check if we have a compiler
if ! [ -x "$(command -v $CC)" ]; then
	echo "Error: $CC is not installed!" >&2
	exit 1
fi

echo "OS :" $(uname)
echo "CC :" $CC
echo "NP :" $NPROC

# Go to script directory
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
cd "$SCRIPT_DIR"
cd ".."

pwd

# Find and then delete all files under current directory (.) that:
#  1. contains "cmake" (case-&insensitive) in its path (wholename)
#  2. name is not CMakeLists.txt
find . -iwholename '*cmake*' -not -name CMakeLists.txt -delete

# Build with ASAN / MSAN
cmake -Dsctp_build_fuzzer=1 -Dsctp_build_programs=0 -Dsctp_invariants=1 -Dsctp_sanitizer_address=1 -DCMAKE_LINKER="$CC" -DCMAKE_C_COMPILER="$CC" -DCMAKE_BUILD_TYPE=RelWithDebInfo .
#cmake -Dsctp_build_fuzzer=1 -Dsctp_build_programs=0 -Dsctp_invariants=1 -Dsctp_sanitizer_memory=1 -DCMAKE_LINKER="$CC" -DCMAKE_C_COMPILER="$CC" -DCMAKE_BUILD_TYPE=RelWithDebInfo .

make -j"$NPROC"
