#
# This file is used to compile the runtime library for SCHEME->C.
#
# Copyright (c) 1988 Digital Equipment Corporation.  All rights reserved.

# Defaults:

sccomp = ${CPUDIR}/../scsc/sccomp

Cruntime = scinit.o apply.o callcc.o cio.o heap.o objects.o signal.o

GGCCruntime = GGCscinit.o apply.o callcc.o cio.o GGCheap.o objects.o signal.o \
	      GGC.o

Cruntimeu = scinit.u apply.u callcc.u cio.u heap.u objects.u signal.u

Cruntimec = scinit.c apply.c callcc.c cio.c heap.c objects.c signal.c

Chfiles = scinit.h apply.h callcc.h cio.h heap.h objects.h signal.h

Sruntime = scdebug.o sceval.o scexpand.o scexpanders1.o scexpanders2.o \
	   scqquote.o screp.o \
	   scrt1.o scrt2.o scrt3.o scrt4.o scrt5.o scrt6.o scrt7.o

Sruntimeu = scdebug.u sceval.u scexpand.u scexpanders1.u scexpanders2.u \
	    scqquote.u screp.u \
	    scrt1.u scrt2.u scrt3.u scrt4.u scrt5.u scrt6.u scrt7.u

Sruntimec = scdebug.c sceval.c scexpand.c scexpanders1.c scexpanders2.c \
            scqquote.c screp.c \
            scrt1.c scrt2.c scrt3.c scrt4.c scrt5.c scrt6.c scrt7.c

Sruntimesc = scdebug.sc sceval.sc scexpand.sc scexpanders1.sc scexpanders2.sc \
            scqquote.sc screp.sc \
            scrt1.sc scrt2.sc scrt3.sc scrt4.sc scrt5.sc scrt6.sc scrt7.sc

Smisc = GGC.c GGC.h GGCprivate.h mips.s predef.sc repdef.sc sci.sc sci.c vax.s

${Sruntimec} sci.c:	${predef.sc} ${objects.h}

${Cruntime}:	${Chfiles}

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

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

.c.u:
	${CC} -j -D${cpu} -I. $*.c

.s.o:
	${CC} -c $*.s

sc-to-c:	${Sruntimec}

c-to-o:		${Sruntimec} ${Sruntime} ${Cruntime}

s-to-o:		${Aruntime}

Xlibsc.a:	${Sruntimec} ${Sruntime} ${Cruntime} ${Aruntime}
	rm -f Xlibsc.a
	ar q Xlibsc.a ${Cruntime} ${Sruntime} ${Aruntime}
	ranlib Xlibsc.a

Xsci:		${Sruntimec} ${Sruntime} ${Cruntime} ${Aruntime} \
		 sci.c sci.o
	${CC} -o Xsci ${CFLAGS} ${Sruntime} ${Cruntime} ${Aruntime} sci.o \
	      -lm

GGCi:		${Sruntimec} ${Sruntime} ${Aruntime} GGC.o sci.c sci.o
	make "CFLAGS = -DGGC ${CFLAGS}" GGCheap.o GGCscinit.o
	${CC} -o GGCi ${CFLAGS} ${Sruntime} ${GGCCruntime} ${Aruntime} sci.o \
	      -lXaw -lXt -lX11 -lm

Xmv:		Xsci Xlibsc.a
	mv Xsci sci
	mv Xlibsc.a libsc.a
	
port:
	make "CC = ${CC}" "CFLAGS = ${CFLAGS}" "sccomp = echo" \
	     Xlibsc.a Xsci Xmv ${Plib}

libsc_p.a:	libsc.a
	mkdir saveobj
	mv ${Sruntime} ${Cruntime} ${Aruntime} saveobj
	rm -f libsc_p.a
	make "CC = ${CC}" "CFLAGS = ${CFLAGS} -pg" ${Sruntime} ${Cruntime} \
	     ${Aruntime}
	ar q libsc_p.a ${Cruntime} ${Sruntime} ${Aruntime}
	ranlib libsc_p.a
	mv saveobj/* .
	rmdir saveobj

libsc.b:	${Sruntimec} ${Sruntimeu} ${Cruntimeu}
	rm -f libsc.b
	ar crs libsc.b ${Sruntimeu} ${Cruntimeu}

install-private:
	install -c -o `whoami` libsc.a ${destdir}/libsc.a
	ranlib ${destdir}/libsc.a
	-install -c -o `whoami` libsc_p.a ${destdir}/libsc_p.a
	-ranlib ${destdir}/libsc_p.a
	-mkdir ${destdir}/schemetoc
	install -c -o `whoami` objects.h ${destdir}/schemetoc/objects.h
	install -c -o `whoami` predef.sc ${destdir}/predef.sc
	install -c -o `whoami` sci ${destdir}/sci

install:
	-mkdir ${LIBDIR}/schemetoc
	install -c libsc.a ${LIBDIR}/schemetoc
	ranlib ${LIBDIR}/schemetoc/libsc.a
	-install -c libsc_p.a ${LIBDIR}/schemetoc
	-ranlib ${LIBDIR}/schemetoc/libsc_p.a
	install -c objects.h ${LIBDIR}/schemetoc
	install -c predef.sc ${LIBDIR}/schemetoc
	install -c -s sci ${BINDIR}

clean:
	rm -f ${Sruntime} ${Cruntime} ${Aruntime} sci.o *.CKP *.BAK core \
	      Xsci Xlibsc.a *.u

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

noprogs:
	rm -f sci libsc.a libsc_p.a

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

bindist:
	rdist -c README makefile makefile-tail predef.sc objects.h \
	      libsc.a ${Plib} sci ${destdir}

all:
	make "CC = ${CC}" "CFLAGS = ${CFLAGS}" Xlibsc.a Xsci Xmv ${Plib}

srclinks:
	for x in ${Cruntimec} ${Chfiles} ${Sruntimec} ${Sruntimesc} ${Smisc}; \
	    do ln -s ${SRCDIR}/$$x $$x;\
	done
	ln -s heap.c GGCheap.c
	ln -s scinit.c GGCscinit.c
