#!/usr/bin/env bash

if [ "$1" == "SGX" ]; then
	if [ "$SGX" != "0" ]; then
	    export SGX=1
	    # Sometimes, we end up with a stray SGX_RUN in the environment,
	    # which makes the Makefile.Host unhappy
	    unset SGX_RUN
	    # The interaction of SGX and SGX_RUN is getting pretty unwieldly.
	    # We should kill off SGX_RUN.  Here, we can get in trouble
	    # if the make invocation below gets SGX_RUN via an MAKEFLAGS
	    # from a wrapper makefile (e.g., the regression tests)
	    unset MAKEFLAGS
	fi
	shift
fi

RUNTIME_DIR=$(/usr/bin/dirname $(readlink -f ${BASH_SOURCE[0]}))
PAL_HOST=$(/usr/bin/make --no-print-directory --quiet -f $RUNTIME_DIR/../Pal/src/Makefile.Host print_host 2>&1)

MANIFEST=
PREFIX=
PAL_CMD=$RUNTIME_DIR/pal-$PAL_HOST

if [ "$GDB" == "1" ]; then
	GDB=$RUNTIME_DIR/pal_gdb-$PAL_HOST
	if [ ! -f $GDB ]; then
		GDB="/usr/bin/gdb"
	fi
fi

if [ "$GDB" != "" ] && [ "$GDB" != "0" ]; then
	PREFIX="$GDB --args"
fi

if [ "$PERF" == "1" ]; then
	PREFIX="perf stat"
fi

if [ "$MEMUSG" == "1" ]; then
	PREFIX="$RUNTIME_DIR/../Scripts/memusg"
fi

if [ "$SEC" == "1" ]; then
	echo "Use reference monitor"
	PAL_CMD=$RUNTIME_DIR/pal_sec-$PAL_HOST
fi

while [ "$1" != "" ];
do
	if [ "$MANIFEST" == "" ]; then
		MANIFEST=$1
		shift
		continue
	fi

	break
done

if [ ! -f "$PAL_CMD" ]; then
	echo "$PAL_CMD is not built, or security mode is not supported"
	exit 1
fi

exec $PREFIX $PAL_CMD $MANIFEST "$@"
