#!/bin/sh
:	'(c) Copyright	Empress Software Inc.	1983, 2003'

if test "$EMPRESSPATH" = "" 
then
	echo "EMPRESSPATH not set"
	exit 1

elif test ! -d $EMPRESSPATH
then
	echo "invalid EMPRESSPATH"
	exit 1
else
	RDBMSPATH=$EMPRESSPATH/rdbms
	export RDBMSPATH
fi

PROGNAME=`$EMPRESSPATH/common/sys_bin/basename $0`
USAGE="*** Usage ***  $PROGNAME"

. $RDBMSPATH/util_bin/banner

. $EMPRESSPATH/config/options

case "$#" in
  "0")
	;;
  *)
	echo "$USAGE"
	exit 1
	;;
esac

echo "******************************************************************"
echo "*                                                                *"
echo "*                       E M P G B L D X                          *"
echo "*                                                                *"
echo "*           Empress GUI executable building utility              *"
echo "*                                                                *"
echo "******************************************************************"
echo ""

TMPC=egui.c
TMPO=empgout.o

BLDX_VERSION=
BLDX_COMMENT=
BLDX_DATADB=
STARTUP=
OTHERAPPL=
OUTPUT=
DEVDB=

LOWER=$EMPRESSPATH/common/sys_bin/lower

while test "$OUTPUT" = "" 
do
	echo -n "Enter name of executable file : " 
	read OUTPUT
done


if test -d $OUTPUT
then
	echo "	*** Error *** Directory $OUTPUT exists. Exiting ...  " 
	exit 1
fi

if test -f $OUTPUT
then
	echo -n "Output file $OUTPUT already exists.  Is it okay to remove it? "
	read ANSWER

	case "$ANSWER" in
	 y*|Y*)
		rm -f $OUTPUT
		;;
	 *)
		echo "*** Exiting ***"
		exit 0
		;;
	esac
fi

if test -f $TMPC
then
	echo -n "Temporory file $TMPC exists. Is it okay to remove it? "
	read ANSWER

	case "$ANSWER" in
	 y*|Y*)
		rm -f $TMPC
		;;
	 *)
		echo "*** Exiting ***"
		exit 0
		;;
	esac
fi

if test -f $TMPO
then
	echo -n "Temporory file $TMPO exists. Is it okay to remove it? "
	read ANSWER

	case "$ANSWER" in
	 y*|Y*)
		rm -f $TMPO
		;;
	 *)
		echo "*** Exiting ***"
		exit 0
		;;
	esac
fi


while test "$DEVDB" = "" 
do
	echo -n "Enter name of development database : " 
	read DEVDB

	echo "	Checking database ..."
	if ($EMPRESSPATH/bin/empcmd "$DEVDB" "display sys_gui_application" \
			 2> /dev/null 1> /dev/null)
	then
		:
	else
		echo "	*** Database $DEVDB is not a GUI database ***"
		DEVDB=
	fi
done

echo ""
echo -n "Enter executable version: "
read BLDX_VERSION

echo -n "Enter executable comment: "
read BLDX_COMMENT

echo -n "Enter Default Data DB name : "
read BLDX_DATADB
if test "$BLDX_DATADB" != ""
then
	echo "	Checking database ..."
	if ($EMPRESSPATH/bin/empcmd "$BLDX_DATADB" " " 2> /dev/null 1> /dev/null)
	then
		:
	else
		echo "	*** Warning *** $BLDX_DATADB is not a valid database ***"
	fi
fi

echo ""
while test "$STARTUP" = ""
do
	echo -n "Enter Default Startup Application name : "
	read STARTUP

	if test "$STARTUP" != ""
	then
		TESTNAME=`$EMPRESSPATH/bin/empcmd $DEVDB "select name print '' \
			from sys_gui_application" | grep $STARTUP` 
		if test $TESTNAME = ""
		then
			echo "	*** Warning ***	Application $STARTUP not found. Try Again"
			STARTUP=
		fi
	fi
done

APPLENTRY="true"
APPLLIST="\"$STARTUP\""
while test "$APPLENTRY" != "" 
do
	echo -n "Enter additional application to be included in executable : "
	read APPLENTRY
	case "$APPLENTRY" in
	  "")
		;;
	  *)
		TESTNAME=`$EMPRESSPATH/bin/empcmd $DEVDB "select name print '' \
			from sys_gui_application" | grep $APPLENTRY` 
		if test $TESTNAME = ""
		then
			echo "	*** Warning ***	Application $APPLENTRY not found. Try Again"
		else
			APPLLIST="$APPLLIST \"$APPLENTRY\""
		fi
		;;
	esac
done
		
echo ""
while test "$ACTTAB" = "" 
do
	echo -n "Enter C_API user action table [<enter> for default] : "
	read ACTTAB
	
	case $ACTTAB in
	  "")
	  	break;
		;;
	  *)
		if test -f $ACTTAB
		then
			break;
		else
			ACTTAB=
		fi
		;;
	esac
done

if test "$ACTTAB" != ""
then
	FILEENTRY=true
	FILELIST=
	while test "$FILEENTRY" != ""
	do
		echo -n "Enter C_API user action file : "
		read FILEENTRY
		case "$FILEENTRY" in
		  "")
			;;
		  *)
			if test -f $FILEENTRY
			then
				FILELIST="$FILELIST $FILEENTRY"
			else
				echo "	File $FILEENTRY does not exists. Try again"
				FILEENTRY=x
			fi
			;;
		esac
	done
fi

OTHERPARAM="-EMPGUI_USER \"$LOGNAME\""

if test "$BLDX_VERSION" != ""
then
	OTHERPARAM="$OTHERPARAM -EMPGUI_VERSION \"$BLDX_VERSION\""
fi

if test "$BLDX_COMMENT" != ""
then
	OTHERPARAM="$OTHERPARAM -EMPGUI_COMMENT \"$BLDX_COMMENT\""
fi

if test "$BLDX_DATADB" != ""
then
	OTHERPARAM="$OTHERPARAM -EMPGUI_DATADB \"$BLDX_DATADB\""
fi

OTHERPARAM="$OTHERPARAM $DEVDB $APPLLIST"
eval set -- $OTHERPARAM

echo ""
echo "Generating data file ..."
$RDBMSPATH/exec/empgutil -EMPGUI_QUIET -EMPGUI_BUILD -EMPGUI_OUTFILE $TMPC "$@"

echo "Compiling data file ..."
$EMPRESSPATH/common/sys_bin/cc -c MAIN-$TMPC -I$RDBMSPATH/include
$EMPRESSPATH/common/sys_bin/cc -c A_*-$TMPC -I$RDBMSPATH/include
$EMPRESSPATH/common/sys_bin/cc -c M_*-$TMPC -I$RDBMSPATH/include

$EMPRESSPATH/common/sys_bin/mergeobj $TMPO MAIN-*.o A_*.o M_*.o

echo "Building executable ..."
$EMPRESSPATH/bin/empguicc -LOCAL -noshlib -ESQL -I$RDBMSPATH/include $ACTTAB $FILELIST -o $OUTPUT $TMPO 

echo "Cleaning up ..."
rm -f $TMPC $TMPO MAIN-*.o A_*.o M_*.o MAIN-*.c A_*.c M_*.c
