# Makefile for jazz

# wxwin 1.65, needed for xview/motif
WXDIR = /usr/local/wxwin

# Xt-port of wxwin, needed for xt-Version
WXXT  = /usr/local/wxxt-1.64

#GUI=motif
GUI=xview
#GUI=xt

LFLAGS = # -static

all : $(GUI)/jazz showdev

#CFLAGS=-Wall -g 
#CFLAGS = -O2 #-Wall #-fno-for-scope
CFLAGS= -O6

# ----------------------------------------------------
# platform dependencies
# ----------------------------------------------------


# ----- xview -----
ifeq ($(GUI),xview)
OWDIR = /usr/openwin

INC =	-I$(WXDIR)/include/base -I$(WXDIR)/include/x -I$(OWDIR)/include # -I../../../../include
LIB =	-L$(OWDIR)/lib -L/usr/X11/lib -L$(WXDIR)/lib \
	-lwx_ol -lxview -lolgx -lX11 -lm -lstdc++ -lg++

DEFINES = -Dwx_xview # -DSYSV
ADDOBJS = xview/sb_scrol.o

else

# ------ xt ----------

ifeq ($(GUI),xt)
INC =	-I$(WXXT)/src -I$(WXXT)/src/AIAI-include
#INC =	-I$(WXXT)/include -I$(WXXT)/include/AIAI-includes
LIB = $(WXXT)/src/libwx_xt.a -L/usr/X11R6/lib -lXaw -lXmu -lXt -lSM -lICE -lXExExt -lXext -lX11 -lXt -lSM -lICE -lXExExt -lXext -lX11 -lstdc++ -lXpm -lm  -Wl,-rpath,/usr/X11R6/lib
DEFINES = -D_NO_USES_DEFINES -Dwx_xt

else

# ----- motif -----

INC = 	-I$(WXDIR)/include/base -I$(WXDIR)/include/x -I/usr/include/X11
LIB = 	-L/usr/X11/lib -L$(WXDIR)/lib -lwx_motif -lXm -lXpm -lXt -lSM -lICE -lXext -lX11 -lm # -lsocket -lnsl
DEFINES = -Dwx_motif # -DSYSV
ADDOBJS = 

endif
endif

# ---------------------------------------------------

$(GUI)/depend:
	if test -d $(GUI); then true; else mkdir $(GUI); fi
	gcc -Dwx_$(GUI) $(INC) -MM *.cc | sed 's/^[a-zA-Z0-9_][^.]*/$(GUI)\/&/' > $(GUI)/depend


OBJ1 =  $(GUI)/hbanalyz.o $(GUI)/toolbar.o $(GUI)/harmonyp.o $(GUI)/harmony.o \
	$(GUI)/guitar.o $(GUI)/ctrledit.o $(GUI)/dynarray.o $(GUI)/random.o \
	$(GUI)/rhythm.o $(GUI)/pianowin.o $(GUI)/player.o $(GUI)/eventwin.o \
	$(GUI)/trackwin.o $(GUI)/jazz.o $(GUI)/events.o $(GUI)/track.o \
	$(GUI)/song.o $(GUI)/mstdfile.o $(GUI)/util.o $(GUI)/dialogs.o \
	$(GUI)/maction.o $(GUI)/filter.o $(GUI)/command.o \
	$(GUI)/gs_dlg1.o $(GUI)/gs_dlg2.o \
	$(GUI)/about.o 

OBJ2 = 	$(GUI)/midinet.o $(GUI)/midi_p_xdr.o $(ADDOBJS)

midi_p.x: ../midinetd/midi_p.x
	ln -s ../midinetd/midi_p.x .
	rm -f midi_p.h midi_p_xdr.c midi_p_clnt.c
	rpcgen -h midi_p.x > midi_p.h
	rpcgen -c midi_p.x > midi_p_xdr.c
	rpcgen -l midi_p.x > midi_p_clnt.c

midi_p.h: midi_p.x
	rpcgen -h midi_p.x > midi_p.h

midi_p_xdr.c: midi_p.x
	rpcgen -c midi_p.x > midi_p_xdr.c

midi_p_clnt.c: midi_p.x
	rpcgen -l midi_p.x > midi_p_clnt.c

$(GUI)/midi_p_xdr.o: midi_p_xdr.c midi_p.h

$(GUI)/midinet.o: midinet.c midi_p.h midi_p_clnt.c

$(OBJ1) : $(GUI)/%.o : %.cc
	gcc -c $(CFLAGS) $(DEFINES) $(INC) $< -o $@

$(OBJ2) : $(GUI)/%.o : %.c
	gcc -c $(CFLAGS) $(DEFINES) $(INC) $< -o $@

$(GUI)/jazz : $(OBJ1) $(OBJ2)
	g++ $(LFLAGS) -o $@ $^ $(LIB)
	sync

clean:
	rm -rf $(GUI) showdev midi_p.x midi_p.h midi_p_xdr.c midi_p_clnt.c *.o errlist core

include $(GUI)/depend
