# Glib, Unix version for Kawai K1, etc.
# Greg Lee, lee@uhccux.uhcc.hawaii.edu
# Feb, 1989
# adapted from Tim Thompson's program and Michael Kesti's version

LEX = flex
LEXLIB =
# to use lex instead of flex:
#LEX = lex
#LEXLIB = -ll

# defines for CFLAGS (below):
#	BSD for fopen with mode 'r'/'w' instead of 'rb'/'wb'
#	ULTRIX enables curses no()/nonl() fix
#	ARROW for use of arrow keys (probably only bsd)
# and uncomment one set of the following for supported synths:

# Remove '#' from next 5 lines for Roland D-10:
#SYNTHS = -DROLANDD10
#SYNTHOBJ = vis.o d10pat.o d10tim.o d10ton.o d10wfg.o d10tvf.o d10tva.o \
#	d10rsu.o d10urp.o d10tra.o
#SYNTHC = d10pat.c d10tim.c d10wfg.c d10tvf.c d10tva.c \
#	d10rsu.c d10urp.c d10tra.c # vis.h

# Remove '#' from next 4 lines for various Yamaha, K5, etc.:
#SYNTHS = -DTX81Z -DTX81ZPERF -DDX100 -DDW8000 -DKAWAIK5 -DDEP5
#SYNTHOBJ = dx100.o tx81z.o tx81p.o dw8000.o yama_com.o \
#	k5single.o k5multi.o dep5.o
#SYNTHC = dx100.c tx81z.c tx81p.c dw8000.c k5single.c k5multi.c dep5.c

# Remove '#' from next 3 lines for Kawai K1:
SYNTHS = -DKAWAIK1
SYNTHOBJ = k1vis.o k1multi.o k1single.o
SYNTHC = k1multi.c k1single.c # k1vis.h

CFLAGS = -s -O -DBSD -DULTRIX -DARROW $(SYNTHS)


OBJ = machdep.o glib.o list.o $(SYNTHOBJ)

LIBS = -lcurses -ltermcap

.SUFFIXES: .mnu

glib : menutoc $(SYNTHC) $(OBJ)
	$(CC) $(OBJ) $(LIBS) -o glib
	@echo "Make complete."

machdep.c: unix-mach.c machdep.h
	rm -f machdep.c
	ln -s unix-mach.c machdep.c

machdep.h: unix-mach.h
	rm -f machdep.h
	ln -s unix-mach.h machdep.h

machdep.o : machdep.c glib.h /usr/include/ctype.h \
	/usr/include/curses.h /usr/include/sys/termio.h
# On the UNIX PC (at least mine), cbreak() and nocbreak() aren't in
# libcurses.a so this hack (-DFAKECBREAK) is one way out.
# On the UNIX PC, add a -DFAKECBREAK to the following line
#	cc $(CFLAGS) -c machdep.c -DFAKECBREAK
	$(CC) $(CFLAGS) -c machdep.c

.mnu.c:
	@rm -f $@
	menutoc <$*.mnu >$@

menutoc:  menutoc.c
	$(CC) -s -o menutoc menutoc.c
# to revise menutoc, substitute for above:
#menutoc: menutoc.l
#	$(LEX) menutoc.l
#	$(CC) -o menutoc lex.yy.c $(LEXLIB)

# to automate construction of k1vis.h:
#k1vis.h: k1vis.c makevish
#	rm -f k1vis.h
#	makevish <k1vis.c >k1vis.h

# to automate construction of vis.h:
#vis.h:	vis.c makevish
#	rm -f vis.h
#	makevish <vis.c >vis.h

makevish: makevish.l
	$(LEX) makevish.l
	$(CC) -o makevish lex.yy.c $(LEXLIB)

ctomenu: ctomenu.l
	$(LEX) ctomenu.l
	$(CC) -o ctomenu lex.yy.c $(LEXLIB)

clean:
	rm -f *.o lex.yy.c $(SYNTHC) makevish \
		machdep.c machdep.h menutoc core MANIFEST.BAK *.hdr

shar:
	rm -f glib.shar.*
	makekit -m -nglib.shar.

glib.o: glib.h machdep.h /usr/include/ctype.h
list.o: glib.h machdep.h
k1multi.o: glib.h machdep.h k1vis.h
k1single.o: glib.h machdep.h k1vis.h
d10wfg.o: glib.h machdep.h vis.h
# etc.
