#-------------------------------------------------------------- # Makefile v 1.1 # # OnLine software for GOOFIE monitor # #-------------------------------------------------------------- VERBOSE = 1 OS = Linux DEBUG_GOOFIE = 0 Checks = check Empty = # for TPC Goofie should be "GOOFIE_DETECTOR_NAME=TPC" and for TRD "GOOFIE_DETECTOR_NAME=TRD" WhichDetector = ${GOOFIE_DETECTOR_NAME} # packets USB_DIR = ${GOOFIE_ONDIR}/Hardware/driver/ USB_INC = -I$(USB_DIR)/ -I$(USB_DIR)/tools -I$(USB_DIR)/altro -I$(USB_DIR)/goofie USB_LIB = -L$(USB_DIR)/tools -ltools -L$(USB_DIR)/altro -laltro -L$(USB_DIR)/goofie -lgoofie NI_INC = -I$(NI_DIR)/include NI_LIB = -lnidaqmxbase -llvrtdark HARDWARE_INC = -I$(GOOFIE_ONDIR)/Hardware/unpacker/ HARDWARE_LIB = -L$(GOOFIE_ONDIR)/Hardware/unpacker/$(OS) -lCGUSB ALERT_INC = -I$(GOOFIE_ONDIR)/Alert/ ALERT_LIB = -L$(GOOFIE_ONDIR)/Alert/$(OS) -lCGSMSAlert ROOT_INC = $(shell root-config --cflags) ROOT_LIB = $(shell root-config --libs) -lMinuit -lSpectrum DATA_TO_DISC_INC = -I$(GOOFIE_ONDIR)/DataToDisc/ DATA_TO_DISC_LIB = -L$(GOOFIE_ONDIR)/DataToDisc/$(OS) -lAliGoofieRawData GAS_ANALYSIS_INC = -I$(GOOFIE_ONDIR)/GasAnalysis/ GAS_ANALYSIS_LIB = -L$(GOOFIE_ONDIR)/GasAnalysis/$(OS) -lAliGoofieAnalysis DIM_INC = -I${DIMDIR}/dim/ DIM_LIB = -L${DIMDIR}/linux/ -ldim # add all includes and libraries here INCLUDE = -I./ -I./Hardware -I./Common -I./Engine -I./GasAnalysis/ \ ${ROOT_INC} ${NI_INC} ${HARDWARE_INC} ${ALERT_INC} ${DIM_INC} ${DATA_TO_DISC_INC} \ ${GAS_ANALYSIS_INC} LIBRARY = -lpthread -L./Linux -lOnLINE ${ROOT_LIB} ${HARDWARE_LIB} \ ${DIM_LIB} ${USB_LIB} ${DATA_TO_DISC_LIB} ${NI_LIB} ${GAS_ANALYSIS_LIB} C++ = g++ # Compile options # # -DDEBUG_ONLINE - compile with debug information # -DNO_HARDWARE_REQUIRED - compile for debuging purpose, all hardware is simulated # DEBUG_OPTS = -O0 -g -fPIC -Wno-long-long -pedantic -funsigned-char \ -Wall -DR__THREAD -DCOMPIL -DRCUDEBUG -D_REENTRANT \ -D_THREAD_SAFE -D_MULTI_THREADED \ -DNI_ON -DONLINE_ON # -DDEBUG_ONLINE # -DNO_HARDWARE_REQUIRED C_FLAGS = $(DEBUG_OPTS) ObjSuf = o SrcSuf = cpp SrcSufCxx = cxx DllSuf = so OutPutOpt = -o CLASS_ONLINE = $(OS)/Common/CDataStructure.$(ObjSuf) $(OS)/Common/CGasAnaResults.$(ObjSuf) \ $(OS)/Common/SConfigData.$(ObjSuf) $(OS)/Common/COnLineExeption.$(ObjSuf) \ $(OS)/Common/CCFileParser.$(ObjSuf) $(OS)/Common/CEventGenerator.$(ObjSuf) \ $(OS)/Hardware/CGoofieBoard.$(ObjSuf) $(OS)/Hardware/CReadNI.$(ObjSuf) \ $(OS)/Engine/CService.$(ObjSuf) $(OS)/Engine/CReadOutBoards.$(ObjSuf) \ $(OS)/Engine/COnLineAna.$(ObjSuf) $(OS)/Engine/CDIMServer.$(ObjSuf) \ $(OS)/Engine/CRootFileHandler.$(ObjSuf) \ SRCIN = goofie.$(SrcSuf) EXECNAME = goofieOnLine LIB_SO = $(OS)/libOnLINE.$(DllSuf) all: $(Checks) $(OS) makeAlert makeDriver makeDataToDisc makeGasAnalysis $(CLASS_ONLINE) $(LIB_SO) $(EXECNAME) allOnLine: $(Checks) $(OS) makeDataToDisc makeGasAnalysis $(CLASS_ONLINE) $(LIB_SO) $(EXECNAME) .PHONY: $(Checks) $(Checks): ###check for GOOFIE_DETECTOR_NAME ifeq (${WhichDetector}, ${Empty}) $(error Before starting compilation procedure, please set GOOFIE_DETECTOR_NAME environment variable) else SRCIN = goofie$(WhichDetector).$(SrcSuf) endif ##check for this variable ifeq (${GOOFIE_ONDIR}, ${Empty}) GOOFIE_ONDIR:= $(shell pwd) endif $(OS): @echo creating platform directory... @mkdir $(OS) @mkdir $(OS)/Engine @mkdir $(OS)/Common @mkdir $(OS)/Hardware makeAlert: @echo "make alert packet" cd ${GOOFIE_ONDIR}/Alert/ && make @echo "done" makeDriver: @echo "$@ make goofie board driver" cd ${GOOFIE_ONDIR}/Hardware/driver/ && make @echo "$@ make unpacker" cd ${GOOFIE_ONDIR}/Hardware/unpacker/ && make @echo "$@ done" makeDataToDisc: @echo "$@ make data to disc packet" cd ${GOOFIE_ONDIR}/DataToDisc/ && make @echo "$@ done" makeGasAnalysis: @echo "$@ make gas analysis packet" cd ${GOOFIE_ONDIR}/GasAnalysis/ && make @echo "$@ done" $(OS)/%.$(ObjSuf): %.$(SrcSuf) @echo compiling my $* $(C++) -c $(C_FLAGS) $(INCLUDE) $*.$(SrcSuf) $(OutPutOpt) Linux/$*.$(ObjSuf) @echo "$@ done" $(OS)/%.$(ObjSuf): %.$(SrcSufCxx) @echo compiling my $* $(C++) -c $(C_FLAGS) $(INCLUDE) $*.$(SrcSufCxx) $(OutPutOpt) Linux/$*.$(ObjSuf) @echo "$@ done" $(LIB_SO): $(CLASS_ONLINE) $(C++) -shared -O $(C_FLAGS) $(INCLUDE) $^ $(OutPutOpt) $@ @echo "$@ done" $(EXECNAME): $(SRCIN) @echo "Linking $@..." $(C++) $(C_FLAGS) $(INCLUDE) $^ $(LIBRARY) -o $@ .PHONY: clean clean: cd ${GOOFIE_ONDIR} rm -rf Linux rm -f $(EXECNAME) rm -f ${GOOFIE_ONDIR}/Common/*~ rm -f ${GOOFIE_ONDIR}/ConfigFiles/*~ rm -f ${GOOFIE_ONDIR}/Engine/*~ rm -f ${GOOFIE_ONDIR}/Hardware/*~ rm -f *~ cd ${GOOFIE_ONDIR}/GasAnalysis/ && make clean cd ${GOOFIE_ONDIR}/DataToDisc/ && make clean .PHONY: cleanDriver cleanDriver: @echo "cleaning goofie board driver" cd ${GOOFIE_ONDIR}/Hardware/driver/ && make clean @echo "done" @echo "cleaning unpacker part" cd ${GOOFIE_ONDIR}/Hardware/unpacker/ && make clean @echo "done" .PHONY: cleanAlert cleanAlert: @echo "cleaning alert packet" cd ${GOOFIE_ONDIR}/Alert/ && make clean @echo "done" .PHONY: cleanDataToDisc cleanDataToDisc: @echo "cleaning data to disc packet" cd ${GOOFIE_ONDIR}/DataToDisc/ && make clean @echo "$@ done"