CC = g++
AR = ar
LIB= -lstdc++

CFLAGS += -O6
#CFLAGS += -g 
# CFLAGS += -DALPHA
# CFLAGS += -DDEBUG

# Flags for GCC
CFLAGS += -Wall

# This allow you to write "make PURE=purify demo1"
# or "make PURE=quantify lib2"
CCPURE = $(PURE) $(CC)

ALIGNSRCS = SRC/Affinity.cpp SRC/Dtw.cpp SRC/t2p_align_from_affinities.cpp 
ALIGNCHDRS =  SRC/Affinity.hpp SRC/Dtw.hpp SRC/AffinityCounter.hpp

AFFINITYSRCS =  SRC/t2p_affinities_from_align.cpp
AFFINITYHDRS =  

BINSRCS =  $(ALIGNSRCS) $(AFFINITYSRCS)
BINDIR = Bin

ALIGNOBJS = $(ALIGNSRCS:%.cpp=$(BINDIR)/%.o)
AFFINITYOBJS = $(AFFINITYSRCS:%.cpp=$(BINDIR)/%.o)
PROJ = t2p_align_from_affinities.$(OSTYPE)

BINOBJS= $(ALIGNOBJS) $(AFFINITYOBJS)

all: affinity affinity2 align

align: install $(ALIGNOBJS) 
	$(CCPURE) $(CFLAGS) -o $(HOME)/BIN/$(OSTYPE)/t2p_align_from_affinities $(ALIGNOBJS) $(LIB) -lm

affinity: install $(AFFINITYOBJS) 
	$(CCPURE) $(CFLAGS) -o $(HOME)/BIN/$(OSTYPE)/t2p_affinities_from_align $(AFFINITYOBJS) $(LIB) 

affinity2: install 
	$(CCPURE) $(CFLAGS) -o $(HOME)/BIN/$(OSTYPE)/t2p_affinities_from_dictionary SRC/t2p_affinities_from_dictionary.cpp $(LIB) 


$(BINDIR)/%.o: %.cpp
	$(CCPURE) $(CFLAGS) -o $@ -c $<

clean:
	\rm -f $(PROJ).a core demo* TAGS $(BINOBJS) 

net:
	\rm -f *~ */*~

spotless: clean net
	\rm -rf Bin $(PROJ)

install: 
	if [ ! -d Bin ]; then \
	mkdir Bin Bin/SRC ;\
	fi
	if [ ! -d $(HOME)/BIN ]; then \
	mkdir $(HOME)/BIN ;\
	fi
	if [ ! -d $(HOME)/BIN/$(OSTYPE) ]; then \
	mkdir $(HOME)/BIN/$(OSTYPE) ;\
	fi
