SHELL=/bin/sh
SRC_ROOT=..

PRODUCED=comp pcomp expgen expdiff version input.index pass.index

PDIR=/u0/pascal
SHDIR=/u0/pascal/shared

AUTHDIR=/u0/vsecure
AUTHORIZE=auth.o $(AUTHDIR)/authorize.o
SCRAMBLE=$(AUTHDIR)/scramble

PLATFORM=-DPC_AT

ETDIR=/u0/scald/linker
MY_ETDIR=/u0/bh/et/lib

INSTALLED_ETLIBS=${ETDIR}/libetxface.a \
                 ${ETDIR}/libetparser.a \
                 ${ETDIR}/libet.a
MY_ETLIBS=${MY_ETDIR}/libetxface.a \
          ${MY_ETDIR}/libetparser.a \
          ${MY_ETDIR}/libet.a
DEBUG_ETLIBS=${MY_ETDIR}/libetxfaced.a \
             ${MY_ETDIR}/libetparserd.a \
             ${MY_ETDIR}/libetd.a
ETLIBS=$(MY_ETLIBS)

ADD=$(SRC_ROOT)/add/libadd.a

.SUFFIXES: .o .s .c .obj .pas
.pas.obj:
	${PDIR}/pascal $*.pas +d
	${PDIR}/ncode $*.i
.obj.o:
	$(PDIR)/jlinker $*
.c.o:
	cc -c -O ${PLATFORM} -I${SRC_ROOT} $*.c
.s.o:
	as $*.s

SHARED_OBJ=vopen.obj unixtime.obj
SHARED_O=$(SHDIR)/vopen.o $(SHDIR)/unixtime.o
MRN=mrn.o mungwrap.o
ERULE=\
../expansion/liberule_pas.a \
../expansion/liberule_pas.a \
../Clib/libbh.a \
../c++lib/libC.a \
$(MY_ETDIR)/libet.a

PLIB=/usr/lib/libp.a
OFILES=$(SHARED_O) misc.o handlerw.o complib.o \
	${SHDIR}/wraplib.o ${SHDIR}/cwrap.o \
	${SHDIR}/mon.o

all: $(PRODUCED)

clean:
	rm -f *.obj *.o *.i *junk junk* .emacs* core

pcomp:  pcomp.nl $(AUTHORIZE)
	cc -o pcomp pcomp.o __ctdt.o fio.o remote.o filenames.o $(ERULE) $(OFILES) $(ADD) $(AUTHORIZE) $(PLIB)
	$(SCRAMBLE) pcomp
pcomp.nl:  $(SHARED_OBJ) pcomp.obj pcomp.o $(OFILES) __ctdt.o fio.o unsafe.o remote.o filenames.o \
$(ERULE) $(ADD) $(PLIB)
	cc -o pcomp.nl pcomp.o __ctdt.o fio.o remote.o filenames.o $(OFILES) \
$(ERULE) unsafe.o $(ADD) $(PLIB)

expgen: $(SHARED_OBJ) expgen.obj expgen.o $(OFILES) $(PLIB) $(ETLIBS)
	cc -o expgen expgen.o $(ETLIBS) $(OFILES) $(PLIB)
expdiff:  $(SHARED_OBJ) expdiff.obj expdiff.o fio.o $(OFILES) $(PLIB)
	cc -o expdiff expdiff.o fio.o $(OFILES) $(PLIB)
version:	version.obj version.o $(OFILES)
	cc -o version version.o $(OFILES) $(PLIB)

comp:   comp.nl $(AUTHORIZE)
	cc -o comp comp.o fio.o readdir.o $(MRN) $(OFILES) $(AUTHORIZE) $(PLIB)
	$(SCRAMBLE) comp
comp.nl:  $(SHARED_OBJ) comp.obj comp.o readdir.o $(OFILES) $(MRN) unsafe.o fio.o $(PLIB)
	cc -o comp.nl comp.o fio.o readdir.o $(MRN) $(OFILES) unsafe.o $(PLIB)

pcomp.obj expgen.obj comp.obj expdiff.obj: vopen.obj unixtime.obj
vopen.obj: $(SHDIR)/vopen.obj
	cp $(SHDIR)/vopen.obj .
unixtime.obj: $(SHDIR)/unixtime.obj
	cp $(SHDIR)/unixtime.obj .

input.index: scaldkit version
	echo "\"compiler\"new: \"`version`\"" > input.index
	echo { >> input.index
	echo "(primary_file)" >> input.index
	sed -f mkindex.sed scaldkit >>input.index
	echo } >> input.index

pass.index: version
	echo "\"compiler\":\"`version`\"" > pass.index
	echo { >> pass.index
	echo '"scaldcompiler""comp"' >>pass.index
	echo '"pagecompiler""pcomp"' >>pass.index
	echo } >> pass.index
kit:
	@echo "I hope you're root"
	sh install.sh ..
	cp input.index ..
	(cd ../u0/scald/compiler ; strip *)
	(cd .. ; mkindex)
	@echo Making the vinstall kit -- be ready with floppies
	(cd .. ; mkinstall)
	@echo "To make password floppy, format a floppy and then"
	@echo "type cpio -ocvB >/dev/rflpa"
	@echo "     pcomp"
	@echo "     comp"
	@echo "     ^d"

filenames.o: filenames.c
fio.o: fio.c
misc.o: misc.c
mrn.o: mrn.c
auth.o: auth.c
mungwrap.o: mungwrap.c
remote.o: remote.c
unsafe.o: unsafe.c
handlerw.o: handlerw.s
complib.o: complib.s
