########################################################################
#
#
#########################################################################

CC	=	g++

COPTS	=	-fPIC -DLINUX -O2 -std=c++17 -lpthread

CAENLIBS	=	-lCAENDigitizer

ROOTLIBS = `root-config --cflags --glibs`

OBJS = programSetting.o triggerSummary.o registerSetting.o channelSettingPSD.o channelSettingPHA.o boardSetting.o ClassDigitizer.o FSUDAQ.o

#########################################################################

all	:	test FSUDAQ test_indep EventBuilder

clean	:
		/bin/rm -f $(OBJS) test FSUDAQ test_indep EventBuilder FSUDAQDict.cxx *.pcm

ClassDigitizer.o : ClassDigitizer.cpp ClassDigitizer.h RegisterAddress.h macro.h ClassData.h
		$(CC) $(COPTS) -c ClassDigitizer.cpp

test	:	test.cpp ClassDigitizer.o
		@echo "--------- making test"
		$(CC) $(COPTS) -o test test.cpp ClassDigitizer.o  $(CAENLIBS)  $(ROOTLIBS)

EventBuilder	:	EventBuilder.cpp ClassData.h
		@echo "--------- making EventBuilder"
		$(CC) $(COPTS) -o EventBuilder EventBuilder.cpp $(ROOTLIBS)

test_indep : test_indep.cpp RegisterAddress.h macro.h
		@echo "--------- making test_indep"
		$(CC) $(COPTS) -o test_indep test_indep.cpp $(CAENLIBS) 

FSUDAQ : FSUDAQDict.cxx $(OBJS)
		@echo "----------- creating FSUDAQ"
		$(CC) $(COPTS) FSUDAQDict.cxx $(OBJS) -o FSUDAQ $(CAENLIBS) $(ROOTLIBS)

FSUDAQDict.cxx : FSUDAQ.h FSUDAQLinkDef.h
		@echo "----------- creating pcm and cxx for root"
		@rootcling -f FSUDAQDict.cxx -c FSUDAQ.h -p FSUDAQLinkDef.h 

FSUDAQ.o : FSUDAQ.h FSUDAQ.cpp FSUDAQDict.cxx
		@echo "----------- creating FSUDAQ.o"
		$(CC) $(COPTS) -c FSUDAQ.cpp ClassDigitizer.cpp $(ROOTLIBS)
		
boardSetting.o : boardSetting.h boardSetting.cpp
		@echo "----------- creating boardSetting.o"
		$(CC) $(COPTS) -c boardSetting.cpp $(ROOTLIBS)
		
channelSettingPHA.o : channelSettingPHA.h channelSettingPHA.cpp
		@echo "----------- creating channelSettingPHA.o"
		$(CC) $(COPTS) -c channelSettingPHA.cpp $(ROOTLIBS)

channelSettingPSD.o : channelSettingPSD.h channelSettingPSD.cpp
		@echo "----------- creating channelSettingPSD.o"
		$(CC) $(COPTS) -c channelSettingPSD.cpp $(ROOTLIBS)

registerSetting.o : registerSetting.h registerSetting.cpp
		@echo "----------- creating registerSetting.o"
		$(CC) $(COPTS) -c registerSetting.cpp $(ROOTLIBS)

triggerSummary.o : triggerSummary.h triggerSummary.cpp
		@echo "----------- creating triggerSummary.o"
		$(CC) $(COPTS) -c triggerSummary.cpp $(ROOTLIBS)

programSetting.o : programSetting.h programSetting.cpp
		@echo "----------- creating programSetting.o"
		$(CC) $(COPTS) -c programSetting.cpp $(ROOTLIBS)


#CutsCreator:	$(OBJS3) src/CutsCreator.c
#		g++ -std=c++17 -pthread src/CutsCreator.c -o CutsCreator $(ROOTLIBS)

#BoxScore	: src/BoxScore.c Class/ClassDigitizer.h Class/FileIO.h Class/GenericPlane.h Class/HelioTarget.h Class/IsoDetect.h Class/HelioArray.h Class/MCPClass.h
#		g++ -std=c++17 -pthread src/BoxScore.c -o BoxScore  $(DEPLIBS) $(ROOTLIBS)