#
#	Makefile for IEEE and 68881 versions of f77pass1
#


.SUFFIXES: .no .mo .do .go .c .y

.c.mo:; cc -c ${MCFLAGS} $*.c ; mv $*.o $@
.c.do:; cc -c ${DECFLAGS} $*.c ; mv $*.o $@
.c.no:; cc -c ${CFLAGS} $*.c ; mv $*.o $@
.c.go:; cc -c ${GFLAGS} $*.c ; mv $*.o $@

INCLUDE	= ../../include

CFLAGS       = -O -UDEC -DIEEE -DSDB -DYYDEBUG -DHERE=VAX -DTARGET=VAX \
		-DFAMILY=PCC -DUCBVAXASM -DUCBPASS2 -I${INCLUDE}

MCFLAGS      = -O -DMC68881 -UDEC -DIEEE -DSDB -DYYDEBUG -DHERE=VAX \
		-DTARGET=VAX -DFAMILY=PCC -DUCBVAXASM -DUCBPASS2 -I${INCLUDE}

DECFLAGS     = -O -fD -DDEC -UIEEE -DSDB -DYYDEBUG -DHERE=VAX -DTARGET=VAX \
		-DFAMILY=PCC -DUCBVAXASM -DUCBPASS2 -I${INCLUDE}

GFLAGS       = -g -DMC68881 -UDEC -DIEEE -DSDB -DYYDEBUG -DHERE=VAX \
		-DTARGET=VAX -DFAMILY=PCC -DUCBVAXASM -DUCBPASS2 -I${INCLUDE}

DEST	      = $(DESTDIR)/usr/lib

EXTHDRS	      = ${INCLUDE}/defines.h \
		${INCLUDE}/machdefs.h \
		/usr/include/a.out.h \
		/usr/include/ctype.h \
		/usr/include/signal.h \
		/usr/include/stdio.h \
		/usr/include/sys/file.h \
		/usr/include/sys/types.h

HDRS	      = conv.h \
		data.h \
		defs.h \
		fio.h \
		ftypes.h \
		io.h \
		optim.h \
		pccdefs.h \
		tokdefs.h

LDFLAGS       = 

DECLDFLAGS    = -fD

GLDFLAGS      = -g

DECLIBS	      =

LINKER	      = cc

LIBS	      = 

MAKEFILE      = Makefile

DECOBJS	      = bb.do \
		conv.do \
		data.do \
		equiv.do \
		error.do \
		exec.do \
		expr.do \
		gram.do \
		init.do \
		intr.do \
		io.do \
		lex.do \
		main.do \
		misc.do \
		optcse.do \
		optim.do \
		optloop.do \
		proc.do \
		put.do \
		putpcc.do \
		regalloc.do \
		stab.do \
		vax.do \
		vaxx.do

GOBJS	      = bb.go \
		conv.go \
		data.go \
		equiv.go \
		error.go \
		exec.go \
		expr.go \
		gram.go \
		init.go \
		intr.go \
		io.go \
		lex.go \
		main.go \
		misc.go \
		optcse.go \
		optim.go \
		optloop.go \
		proc.go \
		put.go \
		putpcc.go \
		regalloc.go \
		stab.go \
		vax.go \
		vaxx.go

MOBJS	     = 	bb.mo \
		conv.mo \
		data.mo \
		equiv.mo \
		error.mo \
		exec.mo \
		expr.mo \
		gram.mo \
		init.mo \
		intr.mo \
		io.mo \
		lex.mo \
		main.mo \
		misc.mo \
		optcse.mo \
		optim.mo \
		optloop.mo \
		proc.mo \
		put.mo \
		putpcc.mo \
		regalloc.mo \
		stab.mo \
		vax.mo \
		vaxx.mo

OBJS	     = 	bb.no \
		conv.no \
		data.no \
		equiv.no \
		error.no \
		exec.no \
		expr.no \
		gram.no \
		init.no \
		intr.no \
		io.no \
		lex.no \
		main.no \
		misc.no \
		optcse.no \
		optim.no \
		optloop.no \
		proc.no \
		put.no \
		putpcc.no \
		regalloc.no \
		stab.no \
		vax.no \
		vaxx.no

PRINT	      = pr

PROGRAM       = m2f77pass1
MPROGRAM      = mf77pass1
DECPROGRAM    = decf77pass1

PROPROGRAM    = prof77pass1
GPROGRAM      = gf77pass1

SRCS	      = bb.c \
		conv.c \
		data.c \
		equiv.c \
		error.c \
		exec.c \
		expr.c \
		gram.c \
		init.c \
		intr.c \
		io.c \
		lex.c \
		main.c \
		misc.c \
		optcse.c \
		optim.c \
		optloop.c \
		proc.c \
		put.c \
		putpcc.c \
		regalloc.c \
		stab.c \
		vax.c \
		vaxx.c

all:		$(MPROGRAM) $(PROGRAM)

$(PROGRAM):     $(OBJS) $(LIBS)
		@echo -n "Loading $(PROGRAM) ... "
		@$(LINKER) $(LDFLAGS) $(OBJS) $(LIBS) -o $(PROGRAM)
		@echo "done"

$(MPROGRAM):    $(MOBJS) $(LIBS)
		@echo -n "Loading $(MPROGRAM) ... "
		@$(LINKER) $(LDFLAGS) $(MOBJS) $(LIBS) -o $(MPROGRAM)
		@echo "done"

$(DECPROGRAM):  $(DECOBJS)
		@echo -n "Loading $(DECPROGRAM) ... "
		@$(CC) $(DECLDFLAGS) $(DECOBJS) $(DECLIBS) -o $(DECPROGRAM)
		@echo "done"

$(PROPROGRAM):  $(OBJS) $(LIBS)
		@echo -n "Loading $(PROGRAM) ... "
		@$(LINKER) -p $(LDFLAGS) $(OBJS) $(LIBS) -o $(PROPROGRAM)
		@echo "done"

$(GPROGRAM):     $(GOBJS) $(LIBS)
		@echo -n "Loading $(GPROGRAM) ... "
		@$(LINKER) $(GLDFLAGS) $(GOBJS) $(LIBS) -o $(GPROGRAM)
		@echo "done"

clean:;		@rm -f $(MOBJS) $(OBJS) $(GOBJS) $(DECOBJS) gram.c gram.in \
		${PROPROGRAM} ${GPROGRAM} ${DECPROGRAM} ${PROGRAM} ${MPROGRAM}

depend:;	@mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST)

index:;		@ctags -wx $(HDRS) $(SRCS)

install:	$(MPROGRAM) $(PROGRAM)
		@echo Installing $(MPROGRAM) in $(DEST)
		@install -s $(MPROGRAM) $(DEST)
		@echo Installing $(PROGRAM) in $(DEST)
		@install -s $(PROGRAM) $(DEST)

print:;		@$(PRINT) $(HDRS) $(SRCS)

program:        $(PROGRAM)

tags:           $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS)

update:		$(DEST)/$(PROGRAM)

$(DEST)/$(PROGRAM): $(SRCS) $(LIBS) $(HDRS) $(EXTHDRS)
		@make -f $(MAKEFILE) DEST=$(DEST) install

gram.c:	gram.head gram.dcl gram.expr gram.exec gram.io tokdefs.h
	( sed <tokdefs.h "s/#define/%token/" ;\
		cat gram.head gram.dcl gram.expr gram.exec gram.io ) >gram.in
	$(YACC) $(YFLAGS) gram.in
	@echo "(expect 4 shift/reduce)"
	mv y.tab.c gram.c

gram.head: defs.h data.h

tokdefs.h: tokens
	grep -n . <tokens | sed "s/\([^:]*\):\(.*\)/#define \2 \1/" >tokdefs.h
###
bb.mo: /usr/include/stdio.h /usr/include/ctype.h ftypes.h \
	${INCLUDE}/defines.h ${INCLUDE}/machdefs.h defs.h optim.h
conv.mo: defs.h ${INCLUDE}/machdefs.h conv.h
data.mo: defs.h ${INCLUDE}/machdefs.h data.h
equiv.mo: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h
error.mo: defs.h ${INCLUDE}/machdefs.h
exec.mo: defs.h ${INCLUDE}/machdefs.h optim.h
expr.mo: defs.h ${INCLUDE}/machdefs.h
gram.mo: defs.h ${INCLUDE}/machdefs.h data.h /usr/include/a.out.h
init.mo: defs.h ${INCLUDE}/machdefs.h io.h /usr/include/sys/file.h
intr.mo: defs.h ${INCLUDE}/machdefs.h
io.mo: defs.h ${INCLUDE}/machdefs.h io.h
lex.mo: defs.h ${INCLUDE}/machdefs.h tokdefs.h
main.mo: defs.h ${INCLUDE}/machdefs.h /usr/include/signal.h \
	/usr/include/a.out.h
misc.mo: defs.h ${INCLUDE}/machdefs.h
optcse.mo: defs.h ${INCLUDE}/machdefs.h optim.h
optim.mo: defs.h ${INCLUDE}/machdefs.h optim.h
optloop.mo: defs.h ${INCLUDE}/machdefs.h optim.h
proc.mo: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h
put.mo: defs.h ${INCLUDE}/machdefs.h pccdefs.h
putpcc.mo: defs.h ${INCLUDE}/machdefs.h pccdefs.h
regalloc.mo: defs.h ${INCLUDE}/machdefs.h optim.h
stab.mo: defs.h ${INCLUDE}/machdefs.h optim.h
vax.mo: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h \
	pccdefs.h
vaxx.mo: /usr/include/stdio.h ${INCLUDE}/defines.h \
	${INCLUDE}/machdefs.h
bb.do: /usr/include/stdio.h /usr/include/ctype.h ftypes.h \
	${INCLUDE}/defines.h ${INCLUDE}/machdefs.h defs.h optim.h
conv.do: defs.h ${INCLUDE}/machdefs.h conv.h
data.do: defs.h ${INCLUDE}/machdefs.h data.h
equiv.do: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h
error.do: defs.h ${INCLUDE}/machdefs.h
exec.do: defs.h ${INCLUDE}/machdefs.h optim.h
expr.do: defs.h ${INCLUDE}/machdefs.h
gram.do: defs.h ${INCLUDE}/machdefs.h data.h /usr/include/a.out.h
init.do: defs.h ${INCLUDE}/machdefs.h io.h /usr/include/sys/file.h
intr.do: defs.h ${INCLUDE}/machdefs.h
io.do: defs.h ${INCLUDE}/machdefs.h io.h
lex.do: defs.h ${INCLUDE}/machdefs.h tokdefs.h
main.do: defs.h ${INCLUDE}/machdefs.h /usr/include/signal.h \
	/usr/include/a.out.h
misc.do: defs.h ${INCLUDE}/machdefs.h
optcse.do: defs.h ${INCLUDE}/machdefs.h optim.h
optim.do: defs.h ${INCLUDE}/machdefs.h optim.h
optloop.do: defs.h ${INCLUDE}/machdefs.h optim.h
proc.do: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h
put.do: defs.h ${INCLUDE}/machdefs.h pccdefs.h
putpcc.do: defs.h ${INCLUDE}/machdefs.h pccdefs.h
regalloc.do: defs.h ${INCLUDE}/machdefs.h optim.h
stab.do: defs.h ${INCLUDE}/machdefs.h optim.h
vax.do: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h \
	pccdefs.h
vaxx.do: /usr/include/stdio.h ${INCLUDE}/defines.h \
	${INCLUDE}/machdefs.h
bb.no: /usr/include/stdio.h /usr/include/ctype.h ftypes.h \
	${INCLUDE}/defines.h ${INCLUDE}/machdefs.h defs.h optim.h
conv.no: defs.h ${INCLUDE}/machdefs.h conv.h
data.no: defs.h ${INCLUDE}/machdefs.h data.h
equiv.no: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h
error.no: defs.h ${INCLUDE}/machdefs.h
exec.no: defs.h ${INCLUDE}/machdefs.h optim.h
expr.no: defs.h ${INCLUDE}/machdefs.h
gram.no: defs.h ${INCLUDE}/machdefs.h data.h /usr/include/a.out.h
init.no: defs.h ${INCLUDE}/machdefs.h io.h /usr/include/sys/file.h
intr.no: defs.h ${INCLUDE}/machdefs.h
io.no: defs.h ${INCLUDE}/machdefs.h io.h
lex.no: defs.h ${INCLUDE}/machdefs.h tokdefs.h
main.no: defs.h ${INCLUDE}/machdefs.h /usr/include/signal.h \
	/usr/include/a.out.h
misc.no: defs.h ${INCLUDE}/machdefs.h
optcse.no: defs.h ${INCLUDE}/machdefs.h optim.h
optim.no: defs.h ${INCLUDE}/machdefs.h optim.h
optloop.no: defs.h ${INCLUDE}/machdefs.h optim.h
proc.no: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h
put.no: defs.h ${INCLUDE}/machdefs.h pccdefs.h
putpcc.no: defs.h ${INCLUDE}/machdefs.h pccdefs.h
regalloc.no: defs.h ${INCLUDE}/machdefs.h optim.h
stab.no: defs.h ${INCLUDE}/machdefs.h optim.h
vax.no: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h \
	pccdefs.h
vaxx.no: /usr/include/stdio.h ${INCLUDE}/defines.h \
	${INCLUDE}/machdefs.h
bb.go: /usr/include/stdio.h /usr/include/ctype.h ftypes.h \
	${INCLUDE}/defines.h ${INCLUDE}/machdefs.h defs.h optim.h
conv.go: defs.h ${INCLUDE}/machdefs.h conv.h
data.go: defs.h ${INCLUDE}/machdefs.h data.h
equiv.go: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h
error.go: defs.h ${INCLUDE}/machdefs.h
exec.go: defs.h ${INCLUDE}/machdefs.h optim.h
expr.go: defs.h ${INCLUDE}/machdefs.h
gram.go: defs.h ${INCLUDE}/machdefs.h data.h /usr/include/a.out.h
init.go: defs.h ${INCLUDE}/machdefs.h io.h /usr/include/sys/file.h
intr.go: defs.h ${INCLUDE}/machdefs.h
io.go: defs.h ${INCLUDE}/machdefs.h io.h
lex.go: defs.h ${INCLUDE}/machdefs.h tokdefs.h
main.go: defs.h ${INCLUDE}/machdefs.h /usr/include/signal.h \
	/usr/include/a.out.h
misc.go: defs.h ${INCLUDE}/machdefs.h
optcse.go: defs.h ${INCLUDE}/machdefs.h optim.h
optim.go: defs.h ${INCLUDE}/machdefs.h optim.h
optloop.go: defs.h ${INCLUDE}/machdefs.h optim.h
proc.go: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h
put.go: defs.h ${INCLUDE}/machdefs.h pccdefs.h
putpcc.go: defs.h ${INCLUDE}/machdefs.h pccdefs.h
regalloc.go: defs.h ${INCLUDE}/machdefs.h optim.h
stab.go: defs.h ${INCLUDE}/machdefs.h optim.h
vax.go: defs.h ${INCLUDE}/machdefs.h /usr/include/a.out.h \
