# General Purpose Makefile 

# Put the program name (executable file) here
CC=g++-2.1
# -O optimization -g debugging info
CFLAGS =  -O # -g
LIBS = -L../lib -lmuslib


all : note train

# primary object files
OBJ= note_net.o freq_ins.o range.o nfiles.o infft.o note_util.o
TR_OBJ= intrain.o train_nn.o

NLIB = ../lib/libmuslib.a

nlib $(NLIB): $(OBJ)
	ar rv $(NLIB) $(OBJ)
	ranlib $(NLIB)

# Meta Rule for compiling .C extensions
# I have selected as C++ extension the .C one.
.cc.o :
	$(CC) $(CFLAGS) -c $*.cc

.C.o :
	$(CC) $(CFLAGS) -c $*.C

#($OBJ) : $*.C

ranger.o : ranger.cc note_net.h
	$(CC) $(CFLAGS) -c ranger.cc

range.o : range.cc note_net.h
	$(CC) $(CFLAGS) -c range.cc

ranger : ranger.o range.o note_net.h
	$(CC) $(CFLAGS) -o $@ $@.o range.o

note_net.o : note_net.cc note_net.h
	$(CC) $(CFLAGS) -c note_net.cc

train_nn.o : train_nn.cc note_net.h train_nn.h
	$(CC) $(CFLAGS) -c train_nn.cc

freq_ins.o : freq_ins.cc note_net.h
	$(CC) $(CFLAGS) -c freq_ins.cc

nfiles.o : nfiles.cc note_net.h
	$(CC) $(CFLAGS) -c nfiles.cc

train.o : train.cc note_net.h train_nn.h
	$(CC) $(CFLAGS) -c train.cc

infft.o : infft.cc note_net.h infft.h
	$(CC) $(CFLAGS) -c infft.cc

intrain.o : intrain.cc note_net.h infft.h intrain.h
	$(CC) $(CFLAGS) -c intrain.cc

note_util.o : note_util.cc note_net.h note_util.h
	$(CC) $(CFLAGS) -c note_util.cc

showin : showin.o $(NLIB)
	$(CC) $(CFLAGS) -o $@ $@.o $(LIBS)

note : note.o $(NLIB)
	$(CC) $(CFLAGS) -o $@ $@.o $(LIBS)

train : train.o $(TR_OBJ) $(NLIB)
	$(CC) $(CFLAGS) -o $@ $@.o $(TR_OBJ) $(LIBS)




