AFILE 		=	SylvacDialBleControl
LFILE 		=	SylvacDialBle

INCLUDE 	=	-I$(MARABOU)/include
OBJPATH		= .

ROOTCFLAGS	=	$(shell root-config --cflags)
ROOTLIBS	=	$(shell root-config --libs)
ROOTGLIBS	=	$(shell root-config --glibs)

# Linux
CXX 		=	g++
CC 		=	g++
CXXFLAGS	=	-g -c -O -fPIC -Wno-write-strings $(INCLUDE) -I./

LD			=	g++
LFLAGS		=	-g
LDFLAGS  =  -shared -fPIC -Wl,--no-undefined  -Wl,-soname,
CXXFLAGS	+=	$(ROOTCFLAGS)
LIBS		=	$(ROOTLIBS)
GLIBS		=	-L$(ROOTSYS)/lib -lGraf $(ROOTGLIBS)


# Header files which SylvacDialBle depends on
USER_HDRS	= $(AFILE).h $(LFILE).h apitypes.h  cmd_def.h  uart.h

# User code to be compiled separately
USER_CODE	=	cmd_def.c stubs.c  uart.c
USER_OBJS	=	cmd_def.o stubs.o  uart.o
# User libs to be loaded
USER_LIBS	= libSylvacDialBle.so  $(MARABOU)/lib/libTGMrbUtils.so
SOURCES        := $(wildcard *.c)
SOURCES += SylvacDialBle.cxx
INCLUDES  := $(filter-out LinkDef%,$(wildcard *.h))
$(info SOURCES = $(SOURCES))
$(info INCLUDES = $(INCLUDES))
ALL			=   plsurvey.exe
.SUFFIXES:	.cxx .h .c

#------------------------------------------------------------------------------

all:		$(SOURCES) $(INCLUDES) lib$(AFILE).so  lib$(LFILE).so plsurvey.exe

plsurvey.exe:	main.o lib$(AFILE).so $(USER_LIBS) lib$(LFILE).so
	$(info LFILE = lib$(LFILE).so)
			$(LD) $(LFLAGS) main.o  lib$(AFILE).so $(USER_LIBS) $(ROOTGLIBS) -o plsurvey.exe
			
lib$(AFILE).so: $(USER_OBJS) $(AFILE).o $(AFILE)Dict.o lib$(LFILE).so
			$(CXX) $(LDFLAGS)lib$(AFILE).so $(AFILE).o $(AFILE)Dict.o $(USER_OBJS) $(USER_LIBS) $(GLIBS) -o lib$(AFILE).so

$(AFILE).o: $(USER_HDRS) $(AFILE).cxx
			$(CXX) $(CXXFLAGS) $(AFILE).cxx

$(AFILE)Dict.cxx: $(USER_HDRS) $(AFILE).cxx
			rootcling -v -f  $(AFILE)Dict.cxx -rml lib$(AFILE).so -rmf lib$(AFILE).rootmap \
			-I. $(AFILE).h LinkDef_c.h
			
$(AFILE)Dict.o:	$(AFILE)Dict.cxx
			$(CXX) $(CXXFLAGS) $(AFILE)Dict.cxx
			
lib$(LFILE).so: $(USER_OBJS) $(LFILE).o $(LFILE)Dict.o
			$(CXX) $(LDFLAGS)lib$(LFILE).so $(LFILE).o $(LFILE)Dict.o $(USER_OBJS) $(GLIBS) -o lib$(LFILE).so

$(LFILE).o: $(USER_HDRS) $(LFILE).cxx
			$(CXX) $(CXXFLAGS) $(LFILE).cxx

$(LFILE)Dict.cxx: $(USER_HDRS) $(LFILE).cxx
			rootcling -v -f  $(LFILE)Dict.cxx -rml lib$(LFILE).so -rmf lib$(LFILE).rootmap \
			-I. $(LFILE).h LinkDef.h
			
$(LFILE)Dict.o:	$(LFILE)Dict.cxx
			$(CXX) $(CXXFLAGS) $(LFILE)Dict.cxx

clean:
			rm -f plsurvey.exe 
			rm -f libSylvacDialBle.so \
			rm -f *.o $(USER_OBJS) lib$(AFILE).so \
			lib$(AFILE).pcm $(AFILE)Dict_rdict.pcm \
			lib$(AFILE).rootmap $(AFILE)Dict.cxx \
			lib$(LFILE).pcm $(LFILE)Dict_rdict.pcm \
			lib$(LFILE).rootmap $(LFILE)Dict.cxx

.cxx.o:
			$(CXX) $(CXXFLAGS) -o $@ $<
.c.o:
			$(CC) $(CXXFLAGS) -o $@ $<
