midi	=/u/psl/MIDI
bin	= $(midi)/bin
man	= $(midi)/man/man1
lib	= $(midi)/lib
midilib	= $(lib)/libmidi.a
l	= $(midilib)
CFLAGS	= -O -I$(midi)/include -DSUN
L	= rm -f $(bin)/$@; ln $@ $(bin)/$@
C	= cc -o $@ $(CFLAGS) $@.o $(l); $(L)
Cm	= cc -o $@ $(CFLAGS) $@.o $(l) -lm; $(L)
Cp	= cc -o $@ $(CFLAGS) $@.o $(l) -lplot; $(L)
SLIBS	= -lsuntool -lsunwindow -lpixrect
Cs	= cc -o $@ $(CFLAGS) $@.o $(l) $(SLIBS); $(L)
Csmp	= cc -o $@ $(CFLAGS) $@.o $(l) $(SLIBS) /u/psl/.../glib.a -lm; $(L)
Csg	= cc -o $@ -g $(CFLAGS) $@.o $(l) $(SLIBS); $(L)
rm	= rm -f

.SUFFIXES: .c .lint

.c.lint:
	lint -I$(midi)/include -DSUN -DLINT -hv $*.c 2>$*.lint 1>&2

default: ched

ALL	= play record merge newmerge transpose stretch da ra therm metro just \
	printman marteau marteauslide xtoa atox \
	dx7but dx7tune muzak vget vprint vput voxname \
	adjust adtobb axtobb bars bbtoad bbtoax byteval \
	cc2gc ccc chart ched chmap chpress cntl cs \
	dack dp2mpu fade fract gc2mpu inst \
	key2name keyvel kmap m2mpu mecho mfm mg midimode mirbut mirpar mirset \
	mixer mixer_sa mixplay mjoin mpp \
	mpu2m mpu2midi mpuclean mpumon mpureset \
	name2key notedur numev pbend pharm qwe rpts resid rtloop rxkey \
	scat select sing stats sxmon sxmpu sxstrip \
	tab2mpu tempo tmod trim tshift txeld txget txput txvmrg unjust \
	vegplot vmod vpr

play:	play.o;		$(C)
record:	record.o;	$(C)
merge:	merge.o;	$(C)
newmerge:	newmerge.o;	$(C)
stretch: stretch.o;	$(C)
transpose: transpose.o;	$(C)
da:	da.o $(l);	$(C)
ra:	ra.o;		$(C)
just:	just.o;		$(C)
patch:	patch.o;	$(C)
xtoa:	xtoa.o;		$(C)
atox:	xtoa;		$(rm) atox; ln xtoa atox; $(L)
marteau:marteau.o;	$(C)
marteauslide:marteauslide.c; sc $@.c
therm:	therm.c;	c $@.c
metro:	metro.c;	c $@.c
dx7but:	dx7but.o;	$(C)
dx7tune:dx7tune.o;	$(C)
muzak:	muzak.o;	$(C)
vget:	vget.o;		$(C)
vprint:vprint.o;	$(C)
vput:	vput.o;		$(C)
voxname:voxname.o;	$(C)
adjust:	adjust.o;	$(C)
adtobb:	adtobb.o;	$(C)
axtobb:	axtobb.o;	$(C)
bars:	bars.o;		$(C)
bbtoad:	adtobb;		$(rm) bbtoad; ln adtobb bbtoad; $(L)
bbtoax:	axtobb;		$(rm) bbtoax; ln axtobb bbtoax; $(L)
byteval:byteval.o;	$(C)
cc2gc:	cc2gc.o;	$(C)
ccc:	ccc.o;		$(C)
ched:	ched.o;		$(Cs)
chart:	chart.o;	$(Cs)
chmap:	chmap.o;	$(C)
chpress:	chpress.o;	$(C)
cntl:	cntl.o;		$(C)
cs:	cs.o;		$(C)
dack:	dack.o;		$(C)
dp2mpu:	dp2mpu.o;	$(C)
fade:	fade.o;		$(C)
fract:	fract.o;	$(C)
gc2mpu:	gc2mpu.o;	$(C)
inst:	inst.o;		$(C)
key2name:key2name.o;	$(C)
keyvel:	keyvel.o;	$(Cm)
kmap:	kmap.o;		$(C)
m2mpu:	m2mpu.o;	$(C)
mecho:	mecho.o;	$(C)
mfm:	mfm.o;		$(Csmp)
mg:	mg.o;		$(C)
midimode:midimode.o;	$(C)
mirbut:	mirbut.o;	$(C)
mirpar:	mirpar.o;	$(Cs)
mirset:	mirset.o;	$(C)
mix:	mix.o;		$(Cs)
mixer:	mixer.o ;	$(Cs)
mixer_sa:mixer_sa.o ;	$(Cs)
mixplay:mixplay.o ;	$(Cs)
mjoin:	mjoin.o;	$(C)
mpp:	mpp.o;		$(C)
mpu2m:	mpu2m.o;	$(C)
mpu2midi:mpu2midi.o;	$(C)
mpu2pc:	mpu2pc.o;	$(C)
x:	x.o;	$(C)
mpuclean:mpuclean.o;	$(C)
mpumon:mpumon.o;	$(C)
mpureset:mpureset.o;	$(C)
name2key:key2name;	$(rm) name2key; ln key2name name2key; $(L)
notedur:notedur.o;	$(C)
numev:	numev.o;	$(C)
pbend:	pbend.o;	$(C)
pharm:	pharm.o;	$(C)
qwe:	qwe.o;		$(Cs)
resid:	resid.o;	$(C)
rpts:	rpts.o;		$(C)
rtloop:	rtloop.o;	$(C)
rxkey:	rxkey.o;	$(C)
scat:	scat.o;		$(C)
select:	select.o $(l);	$(C)
sing:	sing.o;		$(C)
stats:	stats.o;	$(C)
sxmon:	sxmon.o $(l);	$(C)
sxmpu:	sxmpu.o $(l);	$(C)
sxstrip:sxstrip.o;	$(C)
tab2mpu:tab2mpu.o $(l);	$(C)
tempo:	tempo.o $(l);	$(C)
tmod:	tmod.o;		$(C)
trim:	trim.o $(l);	$(C)
tshift:	tshift.o $(l);	$(C)
txeld:	txeld.o $(l);	$(C)
txget:	txget.o $(l);	$(C)
txput:	txput.o $(l);	$(C)
txvmrg:	txvmrg.o $(l);	$(C)
unjust:	unjust.o $(l);	$(C)
vegplot:vegplot.o;	$(Cp)
vmod:	vmod.o;		$(C)
vpr:	vpr.o;		$(C)

install: all
	for i in $(ALL); do \
		$(rm) $(bin)/$$i; ln $$i $(bin); \
		$(rm) $(man)/$$i.1; ln $$i.1 $(man); \
	done

cleanup:; $(rm) *.o core errors .comfile

# unused: mpustuff.c mpusxflt.c mpusxstuff.c stub.c vload.c stuff.c
