!include <ntwin32.mak>

# Reverse the order of these statements to toggle debug info
DEBUGCC = /Ox
DEBUGCC = $(cdebug) /nologo

# Reverse the order of these statements to toggle debug info
DEBUGLINK =
DEBUGLINK = /MAP $(linkdebug) /nologo

# LEX = flex
# LEXLIB =
# The -D option is for the hippix version of lex
LEX = lex -D
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 -DKAWAIK5 -DTX81Z -DTX81ZPERF
# SYNTHOBJ = mwave.o mwave2.o k5single.o k5multi.o tx81z.o tx81p.o yama_com.o

SYNTHS = -DTX81Z -DTX81ZPERF -DDW8000 -DMWAVE
SYNTHOBJ = vis.obj tx81z.obj tx81p.obj yama_com.obj dw8000.obj mwave.obj mwave2.obj
CFLAGS = -DSSS $(SYNTHS)

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

.SUFFIXES: .mnu

all : menutoc.exe glibdll.dll glib.exe

# libs = libc.lib kernel32.lib winmm.lib
libs = libc.lib gdi32.lib winmm.lib
cc = cl

glib.res : glib.rc
	$(rc) $(RCFLAGS32) $(RCDEFINES) -r glib.rc

glib.exe : $(OBJ) glib.res
	link $(DEBUGLINK) $(consflags) -out:glib.exe $(OBJ) glib.res glibdll.lib $(libs)

glibdll.dll : glibdll.obj glibdll.def glibdll.lib
	link $(DEBUGLINK) -base:0x1C000000 -dll -out:glibdll.dll \
		glibdll.exp glibdll.obj user32.lib winmm.lib

glibdll.obj : glibdll.c
	$(cc) $(DEBUGCC) $(cflags) $(cvarsdll) glibdll.c

.c.obj:
	$(cc) $(DEBUGCC) $(CFLAGS) $(cflags) $(cvars) $*.c

glibdll.lib : glibdll.obj glibdll.def
	lib /nologo -machine:$(CPU) -def:glibdll.def glibdll.obj -out:glibdll.lib

.mnu.c:
	menutoc $*.mnu > $*.c

# 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:
	del *.obj
	del *.exe
	del *.dll
	del *.map
	del *.pdb
	del glib.res

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