#
#	This is the first Makefile that makes a skyf77pass1 that will
#	run in a system without a Sky board.
#


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

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

CFLAGS       = -O -UDEC -DIEEE -DSDB -DYYDEBUG -DHERE=VAX -DTARGET=VAX \
		-DFAMILY=PCC -DUCBVAXASM -DUCBPASS2 -I../../include

DECFLAGS     = -O -DDEC -UIEEE -fD -DSDB -DYYDEBUG -DHERE=VAX -DTARGET=VAX \
		-DFAMILY=PCC -DUCBVAXASM -DUCBPASS2 -I../../include

SKYFLAGS     = -O -UDEC -DIEEE -DOLDSKYFLAG -DSDB -DYYDEBUG \
		-DHERE=VAX -DTARGET=VAX -DFAMILY=PCC \
		-DUCBVAXASM -DUCBPASS2 -I../../include

GFLAGS        = -g -DSDB -O -DYYDEBUG -DHERE=VAX -DTARGET=VAX -DFAMILY=PCC \
		-DUCBVAXASM -UDEC -DIEEE -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

SKYLDFLAGS    =

GLDFLAGS      = -g

DECLIBS	      =

LINKER	      = cc

LIBS	      = 

MAKEFILE      = Makefile

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

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

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

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

PRINT	      = pr

PROGRAM       = f77pass1

DECPROGRAM    = decf77pass1
SKYPROGRAM    = skyf77pass1

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:		$(PROGRAM) $(DECPROGRAM) $(SKYPROGRAM)

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

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

$(SKYPROGRAM):  $(SKYOBJS)
		@echo -n "Loading $(SKYPROGRAM) ... "
		@$(CC) $(SKYLDFLAGS) $(SKYOBJS) $(SKYLIBS) -o $(SKYPROGRAM)
		@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 $(OBJS) $(GOBJS) $(DECOBJS) $(SKYOBJS) gram.c gram.in \
		${PROPROGRAM} ${GPROGRAM} ${DECPROGRAM} ${PROGRAM} \
		${SKYPROGRAM} y.tab.* yacc.* a.out core rslts

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

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

install:	$(PROGRAM) $(DECPROGRAM)
		@echo Installing $(PROGRAM) in $(DEST)
		@install -s $(PROGRAM) $(DEST)
		@echo Installing $(DECPROGRAM) in $(DEST)
		@install -s $(DECPROGRAM) $(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 \
		ftypes.h ../../include/defines.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.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 pccdefs.h
expr.no: defs.h ../../include/machdefs.h ../../include/defines.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.so: /usr/include/stdio.h /usr/include/ctype.h ftypes.h \
	../../include/defines.h ../../include/machdefs.h defs.h optim.h
conv.so: defs.h ../../include/machdefs.h conv.h
data.so: defs.h ../../include/machdefs.h data.h
equiv.so: defs.h ../../include/machdefs.h /usr/include/a.out.h
error.so: defs.h ../../include/machdefs.h
exec.so: defs.h ../../include/machdefs.h optim.h pccdefs.h
expr.so: defs.h ../../include/machdefs.h ../../include/defines.h
gram.so: defs.h ../../include/machdefs.h data.h /usr/include/a.out.h
init.so: defs.h ../../include/machdefs.h io.h /usr/include/sys/file.h
intr.so: defs.h ../../include/machdefs.h
io.so: defs.h ../../include/machdefs.h io.h
lex.so: defs.h ../../include/machdefs.h tokdefs.h
main.so: defs.h ../../include/machdefs.h /usr/include/signal.h \
	/usr/include/a.out.h
misc.so: defs.h ../../include/machdefs.h
optcse.so: defs.h ../../include/machdefs.h optim.h
optim.so: defs.h ../../include/machdefs.h optim.h
optloop.so: defs.h ../../include/machdefs.h optim.h
proc.so: defs.h ../../include/machdefs.h /usr/include/a.out.h
put.so: defs.h ../../include/machdefs.h pccdefs.h
putpcc.so: defs.h ../../include/machdefs.h pccdefs.h
regalloc.so: defs.h ../../include/machdefs.h optim.h
stab.so: defs.h ../../include/machdefs.h optim.h
vax.so: defs.h ../../include/machdefs.h /usr/include/a.out.h pccdefs.h
vaxx.so: /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 pccdefs.h
expr.do: defs.h ../../include/machdefs.h ../../include/defines.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

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 pccdefs.h
expr.go: defs.h ../../include/machdefs.h ../../include/defines.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 pccdefs.h
