]> git.uio.no Git - u/mrichter/AliRoot.git/blame - build/MakefileDA
Up to date of the components (Marian, Lars, Alexander)
[u/mrichter/AliRoot.git] / build / MakefileDA
CommitLineData
17cb72ed 1#-*- Mode: Makefile -*-
2
feddbf46 3DAMODULE=$(firstword $(subst -, ,$(subst -da,,$(subst -da-rpm,,$(subst -da-clean,,$(filter %-da %-da-rpm %-da-clean,$(MAKECMDGOALS)))))))
4DANAME=$(word 2,$(subst -, ,$(subst -da,,$(subst -da-rpm,,$(subst -da-clean,,$(filter %-da %-da-rpm %-da-clean,$(MAKECMDGOALS)))))))
35f91121 5
6ifeq ($(DANAME),)
7DATARGETNAME=$(DAMODULE)-da
8else
9DATARGETNAME=$(DAMODULE)-$(DANAME)-da
10endif
11
12ifneq ($(findstring $(DAMODULE),$(MODULES)),)
4179078a 13
17cb72ed 14CXXFLAGS+=-I${ALICE_ROOT}/RAW
4caead95 15CXXFLAGS+=-I${ALICE_ROOT}/$(DAMODULE)
16CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(DAMODULE)/*/)))))
17cb72ed 17
f2d76654 18DATARGETDIR=${DAMODULE}/tgt_${ALICE_TARGET}
4caead95 19DASRC=${DAMODULE}/${DAMODULE}${DANAME}da.cxx
f2d76654 20DAOBJ=${DATARGETDIR}/${DAMODULE}${DANAME}da.o
35f91121 21DADEP=${DATARGETDIR}/${DAMODULE}${DANAME}da.d
4caead95 22DALIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/lib${DAMODULE}${DANAME}DA.a
23DAEXE=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}/${DAMODULE}${DANAME}da.exe
17cb72ed 24
35f91121 25DAVERSION=$(firstword $(shell cvs status $(DASRC) | grep "Working revision:" | cut -d: -f2 ))
26
27DAROOTRELEASE=$(subst /,.,$(shell root-config --version))
28DARELEASE:="Root_"$(DAROOTRELEASE)"__AliRoot_"
f2d76654 29
35f91121 30DAALIROOTRELEASE=$(subst -,.,$(firstword $(shell cvs status $(DASRC) | grep "Sticky Tag:" | cut -d: -f2 )))
31ifeq ($(DAALIROOTRELEASE),(none))
32DAALIROOTRELEASE:="HEAD_"$(subst -,.,$(shell date --iso-8601))
f2d76654 33endif
35f91121 34DARELEASE:=$(DARELEASE)$(DAALIROOTRELEASE)
f2d76654 35
35f91121 36DAARC=daqDA-${DAMODULE}${DANAME}-calib-$(DAVERSION)
f2d76654 37DATAR=${DATARGETDIR}/$(DAARC).src.tar.gz
38DASPECFILE=${DATARGETDIR}/$(DAMODULE)$(DANAME)da.spec
39
40DAMAKEFILE=${DATARGETDIR}/${DAMODULE}${DANAME}da.make
e06bd7b4 41
35f91121 42ifeq ($(DAQDALIB_PATH),)
17cb72ed 43DAQDADIR=${ALICE}/daqDAlib
35f91121 44else
45DAQDADIR=${DAQDALIB_PATH}
46endif
17cb72ed 47DAQDALIB=$(DAQDADIR)/libdaqDA.a
48
49ROOTLIBDIR=$(shell root-config --libdir)
50
4179078a 51SYSLIBS=-ldl
e06bd7b4 52
17cb72ed 53MONITORLIBS=$(shell date-config --monitorlibs=noshift)
54
4caead95 55ALIROOTALIBS=$(RAWDatabaseALIB) $(RAWDatarecALIB) $(RAWDatasimALIB) $(STEERALIB) $(CDBALIB) $(ESDALIB) $(AODALIB)
17cb72ed 56
4caead95 57ALIROOTALIBS+=$($(DAMODULE)ALIBS)
17cb72ed 58
35f91121 59EXTRAROOTLIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/libRootExtra.a
17cb72ed 60
35f91121 61EXTRADAMODULE:=$(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)))))))))))
17cb72ed 62
35f91121 63ifneq ($(EXTRADAMODULE),)
64CXXFLAGS+=-I${ALICE_ROOT}/$(EXTRADAMODULE)
65CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(EXTRADAMODULE)/*/)))))
66ALIROOTALIBS+=$($(EXTRADAMODULE)ALIBS)
17cb72ed 67endif
68
35f91121 69DAOUTPUTFILES=$(sort $(shell grep TFile $(DASRC) | grep '(' | grep ')' | grep -i recreate | cut -d'(' -f2 | cut -d',' -f1 | cut -d')' -f1 ))
70DAINPUTFILES=$(sort $(shell grep TFile $(DASRC) | grep '(' | grep ')' | grep -vi recreate | cut -d'(' -f2 | cut -d',' -f1 | cut -d')' -f1 ))
17cb72ed 71
35f91121 72$(DATARGETNAME): $(DAEXE)
73
74$(DAEXE): $(DAOBJ) $(LIBPATH) $(DALIB) $(DAQDALIB) $(EXTRAROOTLIB)
f2d76654 75 @echo "***** Making executable $(DAEXE) *****"
35f91121 76 $(MUTE)$(LD) $(LDFLAGS) -o $@ $< \
77 $(DALIB) \
78 $(EXTRAROOTLIB) \
4179078a 79 $(ROOTLIBDIR)/libRoot.a \
80 $(ROOTLIBDIR)/libfreetype.a $(ROOTLIBDIR)/libpcre.a \
35f91121 81 $(DAQDALIB) $(MONITORLIBS) \
82 $(SYSLIBS)
17cb72ed 83
f2d76654 84$(DAOBJ): $(DASRC) $(DAQDADIR) $(DADEP) $(DATARGETDIR)
85 @echo "***** Compiling $(DASRC) *****"
4caead95 86 $(MUTE)$(CXX) -c $(CXXFLAGS) -I$(DAQDADIR) $< -o $@
4179078a 87
f2d76654 88$(DADEP): $(DASRC) $(DAQDADIR) $(DATARGETDIR)
89 @echo "***** Making detector-algorithm dependencies $(DADEP) *****"
35f91121 90 $(MUTE)$(CPP) -MM $(CXXFLAGS) $(addprefix -I$(ALICE_ROOT)/,$(MODULES)) -I$(DAQDADIR) $< > $@
17cb72ed 91
92-include $(DADEP)
93
f2d76654 94$(DATARGETDIR):
95 $(MUTE)if [ ! -d '$@' ]; then echo "***** Making directory $@ *****"; mkdir -p $@; fi
96
17cb72ed 97$(DALIB): $(ALIROOTALIBS)
f2d76654 98 @echo "***** Linking static library $(DALIB) *****"
4caead95 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
17cb72ed 102
35f91121 103$(EXTRAROOTLIB): $(LIBPATH)
104 $(MUTE)$(AR) r $@ `ls ${ROOTSYS}/vmc/src/*.o ${ROOTSYS}/treeplayer/src/*.o`
105
106$(DATARGETNAME)-clean:
f2d76654 107 @echo "***** Cleaning $(DAMODULE)$(DANAME) detector-algorithm *****"
108 $(MUTE)rm -f $(DASPECFILE)
109 $(MUTE)rm -f $(DATAR)
4caead95 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)
35f91121 116 $(MUTE)rm -f $(EXTRAROOTLIB)
17cb72ed 117
f2d76654 118$(DAMAKEFILE): $(DATARGETDIR)
35f91121 119 $(MUTE)rm -f $(DAMAKEFILE)
f2d76654 120 @echo "***** Making makefile $(DAMAKEFILE) *****"
35f91121 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 "" >> $@
e06bd7b4 142 @echo "DAQDALIB=""$$""(DAQDADIR)/libdaqDA.a" >> $@
143 @echo "MONITORLIBS=""$$""(shell date-config --monitorlibs=noshift)" >> $@
35f91121 144 @echo "" >> $@
4caead95 145 @echo "${DAMODULE}${DANAME}da.exe: ${DAMODULE}${DANAME}da.o" >> $@
35f91121 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 "" >> $@
4caead95 154 @echo "${DAMODULE}${DANAME}da.o: ${DAMODULE}${DANAME}da.cxx" >> $@
e06bd7b4 155 @echo " ""$$""(CXX) -c ""$$""(CXXFLAGS) -I""$$""(DAQDADIR) ""$$""< -o ""$$""@" >> $@
35f91121 156 @echo "" >> $@
e06bd7b4 157 @echo "clean:" >> $@
4caead95 158 @echo " @rm -f ${DAMODULE}${DANAME}da.exe ${DAMODULE}${DANAME}da.o" >> $@
35f91121 159 @echo "" >> $@
f2d76654 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
35f91121 167$(DATAR): $(DASRC) $(DAMAKEFILE) $(DASPECFILE)
f2d76654 168 @echo "***** Making archive $(DATAR) *****"
169 $(MUTE)rm -rf $(DATAR)
4caead95 170 $(MUTE)rm -rf junk
35f91121 171 $(MUTE)mkdir junk && mkdir junk/$(DAARC) && \
172 cp -a $(DASRC) junk/$(DAARC) && \
f2d76654 173 cp -a $(DAMAKEFILE) junk/$(DAARC)/Makefile && \
35f91121 174 cp -a $(DASPECFILE) junk/$(DAARC)/$(DAMODULE)$(DANAME)da.spec && \
17cb72ed 175 cd junk && \
f2d76654 176 tar czf ../$(DATAR) * && \
17cb72ed 177 cd .. && rm -rf junk
4179078a 178
f2d76654 179$(DASPECFILE): $(DATARGETDIR)
35f91121 180 $(MUTE)rm -f $(DASPECFILE)
f2d76654 181 @echo "***** Making RPM spec-file $(DASPECFILE) *****"
182 @echo "# RPM specfile for $(DAMODULE)$(DANAME) Detector Algorithm" >> $@
35f91121 183 @echo "Summary: $(DAMODULE) Detector Algorithm" >> $@
184 @echo "Name: daqDA-$(DAMODULE)$(DANAME)-calib" >> $@
f2d76654 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" >> $@
35f91121 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)" >> $@
f2d76654 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
35f91121 263$(DATARGETNAME)-rpm: $(DATAR) $(DASPECFILE) $(DALIB) $(DADEP) $(EXTRAROOTLIB)
f2d76654 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
35f91121 268 $(MUTE)rpmbuild --quiet --define "_topdir $(ALICE_ROOT)/junk" --nodeps -bb $(DASPECFILE)
f2d76654 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
4179078a 273else
274
35f91121 275$(DATARGETNAME): $(DATARGETNAME)-clean
feddbf46 276$(DATARGETNAME)-clean: $(DATARGETNAME)-rpm
35f91121 277$(DATARGETNAME)-rpm:
4179078a 278 @echo
35f91121 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) *"
feddbf46 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: *"
35f91121 287 @echo "* make TOF-da-rpm (compiles, links TOF/TOFda.cxx and builds the TOF DA binary RPM) *"
feddbf46 288 @echo "* make ITS-SPD-da-rpm (compiles, link ITS/ITSSPDda.cxx and builds ITS SPD DA binary RPM) *"
35f91121 289 @echo "*******************************************************************************************************"
4179078a 290 @echo
291
4179078a 292endif