# # Makefile for Delphes, a Fast Simulator for general-purpose detectors at the LHC # # Author: S. Ovyn, X. Rouby - UCL, Louvain-la-Neuve # -- inspired by P. Demin's work on ExRootAnalysis (UCL, Louvain-la-Neuve) # -- the multi-platform configuration is taken from ROOT (root/test/Makefile.arch) # include $(ROOTSYS)/test/Makefile.arch ifeq ($(ARCH),macosx64) UNDEFOPT = dynamic_lookup endif SrcSuf = cc #CXXFLAGS += $(ROOTCFLAGS) -DDROP_CGAL -Iinterface -IUtilities/CDFCones/interface -IUtilities/ExRootAnalysis/interface -IUtilities/mcfio -IUtilities/stdhep -IUtilities/Hector/include CXXFLAGS += $(ROOTCFLAGS) -DDROP_CGAL -I. -IUtilities/mcfio -IUtilities/stdhep -IUtilities/Hector/include -IUtilities/CDFCones/interface LIBS = $(ROOTLIBS) -lEG $(SYSLIBS) GLIBS = $(ROOTGLIBS) $(SYSLIBS) ### SHARED = lib/libUtilities.$(DllSuf) lib/libHector.$(DllSuf) all: Delphes$(ExeSuf): \ tmp/Delphes.$(ObjSuf) tmp/Delphes.$(ObjSuf): \ Delphes.cpp \ Utilities/ExRootAnalysis/interface/ExRootTreeReader.h \ Utilities/ExRootAnalysis/interface/ExRootTreeWriter.h \ Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h \ Utilities/CDFCones/interface/JetCluAlgorithm.h \ Utilities/CDFCones/interface/MidPointAlgorithm.h \ Utilities/CDFCones/interface/PhysicsTower.h \ Utilities/CDFCones/interface/Cluster.h \ interface/DataConverter.h \ interface/HEPEVTConverter.h \ interface/LHEFConverter.h \ interface/STDHEPConverter.h \ interface/SmearUtil.h EXECUTABLE = \ Delphes$(ExeSuf) EXECUTABLE_OBJ = \ tmp/Delphes.$(ObjSuf) tmp/Utilities/ExRootAnalysis/src/BlockClassesDict.$(SrcSuf): \ Utilities/ExRootAnalysis/src/BlockClassesLinkDef.h \ Utilities/ExRootAnalysis/interface/BlockClasses.h DICT = \ tmp/Utilities/ExRootAnalysis/src/BlockClassesDict.$(SrcSuf) DICT_OBJ = \ tmp/Utilities/ExRootAnalysis/src/BlockClassesDict.$(ObjSuf) tmp/src/STDHEPConverter.$(ObjSuf): \ src/STDHEPConverter.$(SrcSuf) \ Utilities/ExRootAnalysis/interface/BlockClasses.h \ Utilities/ExRootAnalysis/interface/ExRootTreeReader.h \ Utilities/ExRootAnalysis/interface/ExRootTreeWriter.h \ Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h \ Utilities/ExRootAnalysis/interface/LHEF.h \ Utilities/stdhep/stdhep_mcfio.h \ Utilities/stdhep/stdhep_declarations.h \ interface/STDHEPConverter.h tmp/src/LHEFConverter.$(ObjSuf): \ src/LHEFConverter.$(SrcSuf) \ Utilities/ExRootAnalysis/interface/ExRootTreeWriter.h \ Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h \ Utilities/ExRootAnalysis/interface/BlockClasses.h \ interface/LHEFConverter.h \ Utilities/ExRootAnalysis/interface/LHEF.h tmp/src/HEPEVTConverter.$(ObjSuf): \ src/HEPEVTConverter.$(SrcSuf) \ Utilities/ExRootAnalysis/interface/BlockClasses.h \ Utilities/ExRootAnalysis/interface/ExRootTreeReader.h \ Utilities/ExRootAnalysis/interface/ExRootTreeWriter.h \ Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h \ interface/HEPEVTConverter.h tmp/src/SmearUtil.$(ObjSuf): \ src/SmearUtil.$(SrcSuf) \ interface/SmearUtil.h tmp/Utilities/ExRootAnalysis/src/ExRootTreeWriter.$(ObjSuf): \ Utilities/ExRootAnalysis/src/ExRootTreeWriter.$(SrcSuf) \ Utilities/ExRootAnalysis/interface/ExRootTreeWriter.h \ Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h tmp/Utilities/ExRootAnalysis/src/BlockClasses.$(ObjSuf): \ Utilities/ExRootAnalysis/src/BlockClasses.$(SrcSuf) \ Utilities/ExRootAnalysis/interface/BlockClasses.h \ Utilities/ExRootAnalysis/interface/BlockCompare.h tmp/Utilities/ExRootAnalysis/src/ExRootTreeBranch.$(ObjSuf): \ Utilities/ExRootAnalysis/src/ExRootTreeBranch.$(SrcSuf) \ Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h tmp/Utilities/ExRootAnalysis/src/ExRootTreeReader.$(ObjSuf): \ Utilities/ExRootAnalysis/src/ExRootTreeReader.$(SrcSuf) \ Utilities/ExRootAnalysis/interface/ExRootTreeReader.h tmp/Utilities/ExRootAnalysis/src/ExRootProgressBar.$(ObjSuf): \ Utilities/ExRootAnalysis/src/ExRootProgressBar.$(SrcSuf) \ Utilities/ExRootAnalysis/interface/ExRootProgressBar.h tmp/Utilities/Hector/src/H_Parameters.$(ObjSuf): \ Utilities/Hector/src/H_Parameters.$(SrcSuf) tmp/Utilities/Hector/src/H_RomanPot.$(ObjSuf): \ Utilities/Hector/src/H_RomanPot.$(SrcSuf) tmp/Utilities/Hector/src/H_Beam.$(ObjSuf): \ Utilities/Hector/src/H_Beam.$(SrcSuf) tmp/Utilities/Hector/src/H_SectorDipole.$(ObjSuf): \ Utilities/Hector/src/H_SectorDipole.$(SrcSuf) tmp/Utilities/Hector/src/H_RecRPObject.$(ObjSuf): \ Utilities/Hector/src/H_RecRPObject.$(SrcSuf) tmp/Utilities/Hector/src/H_Drift.$(ObjSuf): \ Utilities/Hector/src/H_Drift.$(SrcSuf) tmp/Utilities/Hector/src/H_CircularAperture.$(ObjSuf): \ Utilities/Hector/src/H_CircularAperture.$(SrcSuf) tmp/Utilities/Hector/src/H_VerticalQuadrupole.$(ObjSuf): \ Utilities/Hector/src/H_VerticalQuadrupole.$(SrcSuf) tmp/Utilities/Hector/src/H_EllipticAperture.$(ObjSuf): \ Utilities/Hector/src/H_EllipticAperture.$(SrcSuf) tmp/Utilities/Hector/src/H_RectangularDipole.$(ObjSuf): \ Utilities/Hector/src/H_RectangularDipole.$(SrcSuf) tmp/Utilities/Hector/src/H_OpticalElement.$(ObjSuf): \ Utilities/Hector/src/H_OpticalElement.$(SrcSuf) tmp/Utilities/Hector/src/H_Kicker.$(ObjSuf): \ Utilities/Hector/src/H_Kicker.$(SrcSuf) tmp/Utilities/Hector/src/H_BeamLineParser.$(ObjSuf): \ Utilities/Hector/src/H_BeamLineParser.$(SrcSuf) tmp/Utilities/Hector/src/H_AbstractBeamLine.$(ObjSuf): \ Utilities/Hector/src/H_AbstractBeamLine.$(SrcSuf) tmp/Utilities/Hector/src/H_Aperture.$(ObjSuf): \ Utilities/Hector/src/H_Aperture.$(SrcSuf) tmp/Utilities/Hector/src/H_BeamParticle.$(ObjSuf): \ Utilities/Hector/src/H_BeamParticle.$(SrcSuf) tmp/Utilities/Hector/src/H_TransportMatrices.$(ObjSuf): \ Utilities/Hector/src/H_TransportMatrices.$(SrcSuf) tmp/Utilities/Hector/src/H_HorizontalKicker.$(ObjSuf): \ Utilities/Hector/src/H_HorizontalKicker.$(SrcSuf) tmp/Utilities/Hector/src/H_Quadrupole.$(ObjSuf): \ Utilities/Hector/src/H_Quadrupole.$(SrcSuf) tmp/Utilities/Hector/src/H_RectangularAperture.$(ObjSuf): \ Utilities/Hector/src/H_RectangularAperture.$(SrcSuf) tmp/Utilities/Hector/src/H_Marker.$(ObjSuf): \ Utilities/Hector/src/H_Marker.$(SrcSuf) tmp/Utilities/Hector/src/H_RectangularCollimator.$(ObjSuf): \ Utilities/Hector/src/H_RectangularCollimator.$(SrcSuf) tmp/Utilities/Hector/src/H_BeamLine.$(ObjSuf): \ Utilities/Hector/src/H_BeamLine.$(SrcSuf) tmp/Utilities/Hector/src/H_HorizontalQuadrupole.$(ObjSuf): \ Utilities/Hector/src/H_HorizontalQuadrupole.$(SrcSuf) tmp/Utilities/Hector/src/H_VerticalKicker.$(ObjSuf): \ Utilities/Hector/src/H_VerticalKicker.$(SrcSuf) tmp/Utilities/Hector/src/H_RectEllipticAperture.$(ObjSuf): \ Utilities/Hector/src/H_RectEllipticAperture.$(SrcSuf) tmp/Utilities/Hector/src/H_Dipole.$(ObjSuf): \ Utilities/Hector/src/H_Dipole.$(SrcSuf) tmp/Utilities/CDFCones/src/MidPointAlgorithm.$(ObjSuf): \ Utilities/CDFCones/src/MidPointAlgorithm.$(SrcSuf) \ Utilities/CDFCones/interface/MidPointAlgorithm.h \ Utilities/CDFCones/interface/ClusterComparisons.h tmp/Utilities/CDFCones/src/JetCluAlgorithm.$(ObjSuf): \ Utilities/CDFCones/src/JetCluAlgorithm.$(SrcSuf) \ Utilities/CDFCones/interface/JetCluAlgorithm.h \ Utilities/CDFCones/interface/ClusterComparisons.h \ Utilities/CDFCones/interface/Centroid.h SOURCE_OBJ = \ tmp/src/STDHEPConverter.$(ObjSuf) \ tmp/src/LHEFConverter.$(ObjSuf) \ tmp/src/HEPEVTConverter.$(ObjSuf) \ tmp/src/SmearUtil.$(ObjSuf) \ tmp/Utilities/ExRootAnalysis/src/ExRootTreeWriter.$(ObjSuf) \ tmp/Utilities/ExRootAnalysis/src/BlockClasses.$(ObjSuf) \ tmp/Utilities/ExRootAnalysis/src/ExRootTreeBranch.$(ObjSuf) \ tmp/Utilities/ExRootAnalysis/src/ExRootTreeReader.$(ObjSuf) \ tmp/Utilities/ExRootAnalysis/src/ExRootProgressBar.$(ObjSuf) \ tmp/Utilities/Hector/src/H_Parameters.$(ObjSuf) \ tmp/Utilities/Hector/src/H_RomanPot.$(ObjSuf) \ tmp/Utilities/Hector/src/H_Beam.$(ObjSuf) \ tmp/Utilities/Hector/src/H_SectorDipole.$(ObjSuf) \ tmp/Utilities/Hector/src/H_RecRPObject.$(ObjSuf) \ tmp/Utilities/Hector/src/H_Drift.$(ObjSuf) \ tmp/Utilities/Hector/src/H_CircularAperture.$(ObjSuf) \ tmp/Utilities/Hector/src/H_VerticalQuadrupole.$(ObjSuf) \ tmp/Utilities/Hector/src/H_EllipticAperture.$(ObjSuf) \ tmp/Utilities/Hector/src/H_RectangularDipole.$(ObjSuf) \ tmp/Utilities/Hector/src/H_OpticalElement.$(ObjSuf) \ tmp/Utilities/Hector/src/H_Kicker.$(ObjSuf) \ tmp/Utilities/Hector/src/H_BeamLineParser.$(ObjSuf) \ tmp/Utilities/Hector/src/H_AbstractBeamLine.$(ObjSuf) \ tmp/Utilities/Hector/src/H_Aperture.$(ObjSuf) \ tmp/Utilities/Hector/src/H_BeamParticle.$(ObjSuf) \ tmp/Utilities/Hector/src/H_TransportMatrices.$(ObjSuf) \ tmp/Utilities/Hector/src/H_HorizontalKicker.$(ObjSuf) \ tmp/Utilities/Hector/src/H_Quadrupole.$(ObjSuf) \ tmp/Utilities/Hector/src/H_RectangularAperture.$(ObjSuf) \ tmp/Utilities/Hector/src/H_Marker.$(ObjSuf) \ tmp/Utilities/Hector/src/H_RectangularCollimator.$(ObjSuf) \ tmp/Utilities/Hector/src/H_BeamLine.$(ObjSuf) \ tmp/Utilities/Hector/src/H_HorizontalQuadrupole.$(ObjSuf) \ tmp/Utilities/Hector/src/H_VerticalKicker.$(ObjSuf) \ tmp/Utilities/Hector/src/H_RectEllipticAperture.$(ObjSuf) \ tmp/Utilities/Hector/src/H_Dipole.$(ObjSuf) \ tmp/Utilities/CDFCones/src/MidPointAlgorithm.$(ObjSuf) \ tmp/Utilities/CDFCones/src/JetCluAlgorithm.$(ObjSuf) tmp/Utilities/mcfio/mcf_ntuBldDbinc.$(ObjSuf): \ Utilities/mcfio/mcf_ntuBldDbinc.c tmp/Utilities/mcfio/mcfio_SeqDummy.$(ObjSuf): \ Utilities/mcfio/mcfio_SeqDummy.c tmp/Utilities/mcfio/mcfio_Util1.$(ObjSuf): \ Utilities/mcfio/mcfio_Util1.c tmp/Utilities/mcfio/mcf_evt_xdr.$(ObjSuf): \ Utilities/mcfio/mcf_evt_xdr.c tmp/Utilities/mcfio/mcf_NTuIOUtils.$(ObjSuf): \ Utilities/mcfio/mcf_NTuIOUtils.c tmp/Utilities/mcfio/mcfio_Block.$(ObjSuf): \ Utilities/mcfio/mcfio_Block.c tmp/Utilities/mcfio/mcfio_Direct.$(ObjSuf): \ Utilities/mcfio/mcfio_Direct.c tmp/Utilities/mcfio/mcf_NTuIOFiles.$(ObjSuf): \ Utilities/mcfio/mcf_NTuIOFiles.c tmp/Utilities/mcfio/mcfio_UserDictionary.$(ObjSuf): \ Utilities/mcfio/mcfio_UserDictionary.c tmp/Utilities/mcfio/mcf_ntubldInit.$(ObjSuf): \ Utilities/mcfio/mcf_ntubldInit.c tmp/Utilities/stdhep/mcf_hepev4_xdr.$(ObjSuf): \ Utilities/stdhep/mcf_hepev4_xdr.c tmp/Utilities/stdhep/mcf_stdcm1_xdr.$(ObjSuf): \ Utilities/stdhep/mcf_stdcm1_xdr.c tmp/Utilities/stdhep/mcf_hepup_xdr.$(ObjSuf): \ Utilities/stdhep/mcf_hepup_xdr.c tmp/Utilities/stdhep/mcf_Stdhep_xdr.$(ObjSuf): \ Utilities/stdhep/mcf_Stdhep_xdr.c tmp/Utilities/stdhep/stdhep_internal_utils.$(ObjSuf): \ Utilities/stdhep/stdhep_internal_utils.c tmp/Utilities/stdhep/stdhep_mcfio.$(ObjSuf): \ Utilities/stdhep/stdhep_mcfio.c STDHEP_OBJ = \ tmp/Utilities/mcfio/mcf_ntuBldDbinc.$(ObjSuf) \ tmp/Utilities/mcfio/mcfio_SeqDummy.$(ObjSuf) \ tmp/Utilities/mcfio/mcfio_Util1.$(ObjSuf) \ tmp/Utilities/mcfio/mcf_evt_xdr.$(ObjSuf) \ tmp/Utilities/mcfio/mcf_NTuIOUtils.$(ObjSuf) \ tmp/Utilities/mcfio/mcfio_Block.$(ObjSuf) \ tmp/Utilities/mcfio/mcfio_Direct.$(ObjSuf) \ tmp/Utilities/mcfio/mcf_NTuIOFiles.$(ObjSuf) \ tmp/Utilities/mcfio/mcfio_UserDictionary.$(ObjSuf) \ tmp/Utilities/mcfio/mcf_ntubldInit.$(ObjSuf) \ tmp/Utilities/stdhep/mcf_hepev4_xdr.$(ObjSuf) \ tmp/Utilities/stdhep/mcf_stdcm1_xdr.$(ObjSuf) \ tmp/Utilities/stdhep/mcf_hepup_xdr.$(ObjSuf) \ tmp/Utilities/stdhep/mcf_Stdhep_xdr.$(ObjSuf) \ tmp/Utilities/stdhep/stdhep_internal_utils.$(ObjSuf) \ tmp/Utilities/stdhep/stdhep_mcfio.$(ObjSuf) Utilities/CDFCones/interface/MidPointAlgorithm.h: \ Utilities/CDFCones/interface/PhysicsTower.h \ Utilities/CDFCones/interface/Cluster.h @touch $@ interface/DataConverter.h: \ Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h \ Utilities/ExRootAnalysis/interface/LHEF.h @touch $@ interface/HEPEVTConverter.h: \ Utilities/ExRootAnalysis/interface/BlockClasses.h \ Utilities/ExRootAnalysis/interface/TSimpleArray.h \ Utilities/CDFCones/interface/PhysicsTower.h \ interface/DataConverter.h @touch $@ interface/SmearUtil.h: \ Utilities/ExRootAnalysis/interface/BlockClasses.h \ Utilities/ExRootAnalysis/interface/TSimpleArray.h \ Utilities/CDFCones/interface/PhysicsTower.h @touch $@ interface/LHEFConverter.h: \ Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h \ Utilities/ExRootAnalysis/interface/LHEF.h \ interface/DataConverter.h @touch $@ Utilities/CDFCones/interface/Cluster.h: \ Utilities/CDFCones/interface/PhysicsTower.h \ Utilities/CDFCones/interface/LorentzVector.h \ Utilities/CDFCones/interface/Centroid.h @touch $@ Utilities/CDFCones/interface/PhysicsTower.h: \ Utilities/CDFCones/interface/LorentzVector.h \ Utilities/CDFCones/interface/CalTower.h @touch $@ Utilities/CDFCones/interface/JetCluAlgorithm.h: \ Utilities/CDFCones/interface/PhysicsTower.h \ Utilities/CDFCones/interface/Cluster.h @touch $@ Utilities/CDFCones/interface/ClusterComparisons.h: \ Utilities/CDFCones/interface/Cluster.h @touch $@ Utilities/ExRootAnalysis/interface/BlockClasses.h: \ Utilities/ExRootAnalysis/interface/BlockCompare.h @touch $@ interface/STDHEPConverter.h: \ Utilities/ExRootAnalysis/interface/BlockClasses.h \ Utilities/ExRootAnalysis/interface/TSimpleArray.h \ Utilities/CDFCones/interface/PhysicsTower.h \ Utilities/ExRootAnalysis/interface/LHEF.h \ interface/DataConverter.h @touch $@ ### all: $(SHARED) $(EXECUTABLE) $(STDHEP_EXECUTABLE) $(SHARED): $(DICT_OBJ) $(SOURCE_OBJ) @mkdir -p $(@D) @echo ">> Building $@" ifeq ($(ARCH),aix) @/usr/ibmcxx/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(ARCH),aix5) @/usr/vacpp/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(PLATFORM),macosx) # We need to make both the .dylib and the .so @$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ @$(LD) -bundle -undefined $(UNDEFOPT) $(LDFLAGS) $^ $(LIBS) $(OutPutOpt) $(subst .$(DllSuf),.so,$@) else ifeq ($(PLATFORM),win32) @bindexplib $* $^ > $*.def @lib -nologo -MACHINE:IX86 $^ -def:$*.def $(OutPutOpt)$(EVENTLIB) @$(LD) $(SOFLAGS) $(LDFLAGS) $^ $*.exp $(LIBS) $(OutPutOpt)$@ @$(MT_DLL) else @$(LD) $(SOFLAGS) $(LDFLAGS) $^ $(OutPutOpt) $@ $(EXPLLINKLIBS) @$(MT_DLL) endif endif endif endif clean: @rm -f $(DICT_OBJ) $(SOURCE_OBJ) $(STDHEP_OBJ) core distclean: clean @rm -f $(SHARED) $(EXECUTABLE) $(STDHEP_EXECUTABLE) ### .SUFFIXES: .$(SrcSuf) .$(ObjSuf) .$(DllSuf) %Dict.$(SrcSuf): @mkdir -p $(@D) @echo ">> Generating $@" @rootcint -f $@ -c $< @echo "#define private public" > $@.arch @echo "#define protected public" >> $@.arch @mv $@ $@.base @cat $@.arch $< $@.base > $@ @rm $@.arch $@.base $(SOURCE_OBJ): tmp/%.$(ObjSuf): %.$(SrcSuf) @mkdir -p $(@D) @echo ">> Compiling $<" @$(CXX) $(CXXFLAGS) -c $< $(OutPutOpt)$@ $(DICT_OBJ): %.$(ObjSuf): %.$(SrcSuf) @mkdir -p $(@D) @echo ">> Compiling $<" @$(CXX) $(CXXFLAGS) -c $< $(OutPutOpt)$@ $(STDHEP_OBJ): tmp/%.$(ObjSuf): %.c @mkdir -p $(@D) @echo ">> Compiling $<" @gcc $(CXXFLAGS) -c $< $(OutPutOpt)$@ $(STDHEP_EXECUTABLE_OBJ): tmp/%.$(ObjSuf): %.cpp @mkdir -p $(@D) @echo ">> Compiling $<" @$(CXX) $(CXXFLAGS) -c $< $(OutPutOpt)$@ $(EXECUTABLE_OBJ): tmp/%.$(ObjSuf): %.cpp @mkdir -p $(@D) @echo ">> Compiling $<" @$(CXX) $(CXXFLAGS) -c $< $(OutPutOpt)$@ $(EXECUTABLE): %$(ExeSuf): $(DICT_OBJ) $(SOURCE_OBJ) $(STDHEP_OBJ) @echo ">> Building $@" @$(LD) $(LDFLAGS) $^ $(LIBS) $(OutPutOpt)$@ ###