.POSIX:

##flags
CFLAGS = -g -Wall -O3 -I include
MATH_LIB = -lm -lgsl -lgslcblas

##variables
BUILDDIR = build
SRCDIR = src
RNACOP_PLAETEAU_OBJECTS = file matrix plateau utility disjoint
#EXEC = testextension
#EXECNAME = testextension
EXEC_REGION = findgoodregion
EXECNAME_REGION = findgoodregion
EXEC_PLATEAU = findplateau
EXECNAME_PLATEAU = findplateau

##rules

#all
.PHONY: all
all: $(addprefix $(BUILDDIR)/, $(RNACOP_PLAETEAU_OBJECTS:%=%.o)) $(EXECNAME_REGION) $(EXECNAME_PLATEAU)


#plateau objects
$(addprefix $(BUILDDIR)/, $(RNACOP_PLAETEAU_OBJECTS:%=%.o)): $(addprefix $(SRCDIR)/, $(RNACOP_PLAETEAU_OBJECTS:%=%.c))
	@echo compiling $@ ...
	@$(CC) $(CFLAGS) -c $(addprefix $(SRCDIR)/, $(*F).c ) -o $@ $(MATH_LIB)


#command-line tools
$(EXECNAME_REGION): $(addprefix $(BUILDDIR)/, $(RNACOP_PLAETEAU_OBJECTS:%=%.o)) $(addprefix $(SRCDIR)/, $(EXEC_REGION:%=%.c))
	@echo compiling $@ ... 
	@$(CC) $(CFLAGS) $^ -o $@ $(MATH_LIB)
	@echo ..done.

$(EXECNAME_PLATEAU): $(addprefix $(BUILDDIR)/, $(RNACOP_PLAETEAU_OBJECTS:%=%.o)) $(addprefix $(SRCDIR)/, $(EXEC_PLATEAU:%=%.c))
	@echo compiling $@ ... 
	@$(CC) $(CFLAGS) $^ -o $@ $(MATH_LIB)
	@echo ..done.

#remove
.PHONY: clean
clean:
	@rm -vf $(addprefix $(BUILDDIR)/, $(RNACOP_PLAETEAU_OBJECTS:%=%.o))
	@rm -vf $(EXECNAME_REGION)
	@rm -vf $(EXECNAME_PLATEAU)
