# Makefile for persistency test

LIB_SOURCES = 			\
	DataObject.cpp		\
	Track.cpp 		\
	dict.cpp

LIB_OBJECTS = $(LIB_SOURCES:%.cpp=%.o)

LIB_NAME=Persistency
LIB_SONAME=$(LIB_NAME:%=lib%.so)
LIB_LDFLAGS := -L/usr/lib/root -lReflex

BINARIES =		\
	test_write	\
	test_read	\
	test_DataVector

CPP = g++
LINK = g++
CPPFLAGS := -I. -I/usr/include/root -ggdb -pipe -march=core2 -fPIC -mssse3 -Wall
LDFLAGS := -L/usr/lib/root -lCore -lReflex -lCintex -lTree

DEPDIR = .deps
df = $(DEPDIR)/$(*F)

.phony: all clean distclean

all: $(BINARIES)

%.o : %.cpp
	$(CPP) $(CPPFLAGS) -MMD -c $<
	@mkdir -p .deps
	@cp $*.d $(df).P; \
	  sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
              -e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $(df).P; \
          rm -f $*.d

-include $(LIB_SOURCES:%.cpp=$(DEPDIR)/%.P)
-include $(BINARIES:%=$(DEPDIR)/%.P)

dict.cpp: dict.h selection.xml
	genreflex dict.h -o $@ -s selection.xml -I. -I/usr/include/root

test_write: $(LIB_SONAME) test_write.o
	g++ -o $@ $(LDFLAGS) -L. -l$(LIB_NAME) $(@:%=%.o)

test_read: $(LIB_SONAME) test_read.o
	g++ -o $@ $(LDFLAGS) -L. -l$(LIB_NAME) $(@:%=%.o)

test_DataVector: test_DataVector.o DataObject.o
	g++ -o $@ -lboost_thread $^

$(LIB_SONAME): $(LIB_OBJECTS)
	$(LINK) -shared $(LIB_LDFLAGS) $^ -o  $@

clean:
	-rm $(LIB_SONAME) $(BINARY) *.o dict.cpp \
	test_read test_write test_DataVector

distclean: clean
	-rm -rf .deps
