CFLAGS= -O
CFILES1=addstr.c divE.c divS.c divert.c dochain.c docomb.c doctr.c dodefs.c \
	doesc.c doextern.c dofile.c doflag.c dohash.c doinit.c doique.c \
	doistak.c doivar.c dolimdup.c domacro.c donodup.c donormal.c doopt.c \
	dopermute.c dopoisson.c doprob.c dorang.c dorepcnt.c dorg.c doseed.c \
	doseq.c dosque.c dosstak.c dostart.c dosubs.c dosvar.c doterm.c \
	findref.c fixsvst.c forcit.c freeearr.c freeparr.c gencomb1.c \
	genperm1.c kn1.c kn2.c kn3.c main.c mkadv.c mkbigc.c mkbigs.c \
	mkcadv.c mkclist.c mkclst.c mkearr.c mkelst.c mkfadv.c mkgetstr.c \
	mkgtst.c mkhdrs.c mkinterp.c mkinterp2.c mkmain.c mkpadv.c mkparr.c \
	mkprsvar.c mkptst.c mkradv.c mkrdsvar.c mksinit.c mkslst.c mkstarls.c \
	mkstarr.c mkstruct.c mksvcp.c mksvfr.c mksvrs.c mksvsv.c mkvinit.c \
	pt.c ptree.c readsstar.c readstar.c saveall.c saveindv.c checkname.c \
	savename.c savestar.c savestnm.c savid.c savvar.c sigcln.c sr0.c \
	sr1.c sr2.c ss1.c ss2.c ss3.c starfree.c strtinit.c undivert.c \
	xfree.c xstack.c yyerror.c dohead.c dobin.c dopoint.c dodouble.c \
	dofloat.c dobinfld.c doirque.c mkqinit.c estack.c doexp.c genexp.c \
	mkitos.c decytok.c
CFILES2=dglparse.c dglscan.c whatis.c

OFILES= addstr.o decytok.o dglgbls.o dglparse.o dglscan.o divE.o \
	divS.o divert.o dochain.o docomb.o doctr.o dodefs.o doesc.o \
	doextern.o dofile.o doflag.o dohash.o doinit.o doique.o \
	doistak.o doivar.o dolimdup.o domacro.o donodup.o donormal.o \
	doopt.o dopermute.o dopoisson.o doprob.o dorang.o dorepcnt.o \
	dorg.o doseed.o doseq.o dosque.o dosstak.o dostart.o dosubs.o \
	dosvar.o doterm.o findref.o fixsvst.o forcit.o freeearr.o \
	freeparr.o gencomb1.o genperm1.o kn1.o kn2.o kn3.o main.o \
	mkadv.o mkbigc.o mkbigs.o mkcadv.o mkclist.o mkclst.o \
	mkearr.o mkelst.o mkfadv.o mkgetstr.o mkgtst.o mkhdrs.o \
	mkinterp.o mkinterp2.o mkmain.o mkpadv.o mkparr.o mkprsvar.o \
	mkptst.o mkradv.o mkrdsvar.o mksinit.o mkslst.o mkstarls.o \
	mkstarr.o mkstruct.o mksvcp.o mksvfr.o mksvrs.o mksvsv.o \
	mkvinit.o pt.o ptree.o readsstar.o readstar.o saveall.o \
	saveindv.o savename.o savestar.o savestnm.o checkname.o \
	savid.o savvar.o sigcln.o sr0.o sr1.o sr2.o ss1.o ss2.o ss3.o \
	starfree.o strtinit.o undivert.o whatis.o xfree.o xstack.o \
	yyerror.o dohead.o dobin.o dopoint.o dodouble.o \
	dofloat.o dobinfld.o doirque.o mkqinit.o estack.o doexp.o genexp.o \
	mkitos.o

dgl: $(OFILES)
	cc $(CFLAGS) -o dgl $(OFILES) -lm

$(OFILES): dglgbls.h dgltok.h

.c.o:
	cc -c $(CFLAGS) $*.c

dglparse.c dgltok.h: dgl.yacc
	bison -d dgl.yacc
	mv dgl.tab.cacc dglparse.c
	mv dgl.tab.hacc dgltok.h

dglscan.c: dgl.lex
	flex -l dgl.lex
	mv lex.yy.c dglscan.c

whatis.c: mkwhat mkulwhat whatis.data
	mkulwhat STRING dgltok.h whatis <whatis.data >whatis.c

mkwhat: mkwhat.c
	cc $(CFLAGS) mkwhat.c -o mkwhat

mkulwhat: mkulwhat.c
	cc $(CFLAGS) mkulwhat.c -o mkulwhat

clean:
	rm -f $(OFILES)
	rm -f dglparse.c dgltok.h dglscan.c tokdec mkwhat mkulwhat whatis.c

install: dgl
	strip dgl
	mv dgl ../bin

lib: $(OFILES)
	ar rcs libdgl.a $(OFILES)
	mv libdgl.a ../lib

bulk:
	wc -l $(CFILES1) dglgbls.h dgl.lex dgl.yacc mkwhat.c mkulwhat.c tokdec.c

.dgl:
	dgl <$*.dgl >$*.c
	cc $(CFLAGS) $*.c -o $*
.dgl.c:
	dgl <$*.dgl >$*.c
.SUFFIXES: .dgl
