ROOTSYS = /opt/root/bin
ROOTCINT = $(ROOTSYS)/rootcint
INCDIR = `$(ROOTSYS)/root-config --incdir`
GRUINC = /home/dev/scratch/GRU/include
ROOTINC = /home/daq/scratch/root-5.29.02/io/xmlparser/inc/

CFLAGS = `$(ROOTSYS)/root-config --cflags`
LDFLAGS = `$(ROOTSYS)/root-config --ldflags`
LIBS = `$(ROOTSYS)/root-config --libs`
GRULIBS = -L/usr/local/lib -lGRU

default: library

library: libproduce.so libconsume.so libfilter.so

#pbuffer.dict.C: pbuffer.h base_class.h
#	$(ROOTCINT) -f $@ -c -p $^

libproduce.so:libproduce.o base_code.o pbuffer.o 
	gcc  $(CFLAGS) $(LDFLAGS) $(LIBS) -shared -o libproduce.so libproduce.o \
	base_code.o pbuffer.o

libconsume.so:libconsume.o base_code.o cbuffer.o 
	gcc  $(CFLAGS) $(LDFLAGS) $(LIBS) -shared -o libconsume.so libconsume.o \
	base_code.o cbuffer.o

libfilter.so:libfilter.o base_code.o fbuffer.o 
	gcc  $(CFLAGS) $(LDFLAGS) $(LIBS) $(GRULIBS) -shared -o libfilter.so libfilter.o \
	base_code.o fbuffer.o

libproduce.o:libproduce.cc
	g++ $(CFLAGS) -I$(INCDIR) -c -fPIC -Wall -I. libproduce.cc

libconsume.o:libconsume.cc
	g++ $(CFLAGS) -I$(INCDIR) -c -fPIC -Wall -I. libconsume.cc

libfilter.o:libfilter.cc
	g++ $(CFLAGS) -I$(INCDIR) -I$(GRUINC) -I$(ROOTINC) -c -fPIC -Wall -I. libfilter.cc

base_code.o:base_code.cc base_class.h
	g++ $(CFLAGS) -I$(INCDIR) -c -fPIC -Wall -I. base_code.cc

pbuffer.o:pbuffer.cc base_class.h pbuffer.h
	g++ $(CFLAGS) -I$(INCDIR) -c -fPIC -Wall -I. pbuffer.cc

cbuffer.o:cbuffer.cc base_class.h cbuffer.h
	g++ $(CFLAGS) -I$(INCDIR) -c -fPIC -Wall -I. cbuffer.cc

fbuffer.o:fbuffer.cc base_class.h fbuffer.h
	g++ $(CFLAGS) -I$(INCDIR) -I$(GRUINC) -I$(ROOTINC) -c -fPIC -Wall -I. fbuffer.cc

clean:
	rm -f *.o *.so  
