#
#	This is the Makefile for the p-code to VAX assembly translator
#

$INCLUDE "../Metafile.defines"

.SUFFIXES:
.SUFFIXES: .o .mod .def .c

vms = FALSE

CFLAGS = -O
MODFLAGS = -a -g -O -Dvms=$(vms) -B../lib
MOD = ../mod/mod

.def.mod:
	touch $*.mod
.mod.o:
	$(MOD) -c $(MODFLAGS) $*.mod

all: mod2.1 descrip.mms

OBJS =	CodeSubs.o Consts.o EES.o Error.o Input.o Machine.o \
	MemRef.o OpSubs.o Types.o Output.o Util.o Vars.o Xlate.o \
	PCodeOps.o Hash.o machinec.o

xlate:	$(OBJS)
	$(MOD) -o xlate $(MODFLAGS) -m"$(MODFLAGS)" $(OBJS)

mod2.1:	$(OBJS)
	$(MOD) -o mod2.1 $(MODFLAGS) -m"$(MODFLAGS)" $(OBJS)

testr:	$(OBJS)
	$(MOD) -c $(MODFLAGS) -m"$(MODFLAGS)" $(OBJS)

# hash table function generation
makehash:makehash.o PCodeOps.def PCodeOps.mod PCodeOps.o
	$(MOD) -o makehash $(MODFLAGS) -m"$(MODFLAGS)" PCodeOps.o makehash.o
Input.mod:	Hash.def
Hash.def:	PCodeOps.def PCodeOps.mod makehash
	./makehash
Hash.mod:	PCodeOps.def PCodeOps.mod

# inline dependencies
CodeSubs.o:	Output.o Util.o
EES.o:		Output.o
MemRef.o:	Output.o Util.o
OpSubs.o:	Output.o Util.o


Makefile: Metafile ../Metafile.defines
	mv Makefile Makefile.bak
	../prep/prep -Dvax=$(VAX) -Dmips=$(MIPS) <Metafile > Makefile

quickinstall: ${DESTDIR}$(PASSESDIR)
	install -c -s mod2.1 ${DESTDIR}$(PASSESDIR)/mod2.1

install: ${DESTDIR}$(PASSESDIR) ${DESTDIR}$(PASSESDIR)/mod2.1

${DESTDIR}$(PASSESDIR):
	-test -d $@ || $(MKDIR) $@

${DESTDIR}$(PASSESDIR)/mod2.1:	mod2.1
	install -c -s mod2.1 ${DESTDIR}$(PASSESDIR)/mod2.1

clean:
	-$(RM) *.o xlate makehash

descrip.mms: Metafile
	@echo Update descrip.mms to match Metafile

vmscopy:
	dcp -v [A-Z]*.def [A-Z]*.mod makehash.mod machinec.c descrip.mms \
	$(REMOTEDIR)

checkin:
	ci -l -f -m"Checkin before VMS changes" \
	-s"Experimental" \
	[A-Z]*.def [A-Z]*.mod makehash.mod machinec.c Makefile descrip.mms
