#!/bin/sh
# This file is part of the coreboot project.
#
# Copyright (C) 2011 Patrick Georgi <patrick@georgi-clan.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# DESCR: Check that build directories can be chosen freely

# $1: command to test for GNU make
search_make() {
if [ -n "`$1 --version 2>&1 | grep GNU`" ]; then MAKE=$1; fi
}

# if $1 and $2 differ, exit with failure
compare_output() {
if ! [ "$1" = "$2" ]; then
	echo \'$1\' should be \'$2\'
	exit 1
fi
}

# $1: object directory
run_printall() {
$MAKE CONFIG_USE_BLOBS=n CONFIG_CCACHE=n NOMKDIR=1 \
	DOTCONFIG=$TMPCONFIG obj=$1 printall |        \
	sed -e "s,^ *,," -e "s,^r.mstage-objs:=,,"    \
	    -e "s,mainboard/[^/]*/[^/]*/,.../,g" |    \
	tr " " "\n" | GREP_OPTIONS= grep "/static.*\.[co]" | sort | \
	tr '\012\015' '  ' | sed -e "s,  *, ,g" -e "s, *$,,"
}

# find GNU make
MAKE=
search_make make
[ -z $MAKE ] && search_make gmake
[ -z $MAKE ] && search_make gnumake

if [ "$MAKE" = "" ]; then
	echo Could not identify GNU make
	exit 1
fi

# prepare a config to use
TMPOBJ=`mktemp .tmpobj.XXXXXX`
rm $TMPOBJ
mkdir -p ${TMPOBJ}
TMPCONFIG=`mktemp .tmpconfig.XXXXXX`
rm -f $TMPCONFIG
$MAKE obj=$TMPOBJ DOTCONFIG=$TMPCONFIG allyesconfig >/dev/null

# look up parent directory
CURRENTDIR=`pwd -P`
PARENTDIR=`dirname $CURRENTDIR`

compare_output "`run_printall build`" "build/.../static.c build/.../static.c build/.../static.romstage.o"
compare_output "`run_printall ../obj`" "$PARENTDIR/obj/.../static.c $PARENTDIR/obj/.../static.c $PARENTDIR/obj/.../static.romstage.o"
compare_output "`run_printall /tmp`" "/tmp/.../static.c /tmp/.../static.c /tmp/.../static.romstage.o"
compare_output "`run_printall /../tmp`" "/tmp/.../static.c /tmp/.../static.c /tmp/.../static.romstage.o"

rm -rf $TMPCONFIG $TMPOBJ

