#!/bin/csh -f
# $Id: mcc,v 1.1 1996/03/20 21:32:34 paul Exp $

set ofile = a.out
set vbose = 0
set nolink = 0
set delete = 1
set srcfiles = ()
set stdgccopts = (-funsigned-char -fno-common)
set options= ()
set defines = (-I$MX_INCL -D_EM_WSIZE=4 -D_EM_PSIZE=4 -D_EM_LSIZE=4)
set libs = ()
set stksize = ()

while ($#argv != 0)
	switch ($argv[1])
                case -N:
			set delete = 0
			breaksw;
		case -o:
			set ofile = $argv[2]
			shift
			breaksw;
		case -v:
			set vbose = 1
			breaksw;
		case -c:
			set nolink = 1
			breaksw;
		case -l*:
			set libs = ($libs $argv[1])
			breaksw;
		case -D*:
		case -O:			
			set defines = ($defines $argv[1])
			breaksw;
		case -S:
			set stksize = $argv[2]
			shift
			breaksw;
		case -*:
			set options = ($options $argv[1])
			breaksw;
		default:
			set srcfiles = ($srcfiles $argv[1])
			breaksw;
	endsw	
	shift
end

set objfiles = ()
foreach f ($srcfiles)

	if ("$f" =~ *.c) then
		echo $f":"
		if ($vbose) then
			echo gcc $stdgccopts $defines $options -c $f 
		else
			gcc $stdgccopts $defines $options -c $f
		endif
		set objfiles = ($objfiles `basename $f .c`.o)
	else if ($f =~ *.s) then
		echo $f":"
		if ($nolink == 1 && $ofile != "a.out") then
			set options = (-o $ofile $options)
		endif
		if ($vbose) then
			echo as -P $defines $options -Dsun4 -Dsparc $f
		else
			as -P $defines $options -Dsun4 -Dsparc $f
		endif
		set objfiles = ($objfiles `basename $f .s`.o)

	else
		set objfiles = ($objfiles $f)
	endif
end
if ($nolink == 1) then
	exit 0;
endif
if ($#objfiles != 0) then
	echo "Linking:"
	if ($vbose) then
		echo ld \-r $options \-o $ofile.sol -L$MX_LIB $MX_LIB/crtso.o $objfiles $libs $MX_LIB/libc.a $MX_LIB/end.o
		echo sol2sun $ofile.sol $ofile.sun
		echo cv $ofile.sun $ofile $stksize
		echo rm $ofile.sol
	else
		ld \-r $options \-o $ofile.sol -L$MX_LIB $MX_LIB/crtso.o $objfiles $libs $MX_LIB/libc.a $MX_LIB/end.o
		sol2sun $ofile.sol $ofile.sun
		cv $ofile.sun $ofile $stksize
		if ($delete) then
			rm $ofile.sol $ofile.sun
		endif
	endif
endif
