#! /bin/sh

LIB=$HOME/cs/596/lcomp
PATH=$LIB:$PATH
export PATH
CC=cc

CFILES=
FFILES=
SFILES=
OFILES=
RMFILES=

LIBS=
FLIBS=
PROF=prof.out
LINK=true
EXEC=a.out
FFLAGS='-u _MAIN_'
FORTRAN='-lF77 -lI77 -lU77 -lm'

while [ $# != 0 ]
do
	case "$1" in
	*.c)	CFILES="$CFILES $1" ;;
	*.[fF])	FFILES="$FFILES $1" ; FLIBS="$FORTRAN" ;;
	*.[sS])	SFILES="$SFILES $1" ;;
	*.o)	OFILES="$OFILES $1" ;;
	-r)	shift ; PROF=$1 ;;
	-C)	CC=CC ;;
	-F)	FLIBS="$FORTRAN" ;;
	-O)	;;
	-c)	LINK=false ;;
	-o)	shift ; EXEC=$1 ;;
	-l*|*.a)LIBS="$LIBS $1" ;;
	-*)	FLAGS="$FLAGS $1" ;;
	esac
	shift
done

for i in $CFILES
do
	file=`echo $i | sed 's/\.c$//'`
	$CC -g -S $FLAGS $file.c	|| exit $?
	bb $file.s			|| exit $?
	SFILES="$SFILES $file.s"
	RMFILES="$RMFILES $file.s"
done

for i in $FFILES
do
	file=`echo $i | sed 's/\.[fF]$//'`
	f77 -g -S $FLAGS $i		|| exit $?
	bb $file.s			|| exit $?
	SFILES="$SFILES $file.s"
	RMFILES="$RMFILES $file.s"
done

for i in $SFILES
do
	file=`echo $i | sed 's/\.[sS]$//'`
	$CC -c $FLAGS $i		|| exit $?
	OFILES="$OFILES $file.o"
done

if $LINK
then
	if [ "$PROF" = prof.out ]
	then
		OFILES="$OFILES $LIB/bbfile.o"
	else
		echo "char *_bbfile = \"$PROF\";" > $$bbfile.c
		$CC -c $$bbfile.c
		OFILES="$OFILES $$bbfile.o"
		RMFILES="$RMFILES $$bbfile.c $$bbfile.o"
	fi

	if [ "$FLIBS" != "" ]
	then
		FLAGS="$FLAGS $FFLAGS"
	fi
	$CC -o $EXEC $FLAGS $OFILES $LIB/bbexit.o $LIBS $FLIBS || exit $?
fi
rm -f $RMFILES
