
#
# %M%: version %I% of %H%
#
# makefile for the 'glue' of AIS/3200 proms
#

#turn on inclusion of autoprint and execute on break in the monitor
AUTOP	=
#turn on inclusion of module table code in dissasmbler
MODTAB	=
#turn on mmu breakpointing
MMUBRK	=
#turn on debugging for unrequested information
DEBUG1	= 
#turn on debugging for symbol manipulation
DEBUG2	=
#turn on debugging for unlikely events
DEBUG3	= -DDEBUG3

INC5	= ../INC5
MINC	= ${AUTOP} ${MONJSR} ${MMUBRK}
SINC	= ${MONJSR} ${MMUBRK} ${DEBUG1} ${DEBUG2} ${DEBUG3} -I$(INC5)
CINC	= ${MINC} ${DEBUG1} ${DEBUG2} ${DEBUG3} -I$(INC5)

PFX	= n

CF	= -O
CFLAGS	= ${CINC} ${CF}
LDFLAGS = -N

CC	= ${PFX}cc
CPP	= /lib/${PFX}cpp
AS	= ${PFX}as
LD	= ${PFX}ld
AR	= ${PFX}ar
NM	= ${PFX}nm
STRIP	= ${PFX}strip
XSTR	= /usr/ucb/xstr
ABSMON	= $(INC5)/RAMmonaddr.m
ABSLINK	= $(INC5)/RAMmonsize.m

3200HEADERS = \
	$(INC5)/3200addr.2a.h $(INC5)/3200conf.2a.h $(INC5)/3200info.2a.h \
	$(INC5)/3200uart.2a.h $(INC5)/3200vctr.2a.h \
	$(INC5)/32032.h $(INC5)/3200icu.h $(INC5)/3200mmu.h

HEADERS = \
	$(INC5)/ais.h $(INC5)/ascii.h $(INC5)/cflags.h $(INC5)/memmap.h \
	$(INC5)/mondef.h $(INC5)/monitor.h \
	$(INC5)/promhdr.h $(INC5)/monflags.h $(INC5)/vctype.h \
	$(INC5)/vmdispatch.h

CFILES	= \
	dummyvios.c 

CRT0 = \
	promcrt0.s romtrap.s

.PRECIOUS: glue.a

.SUFFIXES: .o .c .s .S .L

all: glue.a objects $(ABSMON) $(ABSLINK)

glue.a:	\
	glue.a(promcrt.o) \
	glue.a(prominit.o) \
	glue.a(ramtrap.o) \
	glue.a(montrap.o) \
	glue.a(ramstart.o)

objects: \
	ramsize.o \
	dummyvios.o \
	dummydiag.o \
	dummyrtc.o
	

ramsize.o:  $(HEADERS) $(3200HEADERS) ramsize.c
	$(CPP) ${CINC} ramsize.c > Xramsize.c
	$(CC) -S ${CF} Xramsize.c 
	sed -f $(INC5)/abs.sed Xramsize.s | $(CPP) -P > XXramsize.s
	$(AS) -o ramsize.o XXramsize.s
	-rm -f Xramsize.c Xramsize.s XXramsize.s

dummyvios.o: dummyvios.c
	${CC} -c ${CFLAGS} dummyvios.c

$(ABSMON): $(HEADERS) $(3200HEADERS) monaddr.c
	$(CPP) ${CINC} monaddr.c > Xmonaddr.c
	$(CC) -S ${CF} Xmonaddr.c
	sed -f $(INC5)/abs.sed Xmonaddr.s > $(ABSMON)
	-rm -f Xmonaddr.c Xmonaddr.s

$(ABSLINK): $(HEADERS) $(3200HEADERS) monsize.c
	$(CPP) ${CINC} monsize.c > Xmonsize.c
	$(CC) -S ${CF} Xmonsize.c
	sed -f $(INC5)/abs.sed Xmonsize.s > $(ABSLINK)
	-rm -f Xmonsize.c Xmonsize.s

promcrt.s: ${3200HEADERS} ${HEADERS} $(ABSMON) ${CRT0} 
	cat ${CRT0} > promcrt.s

.c.a:
	${CC} -c ${CINC} ${CF} $*.c
	$(AR) rvl glue.a $*.o 
	-rm -f $*.o

# imm.sed:
# s/SQ:\(.\)/\$\'\1\'/g
# sed -e "s/\\$$//g" -e "s/SQ:/\$'/g"> X$*.s
.s.a:
	${CPP} -P $(SINC) $*.s | sed -f $(INC5)/imm.sed > X$*.s
	$(AS) -o $*.o X$*.s
	$(AR) rvl glue.a $*.o
	-rm -f $*.o X$*.s

.c.L:
	${CC} $(CINC) -S ${CF} $*.c
	mv $*.s $*.L
	-rm -f $*.c

glue.a(promcrt.o): promcrt.s
glue.a(prominit.o): ${3200HEADERS} ${HEADERS} $(ABSMON) prominit.s 
glue.a(ramtrap.o): ${3200HEADERS} ${HEADERS} $(ABSMON) ramtrap.s
glue.a(montrap.o): ${3200HEADERS} ${HEADERS} $(ABSMON) montrap.s
glue.a(ramstart.o): ${3200HEADERS} ${HEADERS} $(ABSMON) ramstart.s


