]>
Commit | Line | Data |
---|---|---|
17cb72ed | 1 | #-*- Mode: Makefile -*- |
2 | ||
feddbf46 | 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))))))) | |
35f91121 | 5 | |
6 | ifeq ($(DANAME),) | |
7 | DATARGETNAME=$(DAMODULE)-da | |
8 | else | |
9 | DATARGETNAME=$(DAMODULE)-$(DANAME)-da | |
10 | endif | |
11 | ||
12 | ifneq ($(findstring $(DAMODULE),$(MODULES)),) | |
4179078a | 13 | |
17cb72ed | 14 | CXXFLAGS+=-I${ALICE_ROOT}/RAW |
4caead95 | 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)/*/))))) | |
17cb72ed | 17 | |
f2d76654 | 18 | DATARGETDIR=${DAMODULE}/tgt_${ALICE_TARGET} |
4caead95 | 19 | DASRC=${DAMODULE}/${DAMODULE}${DANAME}da.cxx |
f2d76654 | 20 | DAOBJ=${DATARGETDIR}/${DAMODULE}${DANAME}da.o |
35f91121 | 21 | DADEP=${DATARGETDIR}/${DAMODULE}${DANAME}da.d |
4caead95 | 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 | |
17cb72ed | 24 | |
35f91121 | 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_" | |
f2d76654 | 29 | |
35f91121 | 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)) | |
f2d76654 | 33 | endif |
35f91121 | 34 | DARELEASE:=$(DARELEASE)$(DAALIROOTRELEASE) |
f2d76654 | 35 | |
35f91121 | 36 | DAARC=daqDA-${DAMODULE}${DANAME}-calib-$(DAVERSION) |
f2d76654 | 37 | DATAR=${DATARGETDIR}/$(DAARC).src.tar.gz |
38 | DASPECFILE=${DATARGETDIR}/$(DAMODULE)$(DANAME)da.spec | |
39 | ||
40 | DAMAKEFILE=${DATARGETDIR}/${DAMODULE}${DANAME}da.make | |
e06bd7b4 | 41 | |
35f91121 | 42 | ifeq ($(DAQDALIB_PATH),) |
17cb72ed | 43 | DAQDADIR=${ALICE}/daqDAlib |
35f91121 | 44 | else |
45 | DAQDADIR=${DAQDALIB_PATH} | |
46 | endif | |
17cb72ed | 47 | DAQDALIB=$(DAQDADIR)/libdaqDA.a |
48 | ||
49 | ROOTLIBDIR=$(shell root-config --libdir) | |
50 | ||
4179078a | 51 | SYSLIBS=-ldl |
e06bd7b4 | 52 | |
17cb72ed | 53 | MONITORLIBS=$(shell date-config --monitorlibs=noshift) |
54 | ||
9c678667 | 55 | ALIROOTALIBS=$(RAWDatabaseALIB) $(RAWDatarecALIB) $(RAWDatasimALIB) $(STEERBaseALIB) $(STEERALIB) $(CDBALIB) $(ESDALIB) $(AODALIB) |
17cb72ed | 56 | |
4caead95 | 57 | ALIROOTALIBS+=$($(DAMODULE)ALIBS) |
17cb72ed | 58 | |
35f91121 | 59 | EXTRAROOTLIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/libRootExtra.a |
17cb72ed | 60 | |
35f91121 | 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))))))))))) |
17cb72ed | 62 | |
35f91121 | 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) | |
17cb72ed | 67 | endif |
68 | ||
35f91121 | 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 )) | |
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 | 273 | else |
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 | 292 | endif |