#!/bin/sh
#
# Build world+kernel for a specific target
#


args=`getopt cCkwsj:p:t:W: $*`

CLEAN=yes
JOBS=1

MAKE=/usr/bin/make
PLATFORMS_ROOT=$HOME/fbsd_platforms

if [ x$MAKEOBJDIRPREFIX = "x" ]; then
	MAKEOBJDIRPREFIX="/usr/obj"
fi

set -- $args
while true; do
	case "$1" in
		-c)	# clean
			CLEAN=yes
			;;
		-C) # no clean
			CLEAN=
			;;
		-j) # parallel jobs
			JOBS=$2
			shift
			;;
		-s) # silent
			MAKEARGS="$MAKEARGS -s"
			;;
		-t)
			TARGET="$TARGET $2"
			shift
			;;
		-p)
			PLATFORM=$2
			shift
			;;
		-k)
			KERNEL=yes
			;;
		-w)
			WORLD=yes
			;;
		-W)
			MAKEOBJDIRPREFIX=$2
			shift
			;;
		--)
			shift; break
			;;
	esac
	shift
done

if [ x$PLATFORM = x ]; then
	echo "You must specify a platform to target"
	exit 2
fi

if [ x$WORLD = "x" -a x$KERNEL = "x" -a x"$TARGET" = "x" ]; then
	echo "You must specify a target with '-t' or '-k' or '-w'"
	exit 2
fi

if [ x"$WORLD" != "x" ]; then
	TARGET="$TARGET buildworld"
fi

if [ x"$KERNEL" != "x" ]; then
	TARGET="$TARGET buildkernel"
fi

echo "Building for platform $PLATFORM with targets: $TARGET"

MAKEOBJDIRPREFIX=$MAKEOBJDIRPREFIX/$PLATFORM
export MAKEOBJDIRPREFIX

if [ x$CLEAN = "x" ]; then
	MAKEARGS="$MAKEARGS -DNO_CLEAN"
fi

if [ -e "$PLATFORMS_ROOT/$PLATFORM/make.conf" ]; then
	MAKECONF=$PLATFORMS_ROOT/$PLATFORM/make.conf
fi
if [ -e "$PLATFORMS_ROOT/$PLATFORM/src.conf" ]; then
	SRCCONF=$PLATFORMS_ROOT/$PLATFORM/src.conf
fi

for T in $TARGET; do
	echo "***** Building $T *****"
	$MAKE $MAKEARGS -j$JOBS SRCCONF=$SRCCONF __MAKE_CONF=$MAKECONF $T
done
