#!/bin/bash
OK=0
FAIL=1
TOPDIR=`pwd`
LOG_FILE=$1.log
LOG_DIR=${TOPDIR}/log/
LOG=${LOG_DIR}/${LOG_FILE}
DEPENDENCY=${LOG_DIR}/DEPEND/$1.depend.txt

LOG_OK_DIR=${LOG_DIR}/OK
LOG_FAIL_DIR=${LOG_DIR}/FAIL
LOG_OK_FILE=${LOG_OK_DIR}/${LOG_FILE}.OK
LOG_FAIL_FILE=${LOG_FAIL_DIR}/${LOG_FILE}.FAIL

mkdir -p ${LOG_DIR}
mkdir -p ${LOG_OK_DIR}
mkdir -p ${LOG_FAIL_DIR}
mkdir -p ${LOG_DIR}/DEPEND

test=${OK}

function	clean_files()
{
	rm -f ${LOG}
	rm -f ${LOG_OK_FILE}
	rm -f ${LOG_FAIL_FILE}
	rm -f ${DEPENDENCY}
}

function	dirclean ()
{
	make $1-dirclean > /dev/null 2>&1
}

function	process ()
{
	make $1 >> ${LOG} 2>&1 || test=${FAIL}
	grep "\.tar\." ${LOG} > ${DEPENDENCY}
	if [ ${test} = ${OK} ] ; then
		mv ${LOG} ${LOG_OK_FILE}
		printf "%-16s" "OK"
		if [ "${2}X" != "X" ] ; then
			printf	"%-16s"	"\"$2\"";
		fi
		if [ "${3}X" != "X" ] ; then
			printf	"%s"	"\"$3\"";
		fi
		echo
	else
		mv ${LOG} ${LOG_FAIL_FILE}
		printf "%-16s" "FAIL"
		if [ "${2}X" != "X" ] ; then
			printf	"%-16s"	"\"$2\"";
		else
			printf	"%-16s"	"\"\""
		fi
		if [ "${3}X" != "X" ] ; then
			printf	"%s"	"\"$3\"";
		fi
		echo
	fi
}

function build_package ()
{
	# echo "BUILD PACKAGE:1=$1 2=$2 3=$3 4=$4 5=$5 6=$6 7=$7"
	printf "mk	%-32s" "$1"
	if [ "$2X" = "X" ] ; then		# no parameters
		clean_files	$1
		dirclean	$1
		process		$1 "$3"
	elif [ "$2X" = "?X" ] ; then		# no parameters
		clean_files	$1
		dirclean	$1
		process		$1 "$3"
	elif [ "$2X" = "OKX" ] ; then	# Previous build was OK
		clean_files	$1
		dirclean	$1
		process		$1 "$3"
	elif [ "$2X" = "FAILX" ] ; then
		clean_files	$1
		dirclean	$1
		process		$1 "$3"
	elif [ "$2X" = "BROKENX" ] ; then
		printf  "%-16s" "BROKEN"
		if [ "${3}X" != "X" ] ; then
			printf	"%s"	"\"$3\"";
		fi
		echo
	elif [ "$2X" = "DISABLEDX" ] ; then
		printf  "%-16s" "DISABLED"
		if [ "${3}X" != "X" ] ; then
			printf	"%s"	"\"$3\"";
		fi
		echo
	else
		printf  "%-16s" "?BROKEN"
		if [ "${3}X" != "X" ] ; then
			printf	"%s"	"\"$3\"";
		fi
		echo
	fi
}

#build_package $1 $2 "\"$3\""
build_package $1 $2 "$3"



