#
# This file is used to make the Scheme->C system for multiple processor types.
#

SRCDIR = /wrl/Gen/src/schemetoc

MIPSDIR = /wrl/pmax/src/schemetoc
MIPSBIN = /wrl/pmax/bin
MIPSLIB = /wrl/pmax/lib

TITANDIR = /wrl/titan/src/schemetoc
TITANBIN = /wrl/titan/bin
TITANLIB = /wrl/titan/lib

VAXDIR = /wrl/vax/src/schemetoc
VAXBIN = /wrl/vax/bin
VAXLIB = /wrl/vax/lib


# Architecture specific directories and links to the source files are
# constructed by the following commands which follow:

forCPU:
	-mkdir ${CPUDIR}
	cp ${CPU} ${CPUDIR}
	echo "BINDIR = ${BINDIR}"  > ${CPUDIR}/makefile
	echo "LIBDIR = ${LIBDIR}" >> ${CPUDIR}/makefile
	cat makefile         	  >> ${CPUDIR}/makefile
	@-echo
	@-echo '***** /doc *****'
	-mkdir ${CPUDIR}/doc
	echo "SRCDIR = ${SRCDIR}/doc"  > ${CPUDIR}/doc/makefile
	cat doc/makefile	      >> ${CPUDIR}/doc/makefile
	-cd ${CPUDIR}/doc; make srclinks
	@-echo
	@-echo '***** /scrt *****'
	-mkdir ${CPUDIR}/scrt
	cat ${CPU} 			> ${CPUDIR}/scrt/makefile
	echo "SRCDIR = ${SRCDIR}/scrt" >> ${CPUDIR}/scrt/makefile 
	echo "CPUDIR = ${CPUDIR}/scrt" >> ${CPUDIR}/scrt/makefile
	echo "BINDIR = ${BINDIR}"      >> ${CPUDIR}/scrt/makefile
	echo "LIBDIR = ${LIBDIR}"      >> ${CPUDIR}/scrt/makefile
	cat scrt/makefile-tail         >> ${CPUDIR}/scrt/makefile
	-cd ${CPUDIR}/scrt; make srclinks
	@-echo
	@-echo '***** /scsc *****'
	-mkdir ${CPUDIR}/scsc
	cat ${CPU} 			> ${CPUDIR}/scsc/makefile
	echo "SRCDIR = ${SRCDIR}/scsc" >> ${CPUDIR}/scsc/makefile 
	echo "CPUDIR = ${CPUDIR}/scsc" >> ${CPUDIR}/scsc/makefile
	echo "BINDIR = ${BINDIR}"      >> ${CPUDIR}/scsc/makefile
	echo "LIBDIR = ${LIBDIR}"      >> ${CPUDIR}/scsc/makefile
	cat scsc/makefile-tail         >> ${CPUDIR}/scsc/makefile
	-cd ${CPUDIR}/scsc; make srclinks
	@-echo
	@-echo '***** /test *****'
	-mkdir ${CPUDIR}/test
	cat ${CPU} 			> ${CPUDIR}/test/makefile
	echo "SRCDIR = ${SRCDIR}/test" >> ${CPUDIR}/test/makefile 
	echo "CPUDIR = ${CPUDIR}/test" >> ${CPUDIR}/test/makefile
	echo "BINDIR = ${BINDIR}"      >> ${CPUDIR}/test/makefile
	echo "LIBDIR = ${LIBDIR}"      >> ${CPUDIR}/test/makefile
	cat test/makefile-tail         >> ${CPUDIR}/test/makefile
	-cd ${CPUDIR}/test; make srclinks

forMIPS:
	make "CPU = MIPS" "CPUDIR = ${MIPSDIR}" \
	     "BINDIR = ${MIPSBIN}" "LIBDIR = ${MIPSLIB}" forCPU

forTITAN:
	make "CPU = TITAN" "CPUDIR = ${TITANDIR}" \
	     "BINDIR = ${TITANBIN}" "LIBDIR = ${TITANLIB}" forCPU

forVAX:
	make "CPU = VAX" "CPUDIR = ${VAXDIR}" \
	     "BINDIR = ${VAXBIN}" "LIBDIR = ${VAXLIB}" forCPU

# The Scheme->C system is initially compiled from the C sources by the
# following:

port:
	cd scrt; make port
	cd scsc; make port

# A "private" working copy of the current compiler, libary, and interpreter
# is installed in a directory by the following command:

install-private:
	cd scrt; make "destdir = ${destdir}" install-private
	cd scsc; make "destdir = ${destdir}" install-private

# Clean out working files.

clean:
	rm -f *.BAK *.CKP SC-TO-C*
	cd doc; make clean
	cd scrt; make clean
	cd scsc; make clean
	cd test; make clean

# Clean up C source files generated from Scheme source.

clean-sc-to-c:
	cd scrt; make clean-sc-to-c
	cd scsc; make clean-sc-to-c
	cd test; make clean-sc-to-c

# Delete programs and libraries.

noprogs:
	cd scrt; make noprogs
	cd scsc; make noprogs
	cd test; make noprogs

# All binaries and documentation files are installed by the following command
# for access by all users.

install:
	cd doc; make "BINDIR = ${BINDIR}" "LIBDIR = ${LIBDIR}" install
	cd scrt; make "BINDIR = ${BINDIR}" "LIBDIR = ${LIBDIR}" install
	cd scsc; make "BINDIR = ${BINDIR}" "LIBDIR = ${LIBDIR}" install

# All files which must be constructed are made by the following command:

all:
	cd scrt; make all
	cd scsc; make all

# Distribute "source" files required to make the Scheme->C system.

srcdist:
	rdist -c MIPS README TITAN VAX makefile ${destdir}
	cd doc; make "destdir = ${destdir}/doc" srcdist
	-cd scbenchmark; make "destdir = ${destdir}/scbenchmark" srcdist
	cd scrt; make "destdir = ${destdir}/scrt" srcdist
	cd scsc; make "destdir = ${destdir}/scsc" srcdist
	-cd test; make "destdir = ${destdir}/test" srcdist
	-cd tools; make "destdir = ${destdir}/tools" srcdist

# Distribute "binary" files so that they may be installed on some other
# system.

bindist:
	rdist -c MIPS README TITAN VAX makefile ${destdir}
	cd doc; make "destdir = ${destdir}/doc" bindist
	cd scrt; make "destdir = ${destdir}/scrt" bindist
	cd scsc; make "destdir = ${destdir}/scsc" bindist

# Write the tar tape for distribution.

TARFILES = CHANGES MIPS README VAX makefile \
	   doc/[a-z]*.mss doc/[a-z]*.psf doc/[a-z]*.l doc/makefile \
	   gnuemacs/README gnuemacs/[a-z]* \
	   scrt/[a-z]*.sc scrt/[a-z]*.[chs] scrt/makefile-tail \
	   scsc/[a-z]*.sc scsc/[a-z]*.c scsc/[a-z]*.sch scsc/makefile-tail \
	   test/[a-z]*.sc test/test54c.c test/makefile-tail \
	   cdecl/README cdecl/[a-z]* \
	   xlib/README xlib/[X-z]*

TARFLAGS = -cl

tartape:
	tar ${TARFLAGS} ${TARFILES}

tarlog:
	tar tvf ${TARTAPE} > ${TARLOG}
