CC=xcc
ASFLAGS=-n
# hack to compile on sun
HACK=-Deconvert=bwcxxx
CFLAGS = -DASSTRINGS -DSTABDOT -DLCOMM -DBUFSTDERR -DFLEXNAMES \
		 -DONEPASS -DIEEE $I  $(HACK) -DLARGE

FFLAGS = -DASSTRINGS -DSTABDOT -DLCOMM -DBUFSTDERR -DFLEXNAMES \
	-UONEPASS -DFORT -DIEEE

M=../mip
I=-I$M -I. -I/usr/gun/usr/include
ALL=	 scan.o cgram.o xdefs.o pftn.o trees.o optim.o \
	local.o stab.o code.o comm1.o \
	reader.o allo.o match.o order.o local2.o table.o


FORT= fort.no freader.no fallo.no fmatch.no fcomm2.no forder.no \
		flocal2.no ftable.no

all: ccom

ccom:	${ALL}
	$(CC) -n  $(ALL) -o ccom
	@ echo finished ccom

f1: 	${FORT}
	$(CC) -z $(LDFLAGS) -o $(TESTDIR)/f1 ${FORT}
	@ echo finished f1

trees.o: $M/manifest macdefs $M/mfile1 $M/trees.c
	$(CC) -c $(CFLAGS)  $M/trees.c

optim.o: $M/manifest macdefs $M/mfile1 $M/optim.c
	$(CC) -c $(CFLAGS) $M/optim.c

pftn.o: $M/manifest macdefs $M/mfile1 $M/pftn.c
	$(CC) -c $(CFLAGS) $M/pftn.c

code.o: $M/manifest macdefs $M/mfile1
	$(CC) -c $(CFLAGS) code.c

local.o: $M/manifest macdefs $M/mfile1
	$(CC) -c $(CFLAGS) local.c

stab.o: $M/manifest macdefs $M/mfile1
	$(CC) -c $(CFLAGS) stab.c

scan.o: $M/manifest macdefs $M/mfile1 $M/scan.c
	$(CC) -c $(CFLAGS) $M/scan.c

xdefs.o: $M/manifest $M/mfile1 macdefs $M/xdefs.c
	$(CC) -c $(CFLAGS) $M/xdefs.c

cgram.o: $M/manifest $M/mfile1 macdefs cgram.c
	$(CC) -c $(CFLAGS) cgram.c

cgram.c: $M/cgram.y 
	$(YACC) $M/cgram.y
	mv y.tab.c cgram.c

comm1.o: $M/manifest $M/mfile1 $M/common macdefs $M/comm1.c
	$(CC) -c $(CFLAGS) $M/comm1.c

table.o: $M/manifest $M/mfile2 mac2defs macdefs table.c 
	$(CC) $(CFLAGS) -c table.c

reader.o: $M/manifest $M/mfile2 mac2defs macdefs $M/reader.c
	$(CC) -c $(CFLAGS) $M/reader.c

local2.o: $M/manifest $M/mfile2 mac2defs macdefs
	$(CC) -c $(CFLAGS) local2.c

order.o:	$M/manifest $M/mfile2 mac2defs macdefs
	$(CC) -c $(CFLAGS) order.c

match.o: $M/manifest $M/mfile2 mac2defs macdefs $M/match.c
	$(CC) -c $(CFLAGS) $M/match.c

allo.o: $M/manifest $M/mfile2 mac2defs macdefs $M/allo.c
	$(CC) -c $(CFLAGS) $M/allo.c

shrink:
	rm *.o ccom
clean:
	rm -f *.*o *ccom *f1 cgram.c rodata.c rslts core a.out
lintall:
	lint -hpv  $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.no: fort.h $M/fort.c
	$(CC) -c $(FFLAGS) $M/fort.c
	mv fort.o fort.no
fort.so: fort.h $M/fort.c
	$(CC) -c $(SKYFFLAGS) $M/fort.c
	mv fort.o fort.so
fort.fo: fort.h $M/fort.c
	$(CC) -c $(DECFFLAGS) $M/fort.c
	mv fort.o fort.fo
freader.no: $M/manifest $M/mfile2 mac2defs macdefs $M/reader.c $M/freader.c
	$(CC) -c $(FFLAGS) $M/freader.c
	mv freader.o freader.no
freader.so: $M/manifest $M/mfile2 mac2defs macdefs $M/reader.c $M/freader.c
	$(CC) -c $(SKYFFLAGS) $M/freader.c
	mv freader.o freader.so
freader.fo: $M/manifest $M/mfile2 mac2defs macdefs $M/reader.c $M/freader.c
	$(CC) -c $(DECFFLAGS) $M/freader.c
	mv freader.o freader.fo
fallo.no: $M/manifest $M/mfile2 mac2defs macdefs $M/allo.c $M/fallo.c
	$(CC) -c $(FFLAGS) $M/fallo.c
	mv fallo.o fallo.no
fallo.so: $M/manifest $M/mfile2 mac2defs macdefs $M/allo.c $M/fallo.c
	$(CC) -c $(SKYFFLAGS) $M/fallo.c
	mv fallo.o fallo.so
fallo.fo: $M/manifest $M/mfile2 mac2defs macdefs $M/allo.c $M/fallo.c
	$(CC) -c $(DECFFLAGS) $M/fallo.c
	mv fallo.o fallo.fo
fmatch.no: $M/manifest $M/mfile2 mac2defs macdefs $M/match.c $M/fmatch.c
	$(CC) -c $(FFLAGS) $M/fmatch.c
	mv fmatch.o fmatch.no
fmatch.so: $M/manifest $M/mfile2 mac2defs macdefs $M/match.c $M/fmatch.c
	$(CC) -c $(SKYFFLAGS) $M/fmatch.c
	mv fmatch.o fmatch.so
fmatch.fo: $M/manifest $M/mfile2 mac2defs macdefs $M/match.c $M/fmatch.c
	$(CC) -c $(DECFFLAGS) $M/fmatch.c
	mv fmatch.o fmatch.fo
ftable.no: $M/manifest $M/mfile2 mac2defs macdefs table.c $M/ftable.c rofix
	$(CC) $(FFLAGS) -S $M/ftable.c
	rofix ftable.s
	$(AS) -o ftable.no ftable.s
	rm -f ftable.s
ftable.so: $M/manifest $M/mfile2 mac2defs macdefs table.c $M/ftable.c rofix
	$(CC) $(SKYFFLAGS) -S $M/ftable.c
	rofix ftable.s
	$(AS) -o ftable.so ftable.s
	rm -f ftable.s
ftable.fo: $M/manifest $M/mfile2 mac2defs macdefs table.c $M/ftable.c rofix
	$(CC) $(DECFFLAGS) -S $M/ftable.c
	rofix ftable.s
	$(AS) -o ftable.fo ftable.s
	rm -f ftable.s
forder.no: $M/manifest $M/mfile2 mac2defs macdefs order.c $M/forder.c
	$(CC) -c $(FFLAGS) $M/forder.c
	mv forder.o forder.no
forder.so: $M/manifest $M/mfile2 mac2defs macdefs order.c $M/forder.c
	$(CC) -c $(SKYFFLAGS) $M/forder.c
	mv forder.o forder.so
forder.fo: $M/manifest $M/mfile2 mac2defs macdefs order.c $M/forder.c
	$(CC) -c $(DECFFLAGS) $M/forder.c
	mv forder.o forder.fo
flocal2.no: $M/manifest $M/mfile2 mac2defs macdefs local2.c $M/flocal2.c
	$(CC) -c $(FFLAGS) $M/flocal2.c
	mv flocal2.o flocal2.no
flocal2.so: $M/manifest $M/mfile2 mac2defs macdefs local2.c $M/flocal2.c
	$(CC) -c $(SKYFFLAGS) $M/flocal2.c
	mv flocal2.o flocal2.so
flocal2.fo: $M/manifest $M/mfile2 mac2defs macdefs local2.c $M/flocal2.c
	$(CC) -c $(DECFFLAGS) $M/flocal2.c
	mv flocal2.o flocal2.fo
fcomm2.no: $M/manifest $M/mfile2 $M/common macdefs $M/comm2.c $M/fcomm2.c
	$(CC) -c $(FFLAGS) $M/fcomm2.c
	mv fcomm2.o fcomm2.no
fcomm2.so: $M/manifest $M/mfile2 $M/common macdefs $M/comm2.c $M/fcomm2.c
	$(CC) -c $(SKYFFLAGS) $M/fcomm2.c
	mv fcomm2.o fcomm2.so
fcomm2.fo: $M/manifest $M/mfile2 $M/common macdefs $M/comm2.c $M/fcomm2.c
	$(CC) -c $(DECFFLAGS) $M/fcomm2.c
	mv fcomm2.o fcomm2.fo

fort.no freader.no fallo.no fmatch.no ftable.no forder.no flocal2.no \
	fcomm2.no: $M/mfile2 $M/manifest macdefs mac2defs

fort.so freader.so fallo.so fmatch.so ftable.so forder.so flocal2.so \
	fcomm2.so: $M/mfile2 $M/manifest macdefs mac2defs

fort.fo freader.fo fallo.fo fmatch.fo ftable.fo forder.fo flocal2.fo \
	fcomm2.fo: $M/mfile2 $M/manifest macdefs mac2defs

cp:	ccom
	cp ccom /usr/gun/lib/ccom

install:	all
	install -s ccom ${DESTDIR}/lib/ccom
	install -s f1 ${DESTDIR}/usr/lib/f1
	install -s skyccom ${DESTDIR}/lib/skyccom
	install -s skyf1 ${DESTDIR}/usr/lib/skyf1
	install -s decccom ${DESTDIR}/lib/decccom
	install -s decf1 ${DESTDIR}/usr/lib/decf1
