#! /bin/csh
#  Modula-2 compilation driver (68000)
#set echo=1
set deleteas=1
set deletemcd=1
set preserve=0
set symverify=''
set version=''
set list=''
set defopt=''
set cg=1
set defflag=0
set link=0
set opt=''
set oldm2path=$M2PATH
# the locations of the standard compiler passes
set p1="/usr/groups/m2/m2/sun3_sos/bin/m2m"
set p2="/usr/groups/m2/m2/sun3_sos/bin/m268kcg"

# look for options
while ("$1" =~ -[A-Z,a-z]*)
    switch ($1)
    case -c:
	set cg=0
	breaksw
    case -d:
        set defopt='-d'
	set defflag=1
	breaksw
    case -k:
	set preserve=1
	breaksw
    case -l:
        set list='-l'
	breaksw
    case -v:
	set version='-v'
	breaksw
    case -V:
	set symverify='-V'
	breaksw
    case -S:
        set deleteas=0
	set opt='-S'
	breaksw
    case -M:
	set deletemcd=0
	breaksw
    case -E:
	source m2path
	breaksw
    case -L:
	set link=1
	breaksw

    default:
    endsw
# move onto next argument
    shift
end

foreach m ($argv)
set ext=$m:e
set tail=$m:t
set module=$tail:r

# If preserving the compilation key in a symbol file, 
# find out its current value.
#if ((($ext == "def") || ($defopt == "-d")) && ($preserve == 1)) then
#	echo module is $module from $tail
#    set key=`m2touch $module`
#endif

if ($defflag == 0) then
$p1 $symverify $list $version $defopt $m
set rc=$status
else
$p1 -d $m
set rc=$status
endif

# Update the compilation key if required
#if (($rc == 0) && (($ext == "def") || ($defopt == '-d')) && ($preserve == 1)) then
#    echo here we are
#    m2touch -U$key $module
#endif

if (($rc == 0) && ($cg == 1)) then
# unless only a definition module
if (($ext != def) && ($defflag == 0)) then
    $p2 $opt $version $module
    set rc=$status

#   if -L is set, run linker
    if ($link == 1) then
	m2l68k $version $module
	set rc=$status
    endif
endif
endif
# delete MCode file unless otherwise requested
if ($deletemcd == 1) then
    rm -f $module.mcd
endif
end
setenv M2PATH $oldm2path
exit($rc)
