#!/bin/bash

# Wrapper around cmake to emulate useful options
# from the previous autoconf-based configure script.

RUNDIR=$(dirname "$0")
RUNDIR=$(cd "$RUNDIR" && pwd)
CURDIR=$(pwd)

FLAGS=()

usage()
{
	exitval="$1"
	errmsg="$2"

	if [ $exitval -ne 0 ] ; then
		exec 1>&2
	fi
	if [ ! -z "$errmsg" ] ; then
		echo "ERROR: $errmsg" 1>&2
	fi
	cat <<EOF
$0 [<configure_options>] [-- [<cmake options>]]
  --prefix=PREFIX         install architecture-independent files in PREFIX
  --enable-threading      Enable code to support partly multi-threaded use
  --enable-rdrand         Enable RDRAND Hardware RNG Hash Seed generation on
                          supported x86/x64 platforms.
  --enable-shared         build shared libraries [default=yes]
  --enable-static         build static libraries [default=yes]
  --disable-Bsymbolic     Avoid linking with -Bsymbolic-function
  --disable-werror        Avoid treating compiler warnings as fatal errors
  --disable-extra-libs    Avoid linking against extra libraries, such as libbsd

EOF
	exit
}

if [ "$CURDIR" = "$RUNDIR" ] ; then
	usage 1 "Please mkdir some other build directory, and run this script from there."
fi

if ! cmake --version ; then
	usage 1 "Unable to find a working cmake, please be sure you have it installed and on your PATH"
fi

while [ $# -gt 0 ] ; do
	case "$1" in
	-h|--help)
		usage 0
		;;
	--prefix)
		FLAGS+=(-DCMAKE_INSTALL_PREFIX="$2")
		shift
		;;
	--prefix=*)
		FLAGS+=(-DCMAKE_INSTALL_PREFIX="${1##--prefix=}")
		;;
	--enable-threading)
		FLAGS+=(-DENABLE_THREADING=ON)
		;;
	--enable-rdrand)
		FLAGS+=(-DENABLE_RDRAND=ON)
		;;
	--enable-shared)
		FLAGS+=(-DBUILD_SHARED_LIBS=ON)
		;;
	--disable-shared)
		FLAGS+=(-DBUILD_SHARED_LIBS=OFF)
		;;
	--enable-static)
		FLAGS+=(-DBUILD_STATIC_LIBS=ON)
		;;
	--disable-static)
		FLAGS+=(-DBUILD_STATIC_LIBS=OFF)
		;;
	--disable-Bsymbolic)
		FLAGS+=(-DDISABLE_BSYMBOLIC=ON)
		;;
	--disable-werror)
		FLAGS+=(-DDISABLE_WERROR=ON)
		;;
	--disable-extra-libs)
		FLAGS+=(-DDISABLE_EXTRA_LIBS=ON)
		;;
	--)
		shift
		break
		;;
	-*)
		usage 1 "Unknown arguments: $*"
		;;
	*)
		break
		;;
	esac
	shift
done

exec cmake "${FLAGS[@]}" "$@" "${RUNDIR}"
