#
# @(#)Makefil2 1.1 94/10/31 Sun Micro 1986
#
TESTDIR = .
DESTDIR = /usr/local/sunrise
LDFLAGS =  -g
COPTS =  -g -Dfoo
INSTALL= cp
CFLAGS = -DSUNRISE -DBUFSTDERR $(COPTS)
FFLAGS = $(CFLAGS)  # for Fortran only
M=../mip
CSRC =	allo1.c allo2.c $M/cgram.y $M/comm1.c $M/mip.h $M/match.c \
		$M/cpass1.h $M/cpass2.h $M/optim.c $M/pftn.c $M/reader.c \
		$M/scan.c $M/trees.c $M/xdefs.c $M/yyerror.c \
		$M/common \
		regvars.c \
		code.c  \
		local.c  \
		local2.c  opmatch.c optim2.c \
		order.c su.c \
		stab.c float2.c \
		table.c  \
		util2.c \
		machdep2.h machdep.h 
FSRC =	$M/fallo.c $M/fcomm2.c $M/flocal2.c $M/fmatch.c $M/forder.c \
		$M/fort.c $M/freader.c $M/ftable.c ffloat2.c foptim2.c \
		fopmatch.c futil2.c fsu.c
COBJ = rodata.o cgram.o xdefs.o scan.o pftn.o trees.o optim.o code.o local.o \
	regvars.o reader.o local2.o order.o opmatch.o match.o allo1.o allo2.o comm1.o \
	table.o stab.o optim2.o util2.o su.o yyerror.o gencall.o struct.o float2.o
FOBJ = fort.o freader.o fallo.o fopmatch.o fmatch.o ftable.o forder.o \
	flocal2.o fcomm2.o ffloat2.o foptim2.o futil2.o fsu.o

C0OBJ =  rodata.o cgram.o xdefs.o scan.o pftn.o trees.o optim.o code.o local.o regvars.o comm1.o stab.o yyerror.o p1stubs.o allo1.o
C1OBJ =  reader.o local2.o order.o opmatch.o match.o allo2.o comm2.o table.o optim2.o util2.o su.o gencall.o struct.o float2.o

both: c0 c1

comp: $(COBJ)
	$(CC) $(LDFLAGS)  $(COBJ)
	mv a.out $(TESTDIR)/comp
c0: $(C0OBJ)
	$(CC) $(LDFLAGS) $(C0OBJ) -o c0
c1: $(C1OBJ)
	$(CC) $(LDFLAGS) $(C1OBJ) -o c1
trees.o: $M/mip.h machdep.h $M/cpass1.h $M/trees.c
	$(CC) -c $(CFLAGS) -I$M -I.  $M/trees.c
optim.o: $M/mip.h machdep.h $M/cpass1.h $M/optim.c
	$(CC) -c $(CFLAGS) -I$M -I. $M/optim.c
pftn.o: $M/mip.h machdep.h $M/cpass1.h $M/pftn.c
	$(CC) -c $(CFLAGS) -I$M -I. $M/pftn.c
regvars.o: $M/mip.h machdep.h $M/cpass1.h
	$(CC) -c $(CFLAGS) -I$M -I. regvars.c
code.o: $M/mip.h machdep.h $M/cpass1.h
	$(CC) -c $(CFLAGS) -I$M -I. code.c
local.o: $M/mip.h machdep.h $M/cpass1.h
	$(CC) -c $(CFLAGS) -I$M -I. local.c
allo1.o: $M/mip.h machdep.h $M/cpass1.h
	$(CC) -c $(CFLAGS) -I$M -I. allo1.c
p1stubs.o: $M/mip.h machdep.h $M/cpass1.h
	$(CC) -c $(CFLAGS) -I$M -I. p1stubs.c
stab.o: $M/mip.h machdep.h $M/cpass1.h stab.c
	$(CC) -c $(CFLAGS) -I$M -I. stab.c
scan.o: $M/mip.h machdep.h $M/cpass1.h $M/scan.c
	$(CC) -c $(CFLAGS) -I$M -I. $M/scan.c
xdefs.o: $M/mip.h $M/cpass1.h machdep.h $M/xdefs.c
	$(CC) -c $(CFLAGS) -I$M -I. $M/xdefs.c
yyerror.o: $M/mip.h machdep.h $M/cpass1.h $M/yyerror.c
	$(CC) -c $(CFLAGS) -I$M -I. $M/yyerror.c
cgram.o: $M/mip.h $M/cpass1.h machdep.h cgram.c
	$(CC) -c $(CFLAGS) -I$M -I. cgram.c
rodata.o: rodata.c
	$(CC) $(CFLAGS) -c -R rodata.c
rodata.c cgram.c: $M/cgram.y
	$(YACC) $M/cgram.y
	rm -f rodata.c
	./:yyfix yyexca yyact yypact yypgo yyr1 yyr2 yychk yydef
	mv y.tab.c cgram.c
comm1.o: $M/mip.h $M/cpass1.h $M/common machdep.h $M/comm1.c
	$(CC) -c $(CFLAGS) -I$M -I. $M/comm1.c
comm2.o: $M/mip.h $M/cpass2.h $M/common machdep2.h machdep.h $M/comm2.c
	$(CC) -c $(CFLAGS) -I$M -I. $M/comm2.c
table.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h table.c
	$(CC) $(CFLAGS) -c -R -I$M -I. table.c
reader.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h $M/reader.c
	$(CC) -c $(CFLAGS) -I$M -I. $M/reader.c
local2.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h
	$(CC) -c $(CFLAGS) -I$M -I. local2.c
util2.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h util2.c
	$(CC) -c $(CFLAGS) -I$M -I. util2.c
opmatch.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h 
	$(CC) -c $(CFLAGS) -I$M -I. opmatch.c
optim2.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h 
	$(CC) -c $(CFLAGS) -I$M -I. optim2.c
float2.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h float2.c 
	$(CC) -c $(CFLAGS) -I$M -I. float2.c
order.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h
	$(CC) -c $(CFLAGS) -I$M -I. order.c
su.o:   $M/mip.h $M/cpass2.h machdep2.h machdep.h su.c
	$(CC) -c $(CFLAGS) -I$M -I. su.c
gencall.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h gencall.c
	$(CC) -c $(CFLAGS) -I$M -I. gencall.c
struct.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h struct.c
	$(CC) -c $(CFLAGS) -I$M -I. struct.c
match.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h $M/match.c
	$(CC) -c $(CFLAGS) -I$M -I. $M/match.c
allo2.o: $M/mip.h $M/cpass2.h machdep2.h machdep.h allo2.c
	$(CC) -c $(CFLAGS) -I$M -I. allo2.c
shrink:
	-rm *.o c0 c1
clean:
	rm -f *.o c0 c1 fort cgram.c rodata.c
lintall:
	lint -hpv -I. -I$M  $M/cgram.c $M/xdefs.c $M/scan.c $M/pftn.c \
		$M/trees.c $M/optim.c code.c local.c $M/reader \
		local2.c order.c $M/match.c $M/allo.c $M/comm1.c table.c
fort: comp $(FOBJ)
	$(CC)  $(LDFLAGS) $(FOBJ) -o $(TESTDIR)/fort
fort.o: fort.h $M/fort.c
	$(CC) -c $(FFLAGS) -I$M -I. $M/fort.c
freader.o: reader.o
	$(CC) -c $(FFLAGS) -I$M -I. $M/freader.c
fallo.o: allo.o
	$(CC) -c $(FFLAGS) -I$M -I. $M/fallo.c
fmatch.o: match.o
	$(CC) -c $(FFLAGS) -I$M -I. $M/fmatch.c
ftable.o: table.o
	$(CC) -c -R $(FFLAGS) -I$M -I. $M/ftable.c
forder.o: order.o
	$(CC) -c $(FFLAGS) -I$M -I. $M/forder.c
fsu.o:    su.o
	$(CC) -c $(FFLAGS) -I$M -I. fsu.c
flocal2.o: local2.o
	$(CC) -c $(FFLAGS) -I$M -I. $M/flocal2.c
ffloat2.o: float2.o 
	$(CC) -c $(FFLAGS) -I$M -I. ffloat2.c
foptim2.o: optim2.o 
	$(CC) -c $(FFLAGS) -I$M -I. foptim2.c
fopmatch.o: opmatch.o 
	$(CC) -c $(FFLAGS) -I$M -I. fopmatch.c
futil2.o: util2.o 
	$(CC) -c $(FFLAGS) -I$M -I. futil2.c
fcomm2.o: $M/common
	$(CC) -c $(FFLAGS) -I$M -I. $M/fcomm2.c
fort.o freader.o fallo.o fmatch.o ftable.o forder.o flocal2.o fcomm2.o: \
	$M/cpass2.h $M/mip.h machdep.h machdep2.h
install:	both
	$(INSTALL) c0 $(DESTDIR)/lib/c0
	$(INSTALL) c1 $(DESTDIR)/lib/c1
print:	
	pr -f makefile 
	/usr/ucb/ctags -x ${CSRC} | pr -f -h XREF
	pr -f ${CSRC} ${FSRC}
tags:
	ctags ${CSRC}
