File indexing completed on 2024-05-18 07:43:47
0001
0002 PROJECT = EpicAnalysis
0003
0004
0005 ifndef EPIC_ANALYSIS_HOME
0006 $(error "ERROR: run 'source environ.sh' before building")
0007 endif
0008
0009
0010
0011
0012
0013 CXX := g++
0014 FLAGS = -Wno-deprecated -fPIC
0015 FLAGS += -fmax-errors=3
0016
0017 ROOTCLING = rootcling
0018
0019
0020
0021
0022
0023
0024 DEP_INCLUDES = -I$(shell root-config --incdir)
0025 DEP_LIBRARIES = $(shell root-config --glibs)
0026
0027
0028
0029 DEP_LIBRARIES += -L/usr/local/lib -ledm4hep -ledm4eic
0030 ifdef INCLUDE_PODIO
0031 DEP_LIBRARIES += -L/usr/local/lib -lpodio -lpodioRootIO
0032 FLAGS += -DINCLUDE_PODIO
0033 endif
0034
0035
0036 DEP_LIBRARIES += -lfmt
0037
0038
0039 ifdef EXCLUDE_DELPHES
0040
0041 FLAGS += -DEXCLUDE_DELPHES
0042 else
0043 DEP_INCLUDES += -I${DELPHES_HOME} -I${DELPHES_HOME}/external
0044 DEP_LIBRARIES += -L${DELPHES_HOME} -lDelphes
0045 endif
0046
0047
0048 ifdef INCLUDE_CENTAURO
0049 DEP_INCLUDES += -I${DELPHES_HOME}/external/fastjet/plugins/Centauro
0050 DEP_LIBRARIES += -L${DELPHES_HOME}/external/fastjet/plugins/Centauro -lCentauro
0051 FLAGS += -DINCLUDE_CENTAURO
0052 endif
0053
0054
0055 DEP_INCLUDES += -I${MSTWPDF_HOME}
0056 DEP_LIBRARIES += -L${MSTWPDF_HOME} -lmstwpdf
0057 DEP_TARGETS = ${MSTWPDF_HOME}/libmstwpdf.so
0058
0059
0060 DEP_INCLUDES += -I${ADAGE_HOME}/include
0061 DEP_LIBRARIES += -L${ADAGE_HOME}/lib -lAdage
0062 DEP_TARGETS += ${ADAGE_HOME}/lib/libAdage.so
0063
0064
0065
0066
0067
0068 PREFIX := ${EPIC_ANALYSIS_HOME}/lib
0069 EPIC_ANALYSIS_LIB := $(PREFIX)/lib$(PROJECT).so
0070 EPIC_ANALYSIS_PCM := $(PROJECT)Dict_rdict.pcm
0071 EPIC_ANALYSIS_DICT := src/$(PROJECT)Dict.cxx
0072 EPIC_ANALYSIS_LINKDEF := src/LinkDef.h
0073 EPIC_ANALYSIS_INCLUDES := -I${EPIC_ANALYSIS_HOME}/src
0074 EPIC_ANALYSIS_LIBRARIES := -L$(PREFIX) -l$(PROJECT)
0075
0076
0077
0078
0079
0080 SOURCES := $(filter-out $(EPIC_ANALYSIS_DICT), $(wildcard src/*.cxx) $(wildcard src/sfset/*.cxx) $(wildcard src/interp/*.cxx)) $(EPIC_ANALYSIS_DICT)
0081 HEADERS := $(filter-out $(EPIC_ANALYSIS_LINKDEF), $(wildcard src/*.h) $(wildcard src/sfset/*.h) $(wildcard src/interp/*.h) $(wildcard src/interp/*.ipp)) $(EPIC_ANALYSIS_LINKDEF)
0082
0083
0084 ifdef EXCLUDE_DELPHES
0085 SOURCES := $(filter-out src/AnalysisDelphes.cxx, $(SOURCES))
0086 HEADERS := $(filter-out src/AnalysisDelphes.h, $(HEADERS))
0087 ROOTCLING += -D=EXCLUDE_DELPHES
0088 endif
0089
0090
0091
0092
0093
0094 all: epic-analysis
0095 all-clean: deps-clean clean
0096
0097 debug: FLAGS += -g
0098 debug: DEP_RECIPE = debug
0099 debug: clean all
0100 release: FLAGS += -O3
0101 release: DEP_RECIPE = release
0102 release: clean all
0103
0104 epic-analysis: deps epic-analysis-header $(EPIC_ANALYSIS_LIB) hpc
0105 @echo "Done.\n"
0106 epic-analysis-header:
0107 @echo "\n===== $(PROJECT) ====="
0108
0109 $(EPIC_ANALYSIS_LIB): $(EPIC_ANALYSIS_DICT) $(HEADERS) $(SOURCES)
0110 @echo "\n----- $(PROJECT) library -----"
0111 @if [ -z "${EXCLUDE_DELPHES}" ]; then \
0112 ln -svf ${DELPHES_HOME}/external ./; \
0113 fi
0114 @echo "target: $@"
0115 $(CXX) $(SOURCES) -shared -o $@ $(FLAGS) $(DEP_LIBRARIES) $(DEP_INCLUDES) -I${EPIC_ANALYSIS_HOME}
0116
0117 $(EPIC_ANALYSIS_DICT): $(HEADERS) $(DEP_TARGETS)
0118 @echo "\n----- $(PROJECT) dictionary -----"
0119 @echo "target: $@"
0120 $(ROOTCLING) -f $@ $(DEP_INCLUDES) $(HEADERS)
0121 @mkdir -p $(PREFIX)
0122 @mv src/$(EPIC_ANALYSIS_PCM) $(PREFIX)/
0123
0124
0125
0126
0127 deps: delphes mstwpdf adage
0128 deps-clean: delphes-clean mstwpdf-clean adage-clean
0129 delphes:
0130 @if [ -z "${EXCLUDE_DELPHES}" ]; then \
0131 echo "\n===== $@ ====="; \
0132 $(MAKE) -C ${DELPHES_HOME}; \
0133 fi
0134 delphes-clean:
0135 @if [ -z "${EXCLUDE_DELPHES}" ]; then \
0136 echo "\n===== $@ ====="; \
0137 $(MAKE) -C ${DELPHES_HOME} clean; \
0138 fi
0139 mstwpdf:
0140 @echo "\n===== $@ ====="
0141 $(MAKE) -C ${MSTWPDF_HOME} $(DEP_RECIPE)
0142 mstwpdf-clean:
0143 @echo "\n===== $@ ====="
0144 $(MAKE) -C ${MSTWPDF_HOME} clean
0145 adage:
0146 @echo "\n===== $@ ====="
0147 $(MAKE) -C ${ADAGE_HOME} $(DEP_RECIPE)
0148 adage-clean:
0149 @echo "\n===== $@ ====="
0150 $(MAKE) -C ${ADAGE_HOME} clean
0151
0152
0153
0154
0155
0156 HPC_SOURCES := $(basename $(wildcard hpc/src/*.cpp))
0157 HPC_EXECUTABLES := $(addsuffix .exe, $(HPC_SOURCES))
0158
0159 hpc: hpc-header $(HPC_EXECUTABLES)
0160 hpc-header:
0161 @echo "\n===== HPC executables ====="
0162 hpc/src/%.exe: hpc/src/%.cpp $(EPIC_ANALYSIS_LIB)
0163 @echo "----- build $@.o -----"
0164 $(CXX) -c $< -o $@.o $(FLAGS) $(DEP_INCLUDES) $(EPIC_ANALYSIS_INCLUDES)
0165 @echo "--- make executable $@"
0166 $(CXX) -o $@ $@.o $(DEP_LIBRARIES) $(EPIC_ANALYSIS_LIBRARIES)
0167 $(RM) $@.o
0168
0169
0170
0171
0172 clean:
0173 @echo "\n===== CLEAN $(PROJECT) ====="
0174 $(RM) $(EPIC_ANALYSIS_LIB) $(PREFIX)/$(EPIC_ANALYSIS_PCM) $(EPIC_ANALYSIS_DICT) $(HPC_EXECUTABLES)