TARGET = m88k
SHELL = /bin/sh
CTLDIR = ../ctl
INTDIR = ../integer
FLTDIR = ../float
CMMUDIR = ../cmmu
INCDIR = ../include
SGS=n
OWN=peg
GRP=upg
BASE= ../..
BINDIR= /aspen/bin
M88KINC= $(BASE)/inc/m88k
COMINC= $(BASE)/inc/m88k

SIMHDRS = $(INCDIR)/sim.h
CMMUHDRS = $(INCDIR)/cmmu.h
BUGHDRS = $(INCDIR)/cmds.h $(INCDIR)/trans.h $(INCDIR)/defines.h
FLTHDRS = $(INCDIR)/float.h
FILEHDRS = $(COMINC)/aouthdr.h $(COMINC)/filehdr.h \
		$(COMINC)/scnhdr.h $(INCDIR)/exec.h

CC     = cc
OFLAG	= -O
#GFLAG =	-g
GFLAG =
SYSTYPE = -UBSD
CFLAGS = $(SYSTYPE) -DTARGET=$(TARGET) $(OFLAG) $(GFLAG) -I$(INCDIR) -I$(COMINC)
LINT=lint
LINTFLAGS=-I$(INCDIR) -I$(COMINC)

OBJECTS = $(CTLOBJS) $(SIMOBJS) $(FLTOBJS) $(CMMUOBJS)

CTLOBJS = \
$(CTLDIR)/main.o	$(CTLDIR)/mem.o		$(CTLDIR)/lo.o		\
$(CTLDIR)/rd.o		$(CTLDIR)/rm.o		$(CTLDIR)/go.o		\
$(CTLDIR)/br.o		$(CTLDIR)/map.o		$(CTLDIR)/sdsr.o	\
$(CTLDIR)/signals.o	$(CTLDIR)/interface.o	$(CTLDIR)/cmdstruct.o	\
$(CTLDIR)/mm.o		$(CTLDIR)/md.o		$(CTLDIR)/bf.o		\
$(CTLDIR)/bs.o		$(CTLDIR)/bm.o		$(CTLDIR)/dis.o		\
$(CTLDIR)/cmdparser.o	$(CTLDIR)/asm.o		$(CTLDIR)/asmcmdstr.o	\
$(CTLDIR)/dc.o		$(CTLDIR)/he.o		$(CTLDIR)/converters.o	\
$(CTLDIR)/run.o		$(CTLDIR)/symbols.o	$(CTLDIR)/sysface.o	\
$(CTLDIR)/id.o

SIMOBJS = \
$(INTDIR)/dpath.o	$(INTDIR)/pc.o		$(INTDIR)/simload.o 	\
$(INTDIR)/trap.o	$(INTDIR)/stats.o	$(INTDIR)/simtime.o	\
$(INTDIR)/sim_io.o	$(INTDIR)/more_io.o	$(INTDIR)/sim_printf.o	\
$(INTDIR)/ckiob.o	$(INTDIR)/sysV.o	$(INTDIR)/table.o	\
$(INTDIR)/classify.o	$(INTDIR)/instab.o	$(INTDIR)/ctlregs.o	\
$(INTDIR)/aspencache.o	$(INTDIR)/dmem.o

FLTOBJS = \
$(FLTDIR)/fadd.o	$(FLTDIR)/fpunimp.o	\
$(FLTDIR)/fdiv.o	$(FLTDIR)/divs.o	$(FLTDIR)/divd.o	\
$(FLTDIR)/fdivs.o	$(FLTDIR)/fdiv64.o	$(FLTDIR)/int.o		\
$(FLTDIR)/fcsi.o	$(FLTDIR)/fcdi.o	$(FLTDIR)/flt.o		\
$(FLTDIR)/fcid.o	$(FLTDIR)/fcis.o	$(FLTDIR)/fadds.o	\
$(FLTDIR)/fadd64.o	$(FLTDIR)/fmul.o	$(FLTDIR)/fmuls.o	\
$(FLTDIR)/fmul64.o	$(FLTDIR)/mults.o	$(FLTDIR)/multd.o	\
$(FLTDIR)/fsub.o	$(FLTDIR)/fcmp.o	$(FLTDIR)/fcmps.o	\
$(FLTDIR)/fcmp64.o	$(FLTDIR)/fcsd.o	$(FLTDIR)/fcds.o	\
$(FLTDIR)/updstat.o	$(FLTDIR)/reserves.o	$(FLTDIR)/aligns.o	\
$(FLTDIR)/adds.o	$(FLTDIR)/normalizes.o	$(FLTDIR)/rounds.o	\
$(FLTDIR)/returns.o	$(FLTDIR)/round.o	$(FLTDIR)/reserved.o	\
$(FLTDIR)/alignd.o	$(FLTDIR)/addd.o	$(FLTDIR)/normalized.o	\
$(FLTDIR)/roundd.o	$(FLTDIR)/returnd.o	$(FLTDIR)/floaterr.o

CMMUOBJS = \
$(CMMUDIR)/cmmu.o	$(CMMUDIR)/cmmu_atc.o	$(CMMUDIR)/cmmu_cache.o	\
$(CMMUDIR)/cmmu_func.o	$(CMMUDIR)/cmmu_init.o	$(CMMUDIR)/cmmu_debug.o	\
$(CMMUDIR)/cmmu_ctl.o	$(CMMUDIR)/opn_output.o

$(SGS)sim:	$(OBJECTS) vers.o
		$(CC) -o $@ $(OBJECTS) vers.o -lm

ctl:		$(CTLOBJS)

integer:	$(SIMOBJS)

float:		$(FLTOBJS)

cmmu:		$(CMMUOBJS)

vers.o:		$(OBJECTS)
		-rm -f vers.c
		$(SHELL) stamp
		$(CC) -c $(CFLAGS) vers.c

$(FLTDIR)/fadd.o	$(FLTDIR)/fsub.o	\
$(FLTDIR)/flt.o		$(FLTDIR)/int.o		\
$(FLTDIR)/fdiv.o	$(FLTDIR)/updstat.o	\
$(FLTDIR)/fcmp.o	$(FLTDIR)/fmul.o	\
$(FLTDIR)/fpunimp.o	$(FLTDIR)/floaterr.o	\
				: $(SIMHDRS) $(FLTHDRS) 

$(FLTDIR)/fadds.o	$(FLTDIR)/fadd64.o	\
$(FLTDIR)/fdiv64.o	$(FLTDIR)/fmuls.o	\
$(FLTDIR)/fmul64.o	$(FLTDIR)/fcsi.o	\
$(FLTDIR)/fcdi.o	$(FLTDIR)/fcid.o	\
$(FLTDIR)/mults.o	$(FLTDIR)/multd.o	\
$(FLTDIR)/divs.o	$(FLTDIR)/divd.o	\
$(FLTDIR)/fcds.o	$(FLTDIR)/fcis.o	\
$(FLTDIR)/fcsd.o	$(FLTDIR)/returns.o	\
$(FLTDIR)/returnd.o	$(FLTDIR)/round.o	\
$(FLTDIR)/rounds.o	$(FLTDIR)/roundd.o	\
$(FLTDIR)/normalizes.o	$(FLTDIR)/normalized.o	\
$(FLTDIR)/fcmps.o	$(FLTDIR)/fcmp64.o	\
$(FLTDIR)/adds.o	$(FLTDIR)/addd.o	\
$(FLTDIR)/aligns.o	$(FLTDIR)/alignd.o	\
$(FLTDIR)/reserves.o	$(FLTDIR)/reserved.o	\
$(FLTDIR)/fdivs.o		: $(FLTHDRS)

$(CMMUDIR)/cmmu.o	$(CMMUDIR)/cmmu_atc.o	\
$(CMMUDIR)/cmmu_debug.o	$(CMMUDIR)/cmmu_func.o	\
$(CMMUDIR)/cmmu_init.o	$(CMMUDIR)/cmmu_cache.o	\
$(CMMUDIR)/cmmu_ctl.o	$(CMMUDIR)/opn_output.o\
				: $(SIMHDRS) $(CMMUHDRS)

$(INTDIR)/dpath.o	$(INTDIR)/dmem.o	\
				: $(BUGHDRS) $(SIMHDRS) $(FLTHDRS) $(CMMUHDRS)

$(INTDIR)/sim_io.o		: $(BUGHDRS) $(SIMHDRS) $(INCDIR)/sim_io.h

$(INTDIR)/ckiob.o		: $(INCDIR)/targstdio.h

$(CTLDIR)/sdsr.o	$(CTLDIR)/mem.o		\
$(INTDIR)/pc.o		$(INTDIR)/sim_printf.o	\
$(INTDIR)/trap.o	$(INTDIR)/simtime.o	\
$(INTDIR)/classify.o	$(INTDIR)/simload.o	\
$(INTDIR)/stats.o	$(INTDIR)/table.o	\
$(INTDIR)/instab.o	$(INTDIR)/ctlregs.o	\
$(INTDIR)/aspencache.c		: $(SIMHDRS)	

$(CTLDIR)/cmdparser.o	$(CTLDIR)/converters.o	\
$(CTLDIR)/he.o		$(CTLDIR)/bf.o		\
$(CTLDIR)/bs.o		$(CTLDIR)/bm.o		\
$(CTLDIR)/dc.o		$(CTLDIR)/cmdstruct.o	\
				: $(BUGHDRS)

$(CTLDIR)/interface.o	$(CTLDIR)/rm.o		\
$(CTLDIR)/rd.o		$(CTLDIR)/go.o		\
$(CTLDIR)/main.o	$(INTDIR)/sysV.o	\
$(CTLDIR)/map.o		$(CTLDIR)/md.o		\
$(CTLDIR)/mm.o			: $(SIMHDRS) $(BUGHDRS)

$(CTLDIR)/dis.o			: $(BUGHDRS) $(SIMHDRS) $(INCDIR)/instab.h

$(CTLDIR)/asm.o			: $(BUGHDRS) $(INCDIR)/instab.h

$(CTLDIR)/symbols.o		: $(SIMHDRS) $(INCDIR)/symbols.h

$(CTLDIR)/run.o			: $(SIMHDRS) $(BUGHDRS) $(CMMUHDRS) \
					$(INCDIR)/symbols.h $(INCDIR)/br.h \
					$(INCDIR)/core88.h

$(CTLDIR)/br.o			: $(BUGHDRS) $(SIMHDRS) $(INCDIR)/br.h

$(CTLDIR)/asmcmdstr.o		: $(INCDIR)/instab.h

$(CTLDIR)/lo.o			: $(BUGHDRS) $(SIMHDRS) $(FILEHDRS)

.h~.h:
	$(GET) $(GFLAGS) -G$*.h $<

.c.o:
	cd $(*D);$(CC) -c $(CFLAGS) $(*F).c

.c~.o:
	$(GET) $(GFLAGS) -G$*.c $<
	cd $(*D);$(CC) -c $(CFLAGS)$(*F).c

lint:
	$(LINT) $(LINTFLAGS) $(CTLDIR)/*.c $(INTDIR)/*.c $(CMMUDIR)/*.c $(FLTDIR)/*.c > lint.out 2>&1 

cflow:
	/aspen/5bin/cflow -ix $(LINTFLAGS) $(CTLDIR)/*.c $(INTDIR)/*.c $(CMMUDIR)/*.c $(FLTDIR)/*.c > cflow.out 2>&1 
	/aspen/5bin/cflow -ix -r $(LINTFLAGS) $(CTLDIR)/*.c $(INTDIR)/*.c $(CMMUDIR)/*.c $(FLTDIR)/*.c > cflow.out1 2>&1 

dbx:
	dbxtool -I$(CTLDIR) -I$(INTDIR) -I$(FLTDIR) -I$(CMMUDIR) -I$(INCDIR) $(SGS)sim &

install :	$(BINDIR)/$(SGS)sim

$(BINDIR)/$(SGS)sim:	$(SGS)sim
			sh $(BASE)/sgs.install 775 $(OWN) $(GRP) $@ $?

shrink:		clean

clean :
		rm -f $(OBJECTS) ../*/core ../*/nohup.out ../*/*~

clobber:	clean
		rm -f $(SGS)sim 
