
# simple font-end to the C68 compiler. KDW

# N.B.	The script assumes that you have a version of 'ld' that removes
#	the need for the 'cv' program ussed in earlier release of Minix-ST.
#	If not it will need slight amendment.

LIB=/usr/lib

CPP=$LIB/cpp
CEM=$LIB/c68
ASM=$LIB/as
LD=$LIB/ld

CRT=$LIB/crtso.o
END=$LIB/end.o
LIBC=$LIB/libc.a

trap "rm -f $dfiles \"\"" 1 2 3 4

ldflags="-a0:2 -a1:2 -a2:2 -a3:2"
ret=0

for option in $*
do
	case $option in
	# phase control
	-c)	stop=".o"
		;;
	# preprocessor options
	-D*)	cppflags="$cppflags $option"
		;;
	-I*)	cppflags="$cppflags $option"
		;;
	-U*)	cppflags="$cppflags $option"
		;;
	# compiler options
	-O)	
		;;
	-Q*)	cflags="$cflags $option"
		;;
	# linker options
	-m*)	ldflags="$ldflags $option"
		;;
	-o*)	ldflags="$ldflags $option"
		;;
	-s)	ldflags="$ldflags $option"
		;;
	-l*)	lib=`echo $option|cut -c3-`
		echo $LIB/lib$lib.a:
		ldfiles="$ldfiles $LIB/lib$lib.a"
		;;

	# files
	*.c)	bfile=`basename $option .c`
		echo $option:
		dfiles="$bfile.i $bfile.s"
		$CPP $cppflags $option >$bfile.i &&
		$CEM $cflags $bfile.i $bfile.s &&
		$ASM -o$bfile.o - $bfile.s || ret=1
		ldfiles="$ldfiles $bfile.o"
		rm -f $dfiles
		;;
	*.s)	bfile=`basename $option .s`
		echo $option:
		$ASM -o$bfile.o - $bfile.s || ret=1
		ldfiles="$ldfiles $bfile.o"
		;;
	*.o)	echo $option:
		ldfiles="$ldfiles $option"
		;;
	*.a)	echo $option:
		ldfiles="$ldfiles $option"
		;;
	*)	echo "usage: `basename $0` [-cOs] [-Dsymbol] [-Usymbol] [-Idir] [-ofile] [-msize] [-Qoption] files... [-llib]" >&2
		exit 1
		;;
	esac
	if [ $ret -ne 0 ]
	then
		rm -f $dfiles
		exit $ret
	fi
done

if [ -z "$stop" ]
then
	$LD $ldflags $CRT $ldfiles $LIBC $END
fi
exit $ret


