#
#  Build the SCHEME->C compiler using an existing Scheme->C compiler
#  designated by "sccomp".
#
#  Copyright (c) 1988 Digital Equipment Corporation.  All rights reserved.

rt = ../scrt/libsc.a
sccomp = ${CPUDIR}/sccomp

scsc = main.sc closeana.sc lambdaexp.sc plist.sc transform.sc expform.sc \
      readtext.sc miscexp.sc macros.sc compile.sc lap.sc gencode.sc \
      callcode.sc lambdacode.sc misccode.sc

scc = main.c closeana.c lambdaexp.c plist.c transform.c expform.c \
      readtext.c miscexp.c macros.c compile.c lap.c gencode.c \
      callcode.c lambdacode.c misccode.c

sco = main.o closeana.o lambdaexp.o plist.o transform.o expform.o \
      readtext.o miscexp.o macros.o compile.o lap.o gencode.o \
      callcode.o lambdacode.o misccode.o

scsch = expform.sch gencode.sch lambdaexp.sch lap.sch miscexp.sch plist.sch

.SUFFIXES:
.SUFFIXES:	.o .sc .c

.sc.c:
	cd ${SRCDIR}; ${sccomp} -schf ${sccomp}.heap -sch ${scheapmb} -C $*.sc

.c.o:
	${CC} -c ${CFLAGS} -D${cpu} -I../scrt $*.c

${scc}:	${predef}

sc-to-c:	${scc}

Xsccomp:	${scc} ${sco} ${rt}
	${CC} -o Xsccomp ${CFLAGS} ${sco} ${rt} -lm
	
Xsccomp.heap:	Xsccomp
	Xsccomp ../scrt/predef.sc ../scrt/objects.h ../scrt/libsc.a \
	        ../scrt/libsc_p.a ${cpu} Xsccomp.heap

Xmv:
	mv Xsccomp sccomp
	mv Xsccomp.heap sccomp.heap

port:
	make "CC = ${CC}" "CFLAGS = ${CFLAGS}" "sccomp = echo" \
	     Xsccomp.heap Xmv

install-private:
	install -c -o `whoami` sccomp ${destdir}
	cd ${destdir};
	   sccomp -sch ${scheapmb} ${destdir}/predef.sc \
		  ${destdir}/schemetoc/objects.h \
		  ${destdir}/libsc.a ${destdir}/libsc_p.a ${cpu} \
		  ${destdir}/sccomp.heap; \
	   echo '#! /bin/csh -f' > ${destdir}/scc; \
	   echo '${destdir}/sccomp -schf ${destdir}/sccomp.heap' \
	        '$$argv' >> ${destdir}/scc; \
           chmod +x ${destdir}/scc

install:
	echo "#! /bin/csh -f" > ${BINDIR}/scc
	echo '${BINDIR}/sccomp -schf ${LIBDIR}/schemetoc/sccomp.heap' \
			       '$$argv'  >> ${BINDIR}/scc
	chmod +x ${BINDIR}/scc	
	install -c -s sccomp ${BINDIR}
	${BINDIR}/sccomp \
		-sch ${scheapmb} \
		${LIBDIR}/schemetoc/predef.sc \
	        ${LIBDIR}/schemetoc/objects.h \
		${LIBDIR}/schemetoc/libsc.a \
		${LIBDIR}/schemetoc/libsc_p.a \
		${cpu} \
		${LIBDIR}/schemetoc/sccomp.heap
	chmod +r ${LIBDIR}/schemetoc/sccomp.heap
	chmod -x ${LIBDIR}/schemetoc/sccomp.heap

clean:
	rm -f ${sco} *.BAK *.CKP scltext.* Xsccomp Xsccomp.heap

clean-sc-to-c:
	rm -f ${scc}

noprogs:
	rm -f sccomp sccomp.heap

srcdist:
	rdist -c README *.c *.sc *.sch makefile-tail ${destdir}

bindist:
	rdist -c sccomp makefile-tail makefile ${destdir}

all:
	make Xsccomp.heap Xmv

srclinks:
	for x in ${scsc} ${scc} ${scsch}; \
	    do ln -s ${SRCDIR}/$$x $$x;\
	done
