#!/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"



