#!/bin/sh
# Usage: BIN/SCHEME_COMP compiler-name filename

COMP_gambit=gsc
EXT_gambit=.O
COMP_mit=scheme
EXT_mit=.com
COMP_t=t
EXT_t=.mo

TOUCH=touch

case X$1 in
 Xgen) NAME=$HOST_SYSTEM-gen;;
 Xfix) NAME=$HOST_SYSTEM-fix;;
    *) NAME=$1;;
esac

case $NAME in

#------------------------------------------------------------------------------

# Gambit compiler

gambit-gen)

mv $2.scm $2_.scm
cp BIN/SCHEME_COMP_STUFF/$NAME.scm $2.scm
cat $2_.scm >> $2.scm
$COMP_gambit $2 -- -h12500 -s100
mv $2$EXT_gambit GSC/gambit
rm -f $2.*
mv $2_.scm $2.scm
$TOUCH $2.GEN

;;

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

gambit-fix)

mv $2.scm $2_.scm
cp BIN/SCHEME_COMP_STUFF/$NAME.scm $2.scm
cat $2_.scm >> $2.scm
$COMP_gambit $2 -- -h12500 -s100
mv $2$EXT_gambit GSC/gambit
rm -f $2.*
mv $2_.scm $2.scm
$TOUCH $2.FIX

;;

#------------------------------------------------------------------------------

# MIT Scheme compiler

mit-gen)

mv $2.scm $2_.scm
cp BIN/SCHEME_COMP_STUFF/$NAME.scm $2.scm
cat $2_.scm >> $2.scm
$COMP_mit -stack 50 -heap 1500 -compiler << eof
(cf "$2.scm")(%EXIT)
eof
mv $2$EXT_mit GSC/mit
rm -f $2.*
mv $2_.scm $2.scm
$TOUCH $2.GEN

;;

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

mit-fix)

mv $2.scm $2_.scm
cp BIN/SCHEME_COMP_STUFF/$NAME.scm $2.scm
cat $2_.scm >> $2.scm
$COMP_mit -stack 50 -heap 1500 -compiler << eof
(cf "$2.scm")
(%EXIT)
eof
mv $2$EXT_mit GSC/mit
rm -f $2.*
mv $2_.scm $2.scm
$TOUCH $2.FIX

;;

#------------------------------------------------------------------------------

# Orbit compiler

t-gen)

mv $2.scm $2_.scm
cp BIN/SCHEME_COMP_STUFF/$NAME.scm $2.scm
cat $2_.scm >> $2.scm
$COMP_t -h 7000000 << eof
(scheme-reset)(compile-file "$2.scm")(exit)
eof
mv $2$EXT_t GSC/t
rm -f $2.*
mv $2_.scm $2.scm
$TOUCH $2.GEN

;;

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

t-fix)

mv $2.scm $2_.scm
cp BIN/SCHEME_COMP_STUFF/$NAME.scm $2.scm
cat $2_.scm >> $2.scm
$COMP_t -h 7000000 << eof
(scheme-reset)(compile-file "$2.scm")(exit)
eof
mv $2$EXT_t GSC/t
rm -f $2.*
mv $2_.scm $2.scm
$TOUCH $2.FIX

;;

#------------------------------------------------------------------------------

esac
