all:
	@make all_handle

all_handle: ef-test hst-test alg gen 

.c.o:
	@$(CC) $(CFLAGS) -c -o $*.o $< >> $(BUILD_LOG) 2>&1

graph-test: graph-test.o
	@echo -e "\t\t-> ($@)"
	@$(CC) $(CFLAGS) -o $@ $@.o -l$(MONO_LIBNAME) -l$(EXCEPTION_LIBNAME)

list-test: list-test.o
	@echo -e "\t\t-> ($@)"
	@$(CC) $(CFLAGS) -o $@ $@.o -l$(ALG_LIBNAME) -l$(MONO_LIBNAME) -l$(EXCEPTION_LIBNAME)


ef-parta: ef-parta.o
	@echo -e "\t\t-> ($@)"
	@$(CC) $(CFLAGS) -o $@ $@.o -l$(ALG_LIBNAME) -l$(MONO_LIBNAME) -l$(EXCEPTION_LIBNAME)

ef-partb: ef-partb.o
	@echo -e "\t\t-> ($@)"
	@$(CC) $(CFLAGS) -o $@ $@.o -l$(ALG_LIBNAME) -l$(MONO_LIBNAME) -l$(EXCEPTION_LIBNAME)

ef-partc: ef-partc.o
	@echo -e "\t\t-> ($@)"
	@$(CC) $(CFLAGS) -o $@ $@.o -l$(ALG_LIBNAME) -l$(MONO_LIBNAME) -l$(EXCEPTION_LIBNAME)

ef-test: ef-test.o
	@echo -e "\t\t-> ($@)"
	@$(CC) $(CFLAGS) -o $@ $@.o -l$(GENERATOR_LIBNAME) -l$(ALG_LIBNAME) -l$(MONO_LIBNAME) -l$(EXCEPTION_LIBNAME)

hst-test: hst-test.o
	@echo -e "\t\t-> ($@)"
	@$(CC) $(CFLAGS) -o $@ $@.o -l$(GENERATOR_LIBNAME) -l$(ALG_LIBNAME) -l$(MONO_LIBNAME) -l$(EXCEPTION_LIBNAME)

alg: alg.o
	@echo -e "\t\t-> ($@)"
	@$(CC) $(CFLAGS) -o $@ $@.o -l$(GENERATOR_LIBNAME) -l$(ALG_LIBNAME) -l$(MONO_LIBNAME) -l$(EXCEPTION_LIBNAME)

gen: gen.o
	@echo -e "\t\t-> ($@)"
	@$(CC) $(CFLAGS) -o $@ $@.o -l$(GENERATOR_LIBNAME) -l$(ALG_LIBNAME) -l$(MONO_LIBNAME) -l$(EXCEPTION_LIBNAME)

clean:
	@echo -e "\t[Cleaning Test Tree]"
	@rm -rf graph-test list-test ef-parta ef-partb ef-partc gen ef-test hst-test alg
	@rm -rf $(BUILD_LOG)
	@rm -rf *.o
	@rm -rf core*
