midi	= /u/psl/midi
incl	= $(midi)/include
CFLAGS	= -O -I$(incl)
C	= $(CC) $(CFLAGS) -c -o $@ SRC
lib	= .
midilib = $(lib)/libmidi.a
MIDHEADER	= $(incl)/libmidi.h
MPUHEADER	= $(incl)/libmpu.h
MISHEADER	= $(incl)/libmisc.h
DEVHEADER	= $(incl)/libdev.h $(MIDHEADER)
DX7HEADER	= $(incl)/libdx7.h $(DEVHEADER)
MIRHEADER	= $(incl)/libmirage.h $(DEVHEADER)
IOTHEADER	= $(incl)/libiota.h $(DEVHEADER)
AMCHEADER	= $(incl)/libamc.h $(MIDIHEADER) $(MPUHEADER)

DX7O	= da_dx7_voice.o da_vdx7.o dx7_globs.o \
	send_dx7_bd.o vdx7.o \
	getdx7ccname.o da_dx7_sx.o sx_dx7_1v.o sx_dx7_32v.o \
	dx7SetVoice.o dx7ReadVoice.o \
	dx7GetVoice.o dx7PutVoice.o dx7PutControl.o dx7PutParameter.o \
	dx7PutVoiceName.o \
	dx7Button.o dx7sysinfo.o dx7memprotect.o dx7buttoi.o \
	tx1v32.o tx1p64.o
MIRO	= mirage_globs.o da_mirage_sx.o
IOTO	= iota_globs.o da_iota_sx.o
DEVO		= $(DX7O) $(MIRO) $(IOTO) da_head_sx.o
MIDO	= midi_pk.o da_midi_cmd.o da_sx.o get_ctl_name.o itop.o \
	midi_cmd_in.o midi_io.o prog_change.o send_ch.o tcwme.o tcip.o \
	banjoplay.o midiplayinit.o \
	midimerge.o miditranspose.o midistretch.o \
	mozart.o mpuclockput.o mputimeshift.o nap.o fsleep.o putnote.o \
	statinfo.o
MISO  = tunespath.o searchpath.o tunesfile.o error.o opentune.o
XTRO	= checksum.o gstring.o iwait.o key2name.o myatoi.o owait.o \
	snooze.o sopen.o strcopy.o strpeel.o
MPUO	= copympucmd.o dx7_reset.o getmcmd.o getmpucmd.o \
	mpu_immed.o mpuset.o mpuput.o mpusend.o \
	mpusettrack.o \
	putmpucmd.o putmcmd.o putamcmd.o puttcip.o puttcwme.o \
	setmpunote.o
AMCO  = sbsd.o
OFILES	= $(DEVO) $(MIDO) $(MISO) $(XTRO) $(MPUO) $(AMCO)

.SUFFIXES: .c .lint
.c.lint:
	lint -I$(incl) -DSUN -DLINT -hv $*.c 2>$*.lint 1>&2

$(midilib): $(OFILES)
	ar uv $@ $(OFILES)
	ranlib $@

lib:	;	cd /u/psl/midi/`arch`/lib; make

cleanup: ; rm -f *.o errors core a.out

$(DX7O): $(DX7HEADER)
$(MIRO): $(MIRHEADER)
$(IOTO): $(IOTHEADER)
da_head_sx.o: $(MIDHEADER)
$(MIDO): $(MIDHEADER)
$(MISO): $(MISHEADER)
$(MPUO): $(MPUHEADER)
$(AMCO): $(AMCHEADER)

# DEVOFILES
da_head_sx.o:		SRC/da_head_sx.c;		$(C)/da_head_sx.c
## DX7OFILES.o
da_dx7_voice.o:		SRC/da_dx7_voice.c;		$(C)/da_dx7_voice.c
da_vdx7.o:		SRC/da_vdx7.c;			$(C)/da_vdx7.c
dx7_globs.o:		SRC/dx7_globs.c;		$(C)/dx7_globs.c
send_dx7_bd.o:		SRC/send_dx7_bd.c;		$(C)/send_dx7_bd.c
vdx7.o:			SRC/vdx7.c;			$(C)/vdx7.c
getdx7ccname.o:		SRC/getdx7ccname.c;		$(C)/getdx7ccname.c
da_dx7_sx.o:		SRC/da_dx7_sx.c;		$(C)/da_dx7_sx.c
sx_dx7_1v.o:		SRC/sx_dx7_1v.c;		$(C)/sx_dx7_1v.c
sx_dx7_32v.o:		SRC/sx_dx7_32v.c;		$(C)/sx_dx7_32v.c
dx7SetVoice.o:		SRC/dx7SetVoice.c;		$(C)/dx7SetVoice.c
dx7ReadVoice.o:		SRC/dx7ReadVoice.c;		$(C)/dx7ReadVoice.c
dx7GetVoice.o:		SRC/dx7GetVoice.c;		$(C)/dx7GetVoice.c
dx7PutVoice.o:		SRC/dx7PutVoice.c;		$(C)/dx7PutVoice.c
dx7PutControl.o:	SRC/dx7PutControl.c;		$(C)/dx7PutControl.c
dx7PutParameter.o:	SRC/dx7PutParameter.c;		$(C)/dx7PutParameter.c
dx7PutVoiceName.o:	SRC/dx7PutVoiceName.c;		$(C)/dx7PutVoiceName.c
dx7Button.o:		SRC/dx7Button.c;		$(C)/dx7Button.c
dx7sysinfo.o:		SRC/dx7sysinfo.c;		$(C)/dx7sysinfo.c
dx7memprotect.o:	SRC/dx7memprotect.c;		$(C)/dx7memprotect.c
dx7buttoi.o:		SRC/dx7buttoi.c;		$(C)/dx7buttoi.c
tx1v32.o:		SRC/tx1v32.c;			$(C)/tx1v32.c
tx1p64.o:		SRC/tx1p64.c;			$(C)/tx1p64.c
## MIROFILES
mirage_globs.o:		SRC/mirage_globs.c;		$(C)/mirage_globs.c
da_mirage_sx.o:		SRC/da_mirage_sx.c;		$(C)/da_mirage_sx.c
## IOTOFILES
iota_globs.o:		SRC/iota_globs.c;		$(C)/iota_globs.c
da_iota_sx.o:		SRC/da_iota_sx.c;		$(C)/da_iota_sx.c
# MIDOFILES
midi_pk.o:		SRC/midi_pk.c;			$(C)/midi_pk.c
da_midi_cmd.o:		SRC/da_midi_cmd.c;		$(C)/da_midi_cmd.c
da_sx.o:		SRC/da_sx.c;			$(C)/da_sx.c
get_ctl_name.o:		SRC/get_ctl_name.c;		$(C)/get_ctl_name.c
itop.o:			SRC/itop.c;			$(C)/itop.c
midi_cmd_in.o:		SRC/midi_cmd_in.c;		$(C)/midi_cmd_in.c
midi_io.o:		SRC/midi_io.c;			$(C)/midi_io.c
prog_change.o:		SRC/prog_change.c;		$(C)/prog_change.c
send_ch.o:		SRC/send_ch.c;			$(C)/send_ch.c
tcwme.o:		SRC/tcwme.c;			$(C)/tcwme.c
tcip.o:			SRC/tcip.c;			$(C)/tcip.c
banjoplay.o:		SRC/banjoplay.c;		$(C)/banjoplay.c
midiplayinit.o:		SRC/midiplayinit.c;		$(C)/midiplayinit.c
midimerge.o:		SRC/midimerge.c;		$(C)/midimerge.c
miditranspose.o:	SRC/miditranspose.c;		$(C)/miditranspose.c
midistretch.o:		SRC/midistretch.c;		$(C)/midistretch.c
mozart.o:		SRC/mozart.c;			$(C)/mozart.c
mpuclockput.o:		SRC/mpuclockput.c;		$(C)/mpuclockput.c
mputimeshift.o:		SRC/mputimeshift.c;		$(C)/mputimeshift.c
nap.o:			SRC/nap.c;			$(C)/nap.c
fsleep.o:		SRC/fsleep.c;			$(C)/fsleep.c
putnote.o:		SRC/putnote.c;			$(C)/putnote.c
statinfo.o:		SRC/statinfo.c;			$(C)/statinfo.c
# MISOFILES
tunespath.o:		SRC/tunespath.c;		$(C)/tunespath.c
searchpath.o:		SRC/searchpath.c;		$(C)/searchpath.c
tunesfile.o:		SRC/tunesfile.c;		$(C)/tunesfile.c
error.o:		SRC/error.c;			$(C)/error.c
opentune.o:		SRC/opentune.c;			$(C)/opentune.c
# XTROFILES
checksum.o:		SRC/checksum.c;			$(C)/checksum.c
gstring.o:		SRC/gstring.c;			$(C)/gstring.c
iwait.o:		SRC/iwait.c;			$(C)/iwait.c
key2name.o:		SRC/key2name.c;			$(C)/key2name.c
myatoi.o:		SRC/myatoi.c;			$(C)/myatoi.c
owait.o:		SRC/owait.c;			$(C)/owait.c
snooze.o:		SRC/snooze.c;			$(C)/snooze.c
sopen.o:		SRC/sopen.c;			$(C)/sopen.c
strcopy.o:		SRC/strcopy.c;			$(C)/strcopy.c
strpeel.o:		SRC/strpeel.c;			$(C)/strpeel.c
# MPUOFILES
copympucmd.o:		SRC/copympucmd.c;		$(C)/copympucmd.c
dx7_reset.o:		SRC/dx7_reset.c;		$(C)/dx7_reset.c
getmcmd.o:		SRC/getmcmd.c;			$(C)/getmcmd.c
getmpucmd.o:		SRC/getmpucmd.c;		$(C)/getmpucmd.c
mpu_immed.o:		SRC/mpu_immed.c;		$(C)/mpu_immed.c
mpuset.o:		SRC/mpuset.c;			$(C)/mpuset.c
mpuput.o:		SRC/mpuput.c;			$(C)/mpuput.c
mpusend.o:		SRC/mpusend.c;			$(C)/mpusend.c
mpusettrack.o:		SRC/mpusettrack.c;		$(C)/mpusettrack.c
putmpucmd.o:		SRC/putmpucmd.c;		$(C)/putmpucmd.c
putmcmd.o:		SRC/putmcmd.c;			$(C)/putmcmd.c
putamcmd.o:		SRC/putamcmd.c;			$(C)/putamcmd.c
puttcip.o:		SRC/puttcip.c;			$(C)/puttcip.c
puttcwme.o:		SRC/puttcwme.c;			$(C)/puttcwme.c
setmpunote.o:		SRC/setmpunote.c;		$(C)/setmpunote.c
# AMCOFILES
sbsd.o:			SRC/sbsd.c;			$(C)/sbsd.c
