CC=g++
CFLAGS=-c -Wall -O3 -std=c++0x
LDFLAGS=

vpath %.cpp src

SOURCES=gkmCommonLib.cpp\
		Converter.cpp\
		Sequence.cpp\
		CountKLmers.cpp\
		KLmer.cpp\
		CountKLmersGeneral.cpp\
		CalcWmML.cpp\
		MLEstimKLmers.cpp\
		MLEstimKLmersLog.cpp\
		EstimLogRatio.cpp\
		SequenceNames.cpp\
		SequenceData.cpp\
		LKTree.cpp\
		CountKLmersH.cpp\
		LTree.cpp\
		LTreef.cpp\
		LTreeS.cpp\
		LList.cpp\
		global.cpp\
		SVMtrain.cpp


OBJECTS=$(patsubst %.cpp,obj/%.o,$(SOURCES)) 

SRC_GKMKERNEL=mainGkmKernel.cpp
OBJ_GKMKERNEL=obj/mainGkmKernel.o
GKMKERNEL=gkmsvm_kernel

SRC_SVMTRAIN=mainSVMtrain.cpp
OBJ_SVMTRAIN=obj/mainSVMtrain.o
SVMTRAIN=gkmsvm_train

SRC_SVMCLASSIFY=mainSVMclassify.cpp
OBJ_SVMCLASSIFY=obj/mainSVMclassify.o
SVMCLASSIFY=gkmsvm_classify

all: $(SOURCES) $(GKMKERNEL) $(SVMTRAIN) $(SVMCLASSIFY)

clean:
	rm -f $(OBJECTS) $(OBJ_GKMKERNEL) $(OBJ_SVMTRAIN) $(OBJ_SVMCLASSIFY) $(GKMKERNEL) $(SVMTRAIN) $(SVMCLASSIFY)

obj/%.o : %.cpp
	@mkdir -p $(@D)
	$(CC) $(CFLAGS) $< -o $@

$(GKMKERNEL): $(OBJECTS) $(OBJ_GKMKERNEL)
	$(CC) $(LDFLAGS) $(OBJECTS) $(OBJ_GKMKERNEL) -o $@

$(SVMTRAIN): $(OBJECTS) $(OBJ_SVMTRAIN)
	$(CC) $(LDFLAGS) $(OBJECTS) $(OBJ_SVMTRAIN) -o $@

$(SVMCLASSIFY): $(OBJECTS) $(OBJ_SVMCLASSIFY)
	$(CC) $(LDFLAGS) $(OBJECTS) $(OBJ_SVMCLASSIFY) -o $@
