#
# Makefile for MIDI library
#


#
# Automagic configuration via the make-config options
#
include ../Make-config


# 
# Uncomment one of the following options
#

#OS = -DBSD    # BSDish OS's
#OS = -DSYSV   # System V type OS's

#
# Message Queueing Configuration
#

#MIDIQ = -DPOSIXQUEUES
#MIDIQ = -DSYSVQUEUES

#
# Real-time scheduler capability
#

#REALTIME = -DNOREALTIME        # No realtime capability
#REALTIME = -DSOLARISREALTIME   # Solaris 2.x scheduler code

#AR = ar
#ARFLAGS = rv
#RANLIB = ranlib
#RANLIB = touch

#CC = cc
CFLAGS = $(OPTS) $(OS) $(MIDIQ) $(REALTIME) 
LFLAGS = $(LIBS)

all : buildmsg install

buildmsg:
	@echo ""
	@echo "Building midid, miditest, midipanic, libmidi.a ..."

install: midid midiin miditest midipanic libmidi.a midiapi.h
	@echo "installing binaries in ../bin"
	@rm -f ../bin/midid
	@cp midid    ../bin/midid
	@rm -f ../bin/miditest
	@cp miditest ../bin/miditest
	@rm -f ../bin/midiin
	@cp midiin ../bin/midiin
	@rm -f ../bin/midipanic
	@cp midipanic ../bin/midipanic
	@echo "installing libraries in ../lib"
	@rm -f ../lib/libmidi.a
	@cp libmidi.a ../lib/libmidi.a
	@echo "installing headers in ../include"
	@rm -f ../include/midiapi.h
	@cp midiapi.h ../include/midiapi.h
	
OBJS = seq.o realtime.o daemon.o msgq.o midiapi.o \
	rawserial.o devices.o rawdevice.o \
	filedrv.o filetdrv.o ms124t.o ms124w.o \
	nulldrv.o sgidrv.o sc7drv.o sc88drv.o

libmidi.a : midiapi.o msgq.o midiapi.h
	$(AR) $(ARFLAGS) libmidi.a midiapi.o msgq.o
	$(RANLIB) libmidi.a

midid : $(OBJS)
	$(CC) $(CFLAGS) $(OBJS) -o midid $(LFLAGS)

msgsnd : msgsnd.c msgq.o 
	$(CC) $(CFLAGS) msgsnd.c msgq.o -o msgsnd $(LFLAGS)

#loopback : loopback.c midiator.o rawserial.o
#	$(CC) $(CFLAGS) loopback.c rawserial.o midiator.o -o loopback $(LFLAGS)

midiin : midiin.c libmidi.a
	$(CC) $(CFLAGS) midiin.c -o midiin -L. -lmidi $(LFLAGS)

miditest : miditest.c libmidi.a
	$(CC) $(CFLAGS) miditest.c -o miditest -L. -lmidi $(LFLAGS)

midipanic : midipanic.c libmidi.a
	$(CC) $(CFLAGS) midipanic.c -o midipanic -L. -lmidi $(LFLAGS)

#
# Core MIDI daemon and driver codes.
#

seq.o : seq.c seq.h  
	$(CC) $(CFLAGS) -c seq.c

daemon.o : daemon.c daemon.h
	$(CC) $(CFLAGS) -c daemon.c

devices.o : devices.c devices.h
	$(CC) $(CFLAGS) -c devices.c

msgq.o : msgq.c msgq.h 
	$(CC) $(CFLAGS) -c msgq.c

filedrv.o : filedrv.c filedrv.h rawdevice.h
	$(CC) $(CFLAGS) -c filedrv.c

filetdrv.o : filetdrv.c filetdrv.h rawdevice.h
	$(CC) $(CFLAGS) -c filetdrv.c

ms124t.o : ms124t.c ms124t.h
	$(CC) $(CFLAGS) -c ms124t.c 

ms124w.o : ms124w.c ms124w.h
	$(CC) $(CFLAGS) -c ms124w.c 

nulldrv.o : nulldrv.c nulldrv.h
	$(CC) $(CFLAGS) -c nulldrv.c

sgidrv.o : sgidrv.c sgidrv.h
	$(CC) $(CFLAGS) -c sgidrv.c

sc7drv.o : sc7drv.c sc7drv.h
	$(CC) $(CFLAGS) -c sc7drv.c

sc88drv.o : sc88drv.c sc88drv.h
	$(CC) $(CFLAGS) -c sc88drv.c

midiapi.o : midiapi.c midiapi.h msgq.h
	$(CC) $(CFLAGS) -c midiapi.c

rawdevice.o : rawdevice.c rawdevice.h
	$(CC) $(CFLAGS) -c rawdevice.c

rawserial.o : rawserial.c rawserial.h
	$(CC) $(CFLAGS) -c rawserial.c

realtime.o : realtime.c realtime.h
	$(CC) $(CFLAGS) -c realtime.c

clean :
	-rm -f *.o libmidi.a midid midiin midiin miditest midipanic msgsnd loopback 
	-rm -f ../bin/midid
	-rm -f ../bin/miditest
	-rm -f ../bin/midiin
	-rm -f ../bin/midipanic
	-rm -f ../lib/libmidi.a
	-rm -f ../include/midiapi.h



