#!/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}
		echo "OK	"
	else
		mv ${LOG} ${LOG_FAIL_FILE}
		printf "FAIL	"
		echo	\"$2\"
	fi
}

function build_package ()
{
	printf "mk	%-31s" "$1"
	if [ "$2X" == "X" ] ; then		# no parameters
		clean_files	$1
		dirclean	$1
		process		$1
	elif [ "$2X" == "OKX" ] ; then	# Previous build was OK
		clean_files	$1
		dirclean	$1
		process		$1
	elif [ "$2X" == "FAILX" ] ; then
		clean_files	$1
		dirclean	$1
		process		$1 $3
	elif [ "$2X" == "BROKENX" ] ; then
		printf  "BROKEN	"
		echo	\"$3\"
	fi
}

build_package $1 $2 $3



