MODULES = ../modules/
OBJECTS = ../modules/
KMEANSDIR = ../kmeans/
RLSDIR = ../rls/
OPT     = -g -Wall -I. -I$(MODULES) -I$(KMEANSDIR) -I$(RLSDIR)
LOPT    = -lm
PROG = cbnn

# From the following line $(OBJECTS)solution.o is omitted because it had a
# function FreeSolution() which already rls.o has with same name. This
# omission caused no problems during compilation.

DEPENDS = $(OBJECTS)cb.o $(OBJECTS)sa.o $(OBJECTS)memctrl.o $(OBJECTS)random.o $(OBJECTS)interfc.o $(OBJECTS)file.o $(OBJECTS)sortcb.o $(OBJECTS)sort.o $(OBJECTS)heap.o $(OBJECTS)stack.o pnnfast.o pnngraph.o $(OBJECTS)pnn.o MST_Prim.o neighb.o FastMST.o MSTKruskal.o kMSTKruskal.o $(OBJECTS)reporting.o $(OBJECTS)rls.o $(OBJECTS)kmeans.o FastkNN.o

all: $(PROG)

# cbnn
$(PROG): $(PROG).o $(DEPENDS) 
	gcc $(LOPT) -o $(PROG) $(PROG).o $(DEPENDS) 
$(PROG).o: $(PROG).c
	gcc $(OPT) -c $(PROG).c -o $(PROG).o

clean: 
	rm *.o cbnn

# Modules 
%.o: %.c
	gcc $(OPT) -c $< -o $@

$(OBJECTS)%.o: $(MODULES)%.c
	gcc $(OPT) -c $< -o $@

# R L S   M O D U L E S                                                         
$(MODULES)reporting.o: $(RLSDIR)reporting.c
	gcc -c $(OPT) $(RLSDIR)reporting.c -o $(MODULES)reporting.o

$(MODULES)rls.o: $(RLSDIR)rls.c
	gcc -c $(OPT) $(RLSDIR)rls.c -o $(MODULES)rls.o


# K- M E A N S   M O D U L E
$(OBJECTS)kmeans.o: $(KMEANSDIR)kmeans.c
	gcc $(OPT) -c kmeans.c -o kmeans.o


