#-*- Mode: Makefile -*-
-ifdef DAMODULE
+DAMODULE=$(firstword $(subst -, ,$(subst -da,,$(subst -da-tar,,$(subst -da-rpm,,$(subst -da-clean,,$(filter %-da %-da-tar %-da-rpm %-da-clean,$(MAKECMDGOALS))))))))
+DANAME=$(word 2,$(subst -, ,$(subst -da,,$(subst -da-tar,,$(subst -da-rpm,,$(subst -da-clean,,$(filter %-da %-da-tar %-da-rpm %-da-clean,$(MAKECMDGOALS))))))))
+
+ifeq ($(DANAME),)
+DATARGETNAME=$(DAMODULE)-da
+else
+DATARGETNAME=$(DAMODULE)-$(DANAME)-da
+endif
+
+ifneq ($(findstring $(DAMODULE),$(MODULES)),)
CXXFLAGS+=-I${ALICE_ROOT}/RAW
CXXFLAGS+=-I${ALICE_ROOT}/$(DAMODULE)
CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(DAMODULE)/*/)))))
-ifneq ($(EXTRADAMODULE),)
-CXXFLAGS+=-I${ALICE_ROOT}/$(EXTRADAMODULE)
-CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(EXTRADAMODULE)/*/)))))
-endif
-
DATARGETDIR=${DAMODULE}/tgt_${ALICE_TARGET}
DASRC=${DAMODULE}/${DAMODULE}${DANAME}da.cxx
-DADEP=${DATARGETDIR}/${DAMODULE}${DANAME}da.d
DAOBJ=${DATARGETDIR}/${DAMODULE}${DANAME}da.o
+DADEP=${DATARGETDIR}/${DAMODULE}${DANAME}da.d
DALIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/lib${DAMODULE}${DANAME}DA.a
DAEXE=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}/${DAMODULE}${DANAME}da.exe
-ifeq ($(DAVERSION),)
-DAVERSION=1.0
-endif
+DAVERSION=$(firstword $(shell cvs status $(DASRC) | grep "Working revision:" | cut -d: -f2 ))
+
+DAROOTRELEASE=$(subst /,.,$(shell root-config --version))
+DARELEASE:="Root_"$(DAROOTRELEASE)"__AliRoot_"
-ifeq ($(DARELEASE),)
-DARELEASE=1
+DAALIROOTRELEASE=$(subst -,.,$(firstword $(shell cvs status $(DASRC) | grep "Sticky Tag:" | cut -d: -f2 )))
+ifeq ($(DAALIROOTRELEASE),(none))
+DAALIROOTRELEASE:="HEAD_"$(subst -,.,$(shell date --iso-8601))
endif
+DARELEASE:=$(DARELEASE)$(DAALIROOTRELEASE)
-DAARC=daqDA-${DAMODULE}-${DAMODULE}${DANAME}da-$(DAVERSION)
+DAARC=daqDA-${DAMODULE}${DANAME}-calib-$(DAVERSION)
DATAR=${DATARGETDIR}/$(DAARC).src.tar.gz
DASPECFILE=${DATARGETDIR}/$(DAMODULE)$(DANAME)da.spec
DAMAKEFILE=${DATARGETDIR}/${DAMODULE}${DANAME}da.make
+ifeq ($(DAQDALIB_PATH),)
DAQDADIR=${ALICE}/daqDAlib
+else
+DAQDADIR=${DAQDALIB_PATH}
+endif
DAQDALIB=$(DAQDADIR)/libdaqDA.a
ROOTLIBDIR=$(shell root-config --libdir)
ALIROOTALIBS+=$($(DAMODULE)ALIBS)
-ifneq ($(EXTRADAMODULE),)
+EXTRAROOTLIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/libRootExtra.a
-ALIROOTALIBS+=$($(EXTRADAMODULE)ALIBS)
+EXTRADAMODULE:=$(firstword $(subst /,,$(subst $(ALICE_ROOT),,$(filter-out $(ALICE_ROOT)/STEER/ $(ALICE_ROOT)/RAW/ $(ALICE_ROOT)/$(DAMODULE)% $(ALICE_ROOT)/include/,$(sort $(dir $(filter $(ALICE_ROOT)%,$(filter-out %.o:,$(filter-out %.cxx,$(filter-out \,$(shell if [ -f "${DADEP}" ]; then cat $(DADEP); fi)))))))))))
+ifneq ($(EXTRADAMODULE),)
+CXXFLAGS+=-I${ALICE_ROOT}/$(EXTRADAMODULE)
+CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(EXTRADAMODULE)/*/)))))
+ALIROOTALIBS+=$($(EXTRADAMODULE)ALIBS)
endif
-static-DA: $(DAEXE)
+DAOUTPUTFILES=$(sort $(shell grep TFile $(DASRC) | grep '(' | grep ')' | grep -i recreate | cut -d'(' -f2 | cut -d',' -f1 | cut -d')' -f1 ))
+DAINPUTFILES=$(sort $(shell grep TFile $(DASRC) | grep '(' | grep ')' | grep -vi recreate | cut -d'(' -f2 | cut -d',' -f1 | cut -d')' -f1 ))
-$(DAEXE): $(LIBPATH) $(DAOBJ) $(DALIB) $(DAQDALIB)
+$(DATARGETNAME): $(DAEXE)
+
+$(DAEXE): $(DAOBJ) $(LIBPATH) $(DALIB) $(DAQDALIB) $(EXTRAROOTLIB)
@echo "***** Making executable $(DAEXE) *****"
- $(MUTE)$(LD) $(LDFLAGS) -o $@ $(DAOBJ) $(DALIB) \
- $(SYSLIBS) \
+ $(MUTE)$(LD) $(LDFLAGS) -o $@ $< \
+ $(DALIB) \
+ $(EXTRAROOTLIB) \
$(ROOTLIBDIR)/libRoot.a \
$(ROOTLIBDIR)/libfreetype.a $(ROOTLIBDIR)/libpcre.a \
- $(MONITORLIBS) $(DAQDALIB)
+ $(DAQDALIB) $(MONITORLIBS) \
+ $(SYSLIBS)
$(DAOBJ): $(DASRC) $(DAQDADIR) $(DADEP) $(DATARGETDIR)
@echo "***** Compiling $(DASRC) *****"
$(DADEP): $(DASRC) $(DAQDADIR) $(DATARGETDIR)
@echo "***** Making detector-algorithm dependencies $(DADEP) *****"
- $(MUTE)$(CPP) -MM $(CXXFLAGS) -I$(DAQDADIR) $< > $@
-
-DAINCLUDES=$(sort $(filter-out %.o:,$(filter-out %.cxx,$(filter-out \,$(shell cat $(DADEP))))))
+ $(MUTE)$(CPP) -MM $(CXXFLAGS) $(addprefix -I$(ALICE_ROOT)/,$(MODULES)) -I$(DAQDADIR) $< > $@
-include $(DADEP)
$(MUTE)rm -rf junk
$(MUTE)mkdir junk && cd junk && $(addprefix $(AR) x ../,$(addsuffix &&,$^)) $(AR) r $@ *.o && cd .. && rm -rf junk
-clean-DA:
+$(EXTRAROOTLIB): $(LIBPATH)
+ $(MUTE)$(AR) r $@ `ls ${ROOTSYS}/vmc/src/*.o ${ROOTSYS}/treeplayer/src/*.o`
+
+$(DATARGETNAME)-clean:
@echo "***** Cleaning $(DAMODULE)$(DANAME) detector-algorithm *****"
$(MUTE)rm -f $(DASPECFILE)
$(MUTE)rm -f $(DATAR)
$(MUTE)rm -f $(DAMAKEFILE)
$(MUTE)rm -f $(DALIB)
$(MUTE)rm -f $(ALIROOTALIBS)
+ $(MUTE)rm -f $(EXTRAROOTLIB)
$(DAMAKEFILE): $(DATARGETDIR)
+ $(MUTE)rm -f $(DAMAKEFILE)
@echo "***** Making makefile $(DAMAKEFILE) *****"
- @echo "CXXFLAGS+=""$$""(shell date-config --cflags)" > $@
- @echo "CXXFLAGS+=-Iinclude" >> $@
- @echo "DAQDADIR=daqDAlib" >> $@
+ @echo "####################################################" >> $@
+ @echo "# Makefile for Detector Algorithm" >> $@
+ @echo "#" >> $@
+ @echo "# It is necessary to setup build environment before" >> $@
+ @echo "# using make:" >> $@
+ @echo "# - define path to daqDAlib (env. DAQDALIB_PATH)" >> $@
+ @echo "#" >> $@
+ @echo "####################################################" >> $@
+ @echo "" >> $@
+ @echo "CXX=$(CXX)" >> $@
+ @echo "LD=$(LD)" >> $@
+ @echo "" >> $@
+ @echo "CXXFLAGS=$(CXXFLAGS)" >> $@
+ @echo "LDFLAGS=$(LDFLAGS)" >> $@
+ @echo "" >> $@
+ @echo "ifeq (""$$""(DAQDALIB_PATH),)" >> $@
+ @echo "DAQDADIR=${ALICE}/daqDAlib" >> $@
+ @echo "else" >> $@
+ @echo "DAQDADIR=""$$""(DAQDALIB_PATH)" >> $@
+ @echo "endif" >> $@
+ @echo "" >> $@
@echo "DAQDALIB=""$$""(DAQDADIR)/libdaqDA.a" >> $@
@echo "MONITORLIBS=""$$""(shell date-config --monitorlibs=noshift)" >> $@
+ @echo "" >> $@
@echo "${DAMODULE}${DANAME}da.exe: ${DAMODULE}${DANAME}da.o" >> $@
- @echo " ""$$""(CXX) ""$$""(LDFLAGS) -o ""$$""@ ""$$""< \\" >> $@
- @echo " lib/lib${DAMODULE}${DANAME}DA.a \\" >> $@
- @echo " $(SYSLIBS) \\" >> $@
- @echo " lib/libRoot.a \\" >> $@
- @echo " lib/libfreetype.a lib/libpcre.a \\" >> $@
- @echo " ""$$""(MONITORLIBS) ""$$""(DAQDALIB)" >> $@
+ @echo " ""$$""(LD) ""$$""(LDFLAGS) -o ""$$""@ ""$$""< \\" >> $@
+ @echo " $(DALIB) \\" >> $@
+ @echo " $(EXTRAROOTLIB) \\" >> $@
+ @echo " ""$$""(ROOTSYS)/lib/libRoot.a \\" >> $@
+ @echo " ""$$""(ROOTSYS)/lib/libfreetype.a ""$$""(ROOTSYS)/lib/libpcre.a \\" >> $@
+ @echo " ""$$""(DAQDALIB) ""$$""(MONITORLIBS) \\" >> $@
+ @echo " $(SYSLIBS)" >> $@
+ @echo "" >> $@
@echo "${DAMODULE}${DANAME}da.o: ${DAMODULE}${DANAME}da.cxx" >> $@
@echo " ""$$""(CXX) -c ""$$""(CXXFLAGS) -I""$$""(DAQDADIR) ""$$""< -o ""$$""@" >> $@
+ @echo "" >> $@
@echo "clean:" >> $@
@echo " @rm -f ${DAMODULE}${DANAME}da.exe ${DAMODULE}${DANAME}da.o" >> $@
+ @echo "" >> $@
@echo "install: ${DAMODULE}${DANAME}da.exe" >> $@
@echo " @if [ '""$$""(INSTALL_PATH)' == '' ]; then \\" >> $@
@echo " echo Environment variable INSTALL_PATH undefined, cannot continue; \\" >> $@
@echo " fi" >> $@
@echo " @cp -p ${DAMODULE}${DANAME}da.exe ""$$""(INSTALL_PATH)" >> $@
-$(DATAR): $(DASRC) $(DALIB) $(DAQDADIR) $(DADEP) $(DAMAKEFILE) $(DATARGETDIR)
+$(DATAR): $(DASRC) $(DAMAKEFILE) $(DASPECFILE)
@echo "***** Making archive $(DATAR) *****"
$(MUTE)rm -rf $(DATAR)
$(MUTE)rm -rf junk
- $(MUTE)mkdir junk && mkdir junk/$(DAARC) && mkdir junk/$(DAARC)/lib && mkdir junk/$(DAARC)/include && \
- cp -a $(DASRC) $(DAQDADIR) junk/$(DAARC) && \
- cp -a $(DALIB) $(ROOTLIBDIR)/libRoot.a $(ROOTLIBDIR)/libfreetype.a $(ROOTLIBDIR)/libpcre.a junk/$(DAARC)/lib && \
- $(foreach daincfile,$(DAINCLUDES), cp -a $(daincfile) junk/$(DAARC)/include &&) \
+ $(MUTE)mkdir junk && mkdir junk/$(DAARC) && \
+ cp -a $(DASRC) junk/$(DAARC) && \
cp -a $(DAMAKEFILE) junk/$(DAARC)/Makefile && \
+ cp -a $(DASPECFILE) junk/$(DAARC)/$(DAMODULE)$(DANAME)da.spec && \
cd junk && \
tar czf ../$(DATAR) * && \
cd .. && rm -rf junk
-tar-DA: $(DATAR)
+$(DATARGETNAME)-tar: $(DATAR)
$(DASPECFILE): $(DATARGETDIR)
+ $(MUTE)rm -f $(DASPECFILE)
@echo "***** Making RPM spec-file $(DASPECFILE) *****"
@echo "# RPM specfile for $(DAMODULE)$(DANAME) Detector Algorithm" >> $@
- @echo "Summary: DAQ Detector Algorithm for $(DAMODULE)" >> $@
- @echo "Name: daqDA-$(DAMODULE)-$(DAMODULE)$(DANAME)da" >> $@
+ @echo "Summary: $(DAMODULE) Detector Algorithm" >> $@
+ @echo "Name: daqDA-$(DAMODULE)$(DANAME)-calib" >> $@
@echo "Version: $(DAVERSION)" >> $@
@echo "Release: $(DARELEASE)" >> $@
@echo "Copyright: CERN Alice DAQ/Offine" >> $@
@echo "" >> $@
@echo "# description of the package" >> $@
@echo "%description" >> $@
- @echo "This is the $(DAMODULE)$(DANAME) Detector Algorithm for DAQ." >> $@
+ @echo "This is the $(DAMODULE)$(DANAME) DA for online calibration." >> $@
+ @echo "It uses data from $(DAMODULE) and $(EXTRADAMODULE) detectors at run time." >> $@
+ @echo "Build requires: daqDAlib, date, AliRoot $(DAALIROOTRELEASE), ROOT $(DAROOTRELEASE)." >> $@
+ @echo "Runtime requires: date." >> $@
+ @echo "Files produced: $(DAOUTPUTFILES)" >> $@
+ @echo "Files used: $(DAINPUTFILES)" >> $@
@echo "" >> $@
@echo "#################################################################" >> $@
@echo "# Do not modify following scripts" >> $@
@echo "# launched after rpm removed" >> $@
@echo "%postun" >> $@
-rpm-DA: $(DATAR) $(DASPECFILE)
+$(DATARGETNAME)-rpm: $(DATAR) $(DASPECFILE) $(DALIB) $(DADEP) $(EXTRAROOTLIB)
@echo "***** Making RPMS for $(DAMODULE)$(DANAME) detector-algorithm *****"
$(MUTE)rm -rf junk
$(MUTE)mkdir -p junk/SOURCES junk/SPECS junk/BUILD junk/RPMS junk/SRPMS
$(MUTE)cp $(DATAR) junk/SOURCES
- $(MUTE)rpmbuild --quiet --define "_topdir $(ALICE_ROOT)/junk" --nodeps -ba $(DASPECFILE)
+ $(MUTE)rpmbuild --quiet --define "_topdir $(ALICE_ROOT)/junk" --nodeps -bb $(DASPECFILE)
$(MUTE)find junk/ -name "$(DAARC)-*.rpm" -exec cp -p {} . \;
$(MUTE)rm -rf junk
@echo "***** RPMS created and put $(ALICE_ROOT) folder *****"
else
-static-DA: clean-DA
-clean-DA: tar-DA
-tar-DA: rpm-DA
-rpm-DA:
+$(DATARGETNAME): $(DATARGETNAME)-clean
+$(DATARGETNAME)-clean: $(DATARGETNAME)-tar
+$(DATARGETNAME)-tar: $(DATARGETNAME)-rpm
+$(DATARGETNAME)-rpm:
@echo
- @echo "****************************************************************************************************"
- @echo "* In order to build a detector-algorithm package you have to set the environment variable DAMODULE *"
- @echo "* For example: setenv DAMODULE TOF *"
- @echo "* or export DAMODULE=TOF *"
- @echo "* If you have only one detector-algorithm package then it is enough to have DAMODULEda.cxx *"
- @echo "* in your DAMODULE directory. In case of several detector-algorithms you have to specify also the *"
- @echo "* name of the algorithm whcih you want to build. The makefile will use DAMODULEDANAMEda.cxx *"
- @echo "* in your DAMODULE directory. Then in order to build your specific detector-algorithm package you *"
- @echo "* have to set the environment variable DANAME. *"
- @echo "* If the detector algorithm uses code from another sub-detector you can specify this by setting *"
- @echo "* the environment variable EXTRADAMODULE *"
- @echo "****************************************************************************************************"
+ @echo "*******************************************************************************************************"
+ @echo "* In order to build a detector-algorithm package you have run AliRoot make with the following syntax: *"
+ @echo "* For example: make TPC-da (compiles and link TPC/TPCda.cxx DA source file and produces TPCda.exe) *"
+ @echo "* make MUON-TRK-da (MUON is the AliRoot module, TRK is the name of the DA algorithm, *"
+ @echo "* this target will compile and link MUON/MUONTRKda.cxx and will *"
+ @echo "* produce MUONTRKda.exe) *"
+ @echo "* In case you want to build the corresponding DA tar archive or binary RPM, you have to add -tar or *"
+ @echo "* -rpm to your target name, for example: *"
+ @echo "* make TOF-da-rpm (compiles, links TOF/TOFda.cxx and builds the TOF DA binary RPM) *"
+ @echo "* make ITS-SPD-da-tar (compiles, link ITS/ITSSPDda.cxx and builds ITS SPD DA archive) *"
+ @echo "*******************************************************************************************************"
@echo
-
endif