INCDIR = ./include
SRCDIR = ./src
EXDIR =  ./example
LIBDIR = ./lib
CFLAGS = -c -g -I$(INCDIR) 

TESTPORT = 2645

OBJS = $(SRCDIR)/UCTuple.o $(SRCDIR)/UCTFunc.o $(SRCDIR)/UCTFront.o
SRCS = $(SRCDIR)/UCTuple.c $(SRCDIR)/UCTFunc.c $(SRCDIR)/UCTFront.c	
HEADERS = $(INCDIR)/UCTuple.h $(INCDIR)/UCTInclude.h $(INCDIR)/UCTFunc.h

install: $(LIBDIR)/libuct.a
 
$(LIBDIR)/libuct.a: $(OBJS)
	ar r $(LIBDIR)/libuct.a $(OBJS)
	@echo Done.
	
./src/UCTuple.o: $(SRCDIR)/UCTuple.c
	gcc $(CFLAGS) $(SRCDIR)/UCTuple.c -o $@

./src/UCTFunc.o: $(SRCDIR)/UCTFunc.c 
	gcc $(CFLAGS) $(SRCDIR)/UCTFunc.c -o $@

./src/UCTFront.o: $(SRCDIR)/UCTFront.c 
	gcc $(CFLAGS) $(SRCDIR)/UCTFront.c -o $@
	
$(SRCS): $(HEADERS)

#$(SRCDIR)/UCTuple.c: $(HEADERS)

#$(SRCDIR)/UCTFunc.c: $(HEADERS)

#$(SRCDIR)/UCTFront.c: $(HEADERS)

clean: 
	rm -rf src/*.o
	make -C $(EXDIR) -fmakefile clean

cleanall: clean
	rm -rf lib/*.a
	make -C $(EXDIR) -fmakefile cleanall
	
		
ex: $(EXDIR)/mm $(EXDIR)/test

$(EXDIR)/test: $(EXDIR)/example.c $(LIBDIR)/libuct.a
	make -C $(EXDIR) -fmakefile test

$(EXDIR)/mm: $(EXDIR)/Mat_Mult.c  $(LIBDIR)/libuct.a
	make -C $(EXDIR) -fmakefile mm

test: $(EXDIR)/mm
	@echo "Running test program..."
	$(EXDIR)/mm localhost $(TESTPORT) 0 4 5 0 &
	$(EXDIR)/mm localhost $(TESTPORT) 3 4 5 0 &
	$(EXDIR)/mm localhost $(TESTPORT) 2 4 5 0 &
	$(EXDIR)/mm localhost $(TESTPORT) 1 4 5 0 
	@echo Done.

test2: $(EXDIR)/test
	@echo "Running test program2..."
	$(EXDIR)/test localhost $(TESTPORT) 5 6 15 &
	$(EXDIR)/test localhost $(TESTPORT) 4 6 15 &
	$(EXDIR)/test localhost $(TESTPORT) 3 6 15 &
	$(EXDIR)/test localhost $(TESTPORT) 2 6 15 &
	$(EXDIR)/test localhost $(TESTPORT) 1 6 15 & 
	$(EXDIR)/test localhost $(TESTPORT) 0 6 15 
	@echo Done.
	
	
