# $Id: Makefile,v 1.6 89/05/06 17:13:07 lee Exp $
# 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
# $Log:	Makefile,v $
# Revision 1.6  89/05/06  17:13:07  lee
# rel. to comp.sources.misc
# 
# 

# 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
#	SSS to enable speed-up code in glib.c
#
# 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 4 lines for TX81Z-only
# SYNTHS = -DTX81Z -DTX81ZPERF
# SYNTHOBJ = tx81z.o tx81p.o yama_com.o
# SYNTHC = tx81z.c tx81p.c

# Remove '#' from next 3 lines for DX7:
# SYNTHS = -DDX7 -DDX7S
# SYNTHOBJ = dx7.o dx7s.o
# SYNTHC = dx7.c dx7s.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

# Remove '#' from next 3 lines for CZ1:
# SYNTHS = -DCZ1
# SYNTHOBJ = cz1.o
# SYNTHC = cz1.c

SYNTHS = -DMWAVE
SYNTHOBJ = mwave.o mwave2.o

# SYNTHS = -DTX81Z -DTX81ZPERF -DMWAVE
# SYNTHOBJ = vis.o tx81z.o tx81p.o yama_com.o mwave.o

DEFNS = -DSSS $(SYNTHS)
CFLAGS = -O $(DEFNS)

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

LIBS = -lcurses -ltermcap -lm

.SUFFIXES: .mnu

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

lint: $(SYNTHC)
	@rm -f lintlog
	lint -phbv -Dlint $(DEFNS) glib.c list.c $(SYNTHC) \
		machdep.c $(LIBS)  >lintlog
# add yama_com.c above to lint dx100, etc. version

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

machdep.h: unix-mach.h
	rm -f machdep.h
	ln 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 $(LEXLIB)

menutoc.c: menutoc.l
	touch menutoc.c
# to revise menutoc, substitute for above:
#menutoc.c: menutoc.l
#	$(LEX) menutoc.l
#	mv lex.yy.c menutoc.c

# 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

clobber: clean
	rm -f cz1.c tx81p.c tx81z.c mwave.c mwave2.c d10pat.c d10rsu.c
	rm -f d10tim.c d10tra.c d10tvf.c d10wfg.c dw8000.c dep5.c
	rm -f k5multi.c k5single.c dx100.c dx7.c dx7s.c k1multi.c

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

glib.o:		glib.h
list.o:		glib.h
machdep.o:	glib.h
yama_com.o:	glib.h
cz1.o:		glib.h cz.h
d10pat.o:	glib.h vis.h
d10rsu.o:	glib.h vis.h
d10tim.o:	glib.h vis.h
d10ton.o:	glib.h
d10tra.o:	glib.h vis.h
d10tva.o:	glib.h vis.h
d10tvf.o:	glib.h vis.h
d10urp.o:	glib.h vis.h
d10wfg.o:	glib.h vis.h
dep5.o:		glib.h
dw8000.o:	glib.h
dx100.o:	glib.h
dx7.o:		glib.h
dx7s.o:		glib.h
k1multi.o:	glib.h k1vis.h
k1single.o:	glib.h k1vis.h
k5multi.o:	glib.h
k5single.o:	glib.h
mwave.o:	glib.h
mwave2.o:	glib.h
tx81p.o:	glib.h
tx81z.o:	glib.h
