]> git.uio.no Git - u/mrichter/AliRoot.git/blob - build/MakefileDA
Removing MC position of the primary vertex (Jouri)
[u/mrichter/AliRoot.git] / build / MakefileDA
1 #-*- Mode: Makefile -*-
2
3 DAMODULE=$(firstword $(subst -, ,$(subst -da,,$(subst -da-rpm,,$(subst -da-clean,,$(filter %-da %-da-rpm %-da-clean,$(MAKECMDGOALS)))))))
4 DANAME=$(word 2,$(subst -, ,$(subst -da,,$(subst -da-rpm,,$(subst -da-clean,,$(filter %-da %-da-rpm %-da-clean,$(MAKECMDGOALS)))))))
5
6 ifeq ($(DANAME),)
7 DATARGETNAME=$(DAMODULE)-da
8 else
9 DATARGETNAME=$(DAMODULE)-$(DANAME)-da
10 endif
11
12 ifneq ($(findstring $(DAMODULE),$(MODULES)),)
13
14 CXXFLAGS+=-I${ALICE_ROOT}/RAW
15 CXXFLAGS+=-I${ALICE_ROOT}/$(DAMODULE)
16 CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(DAMODULE)/*/)))))
17
18 DATARGETDIR=${DAMODULE}/tgt_${ALICE_TARGET}
19 DASRC=${DAMODULE}/${DAMODULE}${DANAME}da.cxx
20 DAOBJ=${DATARGETDIR}/${DAMODULE}${DANAME}da.o
21 DADEP=${DATARGETDIR}/${DAMODULE}${DANAME}da.d
22 DALIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/lib${DAMODULE}${DANAME}DA.a
23 DAEXE=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}/${DAMODULE}${DANAME}da.exe
24
25 DAVERSION=$(firstword $(shell cvs status $(DASRC) | grep "Working revision:" | cut -d: -f2 ))
26
27 DAROOTRELEASE=$(subst /,.,$(shell root-config --version))
28 DARELEASE:="Root_"$(DAROOTRELEASE)"__AliRoot_"
29
30 DAALIROOTRELEASE=$(subst -,.,$(firstword $(shell cvs status $(DASRC) | grep "Sticky Tag:" | cut -d: -f2 )))
31 ifeq ($(DAALIROOTRELEASE),(none))
32 DAALIROOTRELEASE:="HEAD_"$(subst -,.,$(shell date --iso-8601))
33 endif
34 DARELEASE:=$(DARELEASE)$(DAALIROOTRELEASE)
35
36 DAARC=daqDA-${DAMODULE}${DANAME}-calib-$(DAVERSION)
37 DATAR=${DATARGETDIR}/$(DAARC).src.tar.gz
38 DASPECFILE=${DATARGETDIR}/$(DAMODULE)$(DANAME)da.spec
39
40 DAMAKEFILE=${DATARGETDIR}/${DAMODULE}${DANAME}da.make
41
42 ifeq ($(DAQDALIB_PATH),)
43 DAQDADIR=${ALICE}/daqDAlib
44 else
45 DAQDADIR=${DAQDALIB_PATH}
46 endif
47 DAQDALIB=$(DAQDADIR)/libdaqDA.a
48
49 ROOTLIBDIR=$(shell root-config --libdir)
50
51 SYSLIBS=-ldl
52
53 MONITORLIBS=$(shell date-config --monitorlibs=noshift)
54
55 ALIROOTALIBS=$(RAWDatabaseALIB) $(RAWDatarecALIB) $(RAWDatasimALIB) $(STEERALIB) $(CDBALIB) $(ESDALIB) $(AODALIB)
56
57 ALIROOTALIBS+=$($(DAMODULE)ALIBS)
58
59 EXTRAROOTLIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/libRootExtra.a
60
61 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)))))))))))
62
63 ifneq ($(EXTRADAMODULE),)
64 CXXFLAGS+=-I${ALICE_ROOT}/$(EXTRADAMODULE)
65 CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(EXTRADAMODULE)/*/)))))
66 ALIROOTALIBS+=$($(EXTRADAMODULE)ALIBS)
67 endif
68
69 DAOUTPUTFILES=$(sort $(shell grep TFile $(DASRC) | grep '(' | grep ')' | grep -i recreate | cut -d'(' -f2 | cut -d',' -f1 | cut -d')' -f1 ))
70 DAINPUTFILES=$(sort $(shell grep TFile $(DASRC) | grep '(' | grep ')' | grep -vi recreate | cut -d'(' -f2 | cut -d',' -f1 | cut -d')' -f1 ))
71
72 $(DATARGETNAME): $(DAEXE)
73
74 $(DAEXE): $(DAOBJ) $(LIBPATH) $(DALIB) $(DAQDALIB) $(EXTRAROOTLIB)
75         @echo "***** Making executable $(DAEXE) *****"
76         $(MUTE)$(LD) $(LDFLAGS) -o $@ $< \
77         $(DALIB) \
78         $(EXTRAROOTLIB) \
79         $(ROOTLIBDIR)/libRoot.a \
80         $(ROOTLIBDIR)/libfreetype.a $(ROOTLIBDIR)/libpcre.a \
81         $(DAQDALIB) $(MONITORLIBS) \
82         $(SYSLIBS)
83
84 $(DAOBJ): $(DASRC) $(DAQDADIR) $(DADEP) $(DATARGETDIR)
85         @echo "***** Compiling $(DASRC) *****"
86         $(MUTE)$(CXX) -c $(CXXFLAGS) -I$(DAQDADIR) $< -o $@
87
88 $(DADEP): $(DASRC) $(DAQDADIR) $(DATARGETDIR)
89         @echo "***** Making detector-algorithm dependencies $(DADEP) *****"
90         $(MUTE)$(CPP) -MM $(CXXFLAGS) $(addprefix -I$(ALICE_ROOT)/,$(MODULES)) -I$(DAQDADIR) $< > $@
91
92 -include $(DADEP)
93
94 $(DATARGETDIR):
95         $(MUTE)if [ ! -d '$@' ]; then echo "***** Making directory $@ *****"; mkdir -p $@; fi
96
97 $(DALIB): $(ALIROOTALIBS)
98         @echo "***** Linking static library $(DALIB) *****"
99         $(MUTE)rm -rf $@
100         $(MUTE)rm -rf junk
101         $(MUTE)mkdir junk && cd junk && $(addprefix $(AR) x ../,$(addsuffix &&,$^)) $(AR) r $@ *.o && cd .. && rm -rf junk
102
103 $(EXTRAROOTLIB): $(LIBPATH) 
104         $(MUTE)$(AR) r $@ `ls ${ROOTSYS}/vmc/src/*.o ${ROOTSYS}/treeplayer/src/*.o`
105
106 $(DATARGETNAME)-clean:
107         @echo "***** Cleaning $(DAMODULE)$(DANAME) detector-algorithm *****"
108         $(MUTE)rm -f $(DASPECFILE)
109         $(MUTE)rm -f $(DATAR)
110         $(MUTE)rm -f $(DAEXE)
111         $(MUTE)rm -f $(DAOBJ)
112         $(MUTE)rm -f $(DADEP)
113         $(MUTE)rm -f $(DAMAKEFILE)
114         $(MUTE)rm -f $(DALIB)
115         $(MUTE)rm -f $(ALIROOTALIBS)
116         $(MUTE)rm -f $(EXTRAROOTLIB)
117
118 $(DAMAKEFILE): $(DATARGETDIR)
119         $(MUTE)rm -f $(DAMAKEFILE)
120         @echo "***** Making makefile $(DAMAKEFILE) *****"
121         @echo "####################################################" >> $@
122         @echo "# Makefile for Detector Algorithm" >> $@
123         @echo "#" >> $@
124         @echo "# It is necessary to setup build environment before" >> $@
125         @echo "# using make:" >> $@
126         @echo "# - define path to daqDAlib (env. DAQDALIB_PATH)" >> $@
127         @echo "#" >> $@
128         @echo "####################################################" >> $@
129         @echo "" >> $@
130         @echo "CXX=$(CXX)" >> $@
131         @echo "LD=$(LD)" >> $@
132         @echo "" >> $@
133         @echo "CXXFLAGS=$(CXXFLAGS)" >> $@
134         @echo "LDFLAGS=$(LDFLAGS)" >> $@
135         @echo "" >> $@
136         @echo "ifeq (""$$""(DAQDALIB_PATH),)" >> $@
137         @echo "DAQDADIR=${ALICE}/daqDAlib" >> $@
138         @echo "else" >> $@
139         @echo "DAQDADIR=""$$""(DAQDALIB_PATH)" >> $@
140         @echo "endif" >> $@
141         @echo "" >> $@
142         @echo "DAQDALIB=""$$""(DAQDADIR)/libdaqDA.a" >> $@
143         @echo "MONITORLIBS=""$$""(shell date-config --monitorlibs=noshift)" >> $@
144         @echo "" >> $@
145         @echo "${DAMODULE}${DANAME}da.exe: ${DAMODULE}${DANAME}da.o" >> $@
146         @echo "         ""$$""(LD) ""$$""(LDFLAGS) -o ""$$""@ ""$$""< \\" >> $@
147         @echo "         $(DALIB) \\" >> $@
148         @echo "         $(EXTRAROOTLIB) \\" >> $@
149         @echo "         ""$$""(ROOTSYS)/lib/libRoot.a \\" >> $@
150         @echo "         ""$$""(ROOTSYS)/lib/libfreetype.a ""$$""(ROOTSYS)/lib/libpcre.a \\" >> $@
151         @echo "         ""$$""(DAQDALIB) ""$$""(MONITORLIBS) \\" >> $@
152         @echo "         $(SYSLIBS)" >> $@
153         @echo "" >> $@
154         @echo "${DAMODULE}${DANAME}da.o: ${DAMODULE}${DANAME}da.cxx" >> $@
155         @echo "         ""$$""(CXX) -c ""$$""(CXXFLAGS) -I""$$""(DAQDADIR) ""$$""< -o ""$$""@" >> $@
156         @echo "" >> $@
157         @echo "clean:" >> $@
158         @echo "         @rm -f ${DAMODULE}${DANAME}da.exe ${DAMODULE}${DANAME}da.o" >> $@
159         @echo "" >> $@
160         @echo "install: ${DAMODULE}${DANAME}da.exe" >> $@
161         @echo "         @if [ '""$$""(INSTALL_PATH)' == '' ]; then \\" >> $@
162         @echo "         echo Environment variable INSTALL_PATH undefined, cannot continue; \\" >> $@
163         @echo "         exit 1; \\" >> $@
164         @echo "         fi" >> $@
165         @echo "         @cp -p ${DAMODULE}${DANAME}da.exe ""$$""(INSTALL_PATH)" >> $@
166
167 $(DATAR): $(DASRC) $(DAMAKEFILE) $(DASPECFILE)
168         @echo "***** Making archive $(DATAR) *****"
169         $(MUTE)rm -rf $(DATAR)
170         $(MUTE)rm -rf junk
171         $(MUTE)mkdir junk && mkdir junk/$(DAARC) && \
172         cp -a $(DASRC) junk/$(DAARC) && \
173         cp -a $(DAMAKEFILE) junk/$(DAARC)/Makefile && \
174         cp -a $(DASPECFILE) junk/$(DAARC)/$(DAMODULE)$(DANAME)da.spec && \
175         cd junk && \
176         tar czf ../$(DATAR) * && \
177         cd .. && rm -rf junk
178
179 $(DASPECFILE): $(DATARGETDIR)
180         $(MUTE)rm -f $(DASPECFILE)
181         @echo "***** Making RPM spec-file $(DASPECFILE) *****"
182         @echo "# RPM specfile for $(DAMODULE)$(DANAME) Detector Algorithm" >> $@
183         @echo "Summary: $(DAMODULE) Detector Algorithm" >> $@
184         @echo "Name: daqDA-$(DAMODULE)$(DANAME)-calib" >> $@
185         @echo "Version: $(DAVERSION)" >> $@
186         @echo "Release: $(DARELEASE)" >> $@
187         @echo "Copyright: CERN Alice DAQ/Offine" >> $@
188         @echo "Source: %{name}-%{version}.src.tar.gz" >> $@
189         @echo "Group: Applications/Alice" >> $@
190         @echo "Prefix: /opt/%{name}" >> $@
191         @echo "BuildRoot: %{_tmppath}/%{name}-root" >> $@
192         @echo "" >> $@
193         @echo "# automatic dependencies" >> $@
194         @echo "AutoReqProv: yes" >> $@
195         @echo "" >> $@
196         @echo "# list here required RPM packages for compilation" >> $@
197         @echo "BuildRequires: date" >> $@
198         @echo "" >> $@
199         @echo "# list here required RPM packages for runtime" >> $@
200         @echo "Requires: date" >> $@
201         @echo "" >> $@
202         @echo "# You can specify other dependencies in the description tag below." >> $@
203         @echo "" >> $@
204         @echo "# description of the package" >> $@
205         @echo "%description" >> $@
206         @echo "This is the $(DAMODULE)$(DANAME) DA for online calibration." >> $@
207         @echo "It uses data from $(DAMODULE) and $(EXTRADAMODULE) detectors at run time." >> $@
208         @echo "Build requires: daqDAlib, date, AliRoot $(DAALIROOTRELEASE), ROOT $(DAROOTRELEASE)." >> $@
209         @echo "Runtime requires: date." >> $@
210         @echo "Files produced: $(DAOUTPUTFILES)" >> $@
211         @echo "Files used: $(DAINPUTFILES)" >> $@
212         @echo "" >> $@
213         @echo "#################################################################" >> $@
214         @echo "# Do not modify following scripts" >> $@
215         @echo "#################################################################" >> $@
216         @echo "" >> $@
217         @echo "# here is defined the installation root directory" >> $@
218         @echo "%define pkgname %{name}-%{version}" >> $@
219         @echo "%define destdir %{prefix}" >> $@
220         @echo "" >> $@
221         @echo "# pre-compilation script: extract from tarball" >> $@
222         @echo "%prep" >> $@
223         @echo "# extract archive" >> $@
224         @echo "%setup -n %{pkgname}" >> $@
225         @echo "" >> $@
226         @echo "# compile" >> $@
227         @echo "%build" >> $@
228         @echo "export DATE_SITE=" >> $@
229         @echo ". /date/setup.sh" >> $@
230         @echo "gmake" >> $@
231         @echo "" >> $@
232         @echo "# install runtime files" >> $@
233         @echo "%install" >> $@
234         @echo "#remove install dir if existing" >> $@
235         @echo "[ -d ""$$""RPM_BUILD_ROOT ] && rm -rf ""$$""RPM_BUILD_ROOT" >> $@
236         @echo "#make install in install root directory" >> $@
237         @echo "mkdir -p ""$$""RPM_BUILD_ROOT/%{prefix}" >> $@
238         @echo "make install INSTALL_PATH=""$$""RPM_BUILD_ROOT/%{prefix}" >> $@
239         @echo "" >> $@
240         @echo "# clean RPM build files" >> $@
241         @echo "%clean" >> $@
242         @echo "# remove source files" >> $@
243         @echo "rm -rf ""$$""RPM_BUILD_DIR/%{pkgname}" >> $@
244         @echo "# remove installed files" >> $@
245         @echo "rm -rf ""$$""RPM_BUILD_ROOT" >> $@
246         @echo "" >> $@
247         @echo "# pre-install script" >> $@
248         @echo "%pre" >> $@
249         @echo "" >> $@
250         @echo "# list of files to be installed" >> $@
251         @echo "%files" >> $@
252         @echo "%defattr (-,root,root)" >> $@
253         @echo "%{destdir}" >> $@
254         @echo "" >> $@
255         @echo "# post-install script" >> $@
256         @echo "# launched after rpm installed" >> $@
257         @echo "%post" >> $@
258         @echo "" >> $@
259         @echo "# post-uninstall script" >> $@
260         @echo "# launched after rpm removed" >> $@
261         @echo "%postun" >> $@
262
263 $(DATARGETNAME)-rpm: $(DATAR) $(DASPECFILE) $(DALIB) $(DADEP) $(EXTRAROOTLIB)
264         @echo "***** Making RPMS for $(DAMODULE)$(DANAME) detector-algorithm *****"
265         $(MUTE)rm -rf junk
266         $(MUTE)mkdir -p junk/SOURCES junk/SPECS junk/BUILD junk/RPMS junk/SRPMS
267         $(MUTE)cp $(DATAR) junk/SOURCES
268         $(MUTE)rpmbuild --quiet --define "_topdir $(ALICE_ROOT)/junk" --nodeps -bb $(DASPECFILE)
269         $(MUTE)find junk/ -name "$(DAARC)-*.rpm" -exec cp -p {} . \;
270         $(MUTE)rm -rf junk
271         @echo "***** RPMS created and put $(ALICE_ROOT) folder *****"
272
273 else
274
275 $(DATARGETNAME):        $(DATARGETNAME)-clean
276 $(DATARGETNAME)-clean:  $(DATARGETNAME)-rpm
277 $(DATARGETNAME)-rpm:
278         @echo
279         @echo "*******************************************************************************************************"
280         @echo "* In order to build a detector-algorithm package you have run AliRoot make with the following syntax: *"
281         @echo "* For example: make TPC-da (compiles and link TPC/TPCda.cxx DA source file and produces TPCda.exe)    *"
282         @echo "*              make MUON-TRK-da (MUON is the AliRoot module, TRK is the name of the DA algorithm,     *"
283         @echo "*                                this target will compile and link MUON/MUONTRKda.cxx and will        *"
284         @echo "*                                produce MUONTRKda.exe)                                               *"
285         @echo "* In case you want to build the corresponding DA binary RPM, you have to add -rpm to your target name,*"
286         @echo "* for example:                                                                                        *"
287         @echo "*              make TOF-da-rpm  (compiles, links TOF/TOFda.cxx and builds the TOF DA binary RPM)      *"
288         @echo "*              make ITS-SPD-da-rpm (compiles, link ITS/ITSSPDda.cxx and builds ITS SPD DA binary RPM) *"
289         @echo "*******************************************************************************************************"
290         @echo
291
292 endif