]>
Commit | Line | Data |
---|---|---|
17cb72ed | 1 | #-*- Mode: Makefile -*- |
2 | ||
4179078a | 3 | ifdef DAMODULE |
4 | ||
17cb72ed | 5 | CXXFLAGS+=-I${ALICE_ROOT}/RAW |
4caead95 | 6 | CXXFLAGS+=-I${ALICE_ROOT}/$(DAMODULE) |
7 | CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(DAMODULE)/*/))))) | |
17cb72ed | 8 | |
9 | ifneq ($(EXTRADAMODULE),) | |
10 | CXXFLAGS+=-I${ALICE_ROOT}/$(EXTRADAMODULE) | |
4caead95 | 11 | CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(EXTRADAMODULE)/*/))))) |
17cb72ed | 12 | endif |
13 | ||
f2d76654 | 14 | DATARGETDIR=${DAMODULE}/tgt_${ALICE_TARGET} |
4caead95 | 15 | DASRC=${DAMODULE}/${DAMODULE}${DANAME}da.cxx |
f2d76654 | 16 | DADEP=${DATARGETDIR}/${DAMODULE}${DANAME}da.d |
17 | DAOBJ=${DATARGETDIR}/${DAMODULE}${DANAME}da.o | |
4caead95 | 18 | DALIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/lib${DAMODULE}${DANAME}DA.a |
19 | DAEXE=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}/${DAMODULE}${DANAME}da.exe | |
17cb72ed | 20 | |
f2d76654 | 21 | ifeq ($(DAVERSION),) |
22 | DAVERSION=1.0 | |
23 | endif | |
24 | ||
25 | ifeq ($(DARELEASE),) | |
26 | DARELEASE=1 | |
27 | endif | |
28 | ||
29 | DAARC=daqDA-${DAMODULE}-${DAMODULE}${DANAME}da-$(DAVERSION) | |
30 | DATAR=${DATARGETDIR}/$(DAARC).src.tar.gz | |
31 | DASPECFILE=${DATARGETDIR}/$(DAMODULE)$(DANAME)da.spec | |
32 | ||
33 | DAMAKEFILE=${DATARGETDIR}/${DAMODULE}${DANAME}da.make | |
e06bd7b4 | 34 | |
17cb72ed | 35 | DAQDADIR=${ALICE}/daqDAlib |
36 | DAQDALIB=$(DAQDADIR)/libdaqDA.a | |
37 | ||
38 | ROOTLIBDIR=$(shell root-config --libdir) | |
39 | ||
4179078a | 40 | SYSLIBS=-ldl |
e06bd7b4 | 41 | |
17cb72ed | 42 | MONITORLIBS=$(shell date-config --monitorlibs=noshift) |
43 | ||
4caead95 | 44 | ALIROOTALIBS=$(RAWDatabaseALIB) $(RAWDatarecALIB) $(RAWDatasimALIB) $(STEERALIB) $(CDBALIB) $(ESDALIB) $(AODALIB) |
17cb72ed | 45 | |
4caead95 | 46 | ALIROOTALIBS+=$($(DAMODULE)ALIBS) |
17cb72ed | 47 | |
48 | ifneq ($(EXTRADAMODULE),) | |
49 | ||
4caead95 | 50 | ALIROOTALIBS+=$($(EXTRADAMODULE)ALIBS) |
17cb72ed | 51 | |
52 | endif | |
53 | ||
54 | static-DA: $(DAEXE) | |
55 | ||
56 | $(DAEXE): $(LIBPATH) $(DAOBJ) $(DALIB) $(DAQDALIB) | |
f2d76654 | 57 | @echo "***** Making executable $(DAEXE) *****" |
4caead95 | 58 | $(MUTE)$(LD) $(LDFLAGS) -o $@ $(DAOBJ) $(DALIB) \ |
4179078a | 59 | $(SYSLIBS) \ |
60 | $(ROOTLIBDIR)/libRoot.a \ | |
61 | $(ROOTLIBDIR)/libfreetype.a $(ROOTLIBDIR)/libpcre.a \ | |
62 | $(MONITORLIBS) $(DAQDALIB) | |
17cb72ed | 63 | |
f2d76654 | 64 | $(DAOBJ): $(DASRC) $(DAQDADIR) $(DADEP) $(DATARGETDIR) |
65 | @echo "***** Compiling $(DASRC) *****" | |
4caead95 | 66 | $(MUTE)$(CXX) -c $(CXXFLAGS) -I$(DAQDADIR) $< -o $@ |
4179078a | 67 | |
f2d76654 | 68 | $(DADEP): $(DASRC) $(DAQDADIR) $(DATARGETDIR) |
69 | @echo "***** Making detector-algorithm dependencies $(DADEP) *****" | |
4caead95 | 70 | $(MUTE)$(CPP) -MM $(CXXFLAGS) -I$(DAQDADIR) $< > $@ |
17cb72ed | 71 | |
72 | DAINCLUDES=$(sort $(filter-out %.o:,$(filter-out %.cxx,$(filter-out \,$(shell cat $(DADEP)))))) | |
73 | ||
74 | -include $(DADEP) | |
75 | ||
f2d76654 | 76 | $(DATARGETDIR): |
77 | $(MUTE)if [ ! -d '$@' ]; then echo "***** Making directory $@ *****"; mkdir -p $@; fi | |
78 | ||
17cb72ed | 79 | $(DALIB): $(ALIROOTALIBS) |
f2d76654 | 80 | @echo "***** Linking static library $(DALIB) *****" |
4caead95 | 81 | $(MUTE)rm -rf $@ |
82 | $(MUTE)rm -rf junk | |
83 | $(MUTE)mkdir junk && cd junk && $(addprefix $(AR) x ../,$(addsuffix &&,$^)) $(AR) r $@ *.o && cd .. && rm -rf junk | |
17cb72ed | 84 | |
85 | clean-DA: | |
f2d76654 | 86 | @echo "***** Cleaning $(DAMODULE)$(DANAME) detector-algorithm *****" |
87 | $(MUTE)rm -f $(DASPECFILE) | |
88 | $(MUTE)rm -f $(DATAR) | |
4caead95 | 89 | $(MUTE)rm -f $(DAEXE) |
90 | $(MUTE)rm -f $(DAOBJ) | |
91 | $(MUTE)rm -f $(DADEP) | |
92 | $(MUTE)rm -f $(DAMAKEFILE) | |
93 | $(MUTE)rm -f $(DALIB) | |
94 | $(MUTE)rm -f $(ALIROOTALIBS) | |
17cb72ed | 95 | |
f2d76654 | 96 | $(DAMAKEFILE): $(DATARGETDIR) |
97 | @echo "***** Making makefile $(DAMAKEFILE) *****" | |
e06bd7b4 | 98 | @echo "CXXFLAGS+=""$$""(shell date-config --cflags)" > $@ |
99 | @echo "CXXFLAGS+=-Iinclude" >> $@ | |
100 | @echo "DAQDADIR=daqDAlib" >> $@ | |
101 | @echo "DAQDALIB=""$$""(DAQDADIR)/libdaqDA.a" >> $@ | |
102 | @echo "MONITORLIBS=""$$""(shell date-config --monitorlibs=noshift)" >> $@ | |
4caead95 | 103 | @echo "${DAMODULE}${DANAME}da.exe: ${DAMODULE}${DANAME}da.o" >> $@ |
e06bd7b4 | 104 | @echo " ""$$""(CXX) ""$$""(LDFLAGS) -o ""$$""@ ""$$""< \\" >> $@ |
4caead95 | 105 | @echo " lib/lib${DAMODULE}${DANAME}DA.a \\" >> $@ |
e06bd7b4 | 106 | @echo " $(SYSLIBS) \\" >> $@ |
107 | @echo " lib/libRoot.a \\" >> $@ | |
108 | @echo " lib/libfreetype.a lib/libpcre.a \\" >> $@ | |
109 | @echo " ""$$""(MONITORLIBS) ""$$""(DAQDALIB)" >> $@ | |
4caead95 | 110 | @echo "${DAMODULE}${DANAME}da.o: ${DAMODULE}${DANAME}da.cxx" >> $@ |
e06bd7b4 | 111 | @echo " ""$$""(CXX) -c ""$$""(CXXFLAGS) -I""$$""(DAQDADIR) ""$$""< -o ""$$""@" >> $@ |
112 | @echo "clean:" >> $@ | |
4caead95 | 113 | @echo " @rm -f ${DAMODULE}${DANAME}da.exe ${DAMODULE}${DANAME}da.o" >> $@ |
f2d76654 | 114 | @echo "install: ${DAMODULE}${DANAME}da.exe" >> $@ |
115 | @echo " @if [ '""$$""(INSTALL_PATH)' == '' ]; then \\" >> $@ | |
116 | @echo " echo Environment variable INSTALL_PATH undefined, cannot continue; \\" >> $@ | |
117 | @echo " exit 1; \\" >> $@ | |
118 | @echo " fi" >> $@ | |
119 | @echo " @cp -p ${DAMODULE}${DANAME}da.exe ""$$""(INSTALL_PATH)" >> $@ | |
120 | ||
121 | $(DATAR): $(DASRC) $(DALIB) $(DAQDADIR) $(DADEP) $(DAMAKEFILE) $(DATARGETDIR) | |
122 | @echo "***** Making archive $(DATAR) *****" | |
123 | $(MUTE)rm -rf $(DATAR) | |
4caead95 | 124 | $(MUTE)rm -rf junk |
f2d76654 | 125 | $(MUTE)mkdir junk && mkdir junk/$(DAARC) && mkdir junk/$(DAARC)/lib && mkdir junk/$(DAARC)/include && \ |
126 | cp -a $(DASRC) $(DAQDADIR) junk/$(DAARC) && \ | |
127 | cp -a $(DALIB) $(ROOTLIBDIR)/libRoot.a $(ROOTLIBDIR)/libfreetype.a $(ROOTLIBDIR)/libpcre.a junk/$(DAARC)/lib && \ | |
128 | $(foreach daincfile,$(DAINCLUDES), cp -a $(daincfile) junk/$(DAARC)/include &&) \ | |
129 | cp -a $(DAMAKEFILE) junk/$(DAARC)/Makefile && \ | |
17cb72ed | 130 | cd junk && \ |
f2d76654 | 131 | tar czf ../$(DATAR) * && \ |
17cb72ed | 132 | cd .. && rm -rf junk |
4179078a | 133 | |
f2d76654 | 134 | tar-DA: $(DATAR) |
135 | ||
136 | $(DASPECFILE): $(DATARGETDIR) | |
137 | @echo "***** Making RPM spec-file $(DASPECFILE) *****" | |
138 | @echo "# RPM specfile for $(DAMODULE)$(DANAME) Detector Algorithm" >> $@ | |
139 | @echo "Summary: DAQ Detector Algorithm for $(DAMODULE)" >> $@ | |
140 | @echo "Name: daqDA-$(DAMODULE)-$(DAMODULE)$(DANAME)da" >> $@ | |
141 | @echo "Version: $(DAVERSION)" >> $@ | |
142 | @echo "Release: $(DARELEASE)" >> $@ | |
143 | @echo "Copyright: CERN Alice DAQ/Offine" >> $@ | |
144 | @echo "Source: %{name}-%{version}.src.tar.gz" >> $@ | |
145 | @echo "Group: Applications/Alice" >> $@ | |
146 | @echo "Prefix: /opt/%{name}" >> $@ | |
147 | @echo "BuildRoot: %{_tmppath}/%{name}-root" >> $@ | |
148 | @echo "" >> $@ | |
149 | @echo "# automatic dependencies" >> $@ | |
150 | @echo "AutoReqProv: yes" >> $@ | |
151 | @echo "" >> $@ | |
152 | @echo "# list here required RPM packages for compilation" >> $@ | |
153 | @echo "BuildRequires: date" >> $@ | |
154 | @echo "" >> $@ | |
155 | @echo "# list here required RPM packages for runtime" >> $@ | |
156 | @echo "Requires: date" >> $@ | |
157 | @echo "" >> $@ | |
158 | @echo "# You can specify other dependencies in the description tag below." >> $@ | |
159 | @echo "" >> $@ | |
160 | @echo "# description of the package" >> $@ | |
161 | @echo "%description" >> $@ | |
162 | @echo "This is the $(DAMODULE)$(DANAME) Detector Algorithm for DAQ." >> $@ | |
163 | @echo "" >> $@ | |
164 | @echo "#################################################################" >> $@ | |
165 | @echo "# Do not modify following scripts" >> $@ | |
166 | @echo "#################################################################" >> $@ | |
167 | @echo "" >> $@ | |
168 | @echo "# here is defined the installation root directory" >> $@ | |
169 | @echo "%define pkgname %{name}-%{version}" >> $@ | |
170 | @echo "%define destdir %{prefix}" >> $@ | |
171 | @echo "" >> $@ | |
172 | @echo "# pre-compilation script: extract from tarball" >> $@ | |
173 | @echo "%prep" >> $@ | |
174 | @echo "# extract archive" >> $@ | |
175 | @echo "%setup -n %{pkgname}" >> $@ | |
176 | @echo "" >> $@ | |
177 | @echo "# compile" >> $@ | |
178 | @echo "%build" >> $@ | |
179 | @echo "export DATE_SITE=" >> $@ | |
180 | @echo ". /date/setup.sh" >> $@ | |
181 | @echo "gmake" >> $@ | |
182 | @echo "" >> $@ | |
183 | @echo "# install runtime files" >> $@ | |
184 | @echo "%install" >> $@ | |
185 | @echo "#remove install dir if existing" >> $@ | |
186 | @echo "[ -d ""$$""RPM_BUILD_ROOT ] && rm -rf ""$$""RPM_BUILD_ROOT" >> $@ | |
187 | @echo "#make install in install root directory" >> $@ | |
188 | @echo "mkdir -p ""$$""RPM_BUILD_ROOT/%{prefix}" >> $@ | |
189 | @echo "make install INSTALL_PATH=""$$""RPM_BUILD_ROOT/%{prefix}" >> $@ | |
190 | @echo "" >> $@ | |
191 | @echo "# clean RPM build files" >> $@ | |
192 | @echo "%clean" >> $@ | |
193 | @echo "# remove source files" >> $@ | |
194 | @echo "rm -rf ""$$""RPM_BUILD_DIR/%{pkgname}" >> $@ | |
195 | @echo "# remove installed files" >> $@ | |
196 | @echo "rm -rf ""$$""RPM_BUILD_ROOT" >> $@ | |
197 | @echo "" >> $@ | |
198 | @echo "# pre-install script" >> $@ | |
199 | @echo "%pre" >> $@ | |
200 | @echo "" >> $@ | |
201 | @echo "# list of files to be installed" >> $@ | |
202 | @echo "%files" >> $@ | |
203 | @echo "%defattr (-,root,root)" >> $@ | |
204 | @echo "%{destdir}" >> $@ | |
205 | @echo "" >> $@ | |
206 | @echo "# post-install script" >> $@ | |
207 | @echo "# launched after rpm installed" >> $@ | |
208 | @echo "%post" >> $@ | |
209 | @echo "" >> $@ | |
210 | @echo "# post-uninstall script" >> $@ | |
211 | @echo "# launched after rpm removed" >> $@ | |
212 | @echo "%postun" >> $@ | |
213 | ||
214 | rpm-DA: $(DATAR) $(DASPECFILE) | |
215 | @echo "***** Making RPMS for $(DAMODULE)$(DANAME) detector-algorithm *****" | |
216 | $(MUTE)rm -rf junk | |
217 | $(MUTE)mkdir -p junk/SOURCES junk/SPECS junk/BUILD junk/RPMS junk/SRPMS | |
218 | $(MUTE)cp $(DATAR) junk/SOURCES | |
219 | $(MUTE)rpmbuild --quiet --define "_topdir $(ALICE_ROOT)/junk" --nodeps -ba $(DASPECFILE) | |
220 | $(MUTE)find junk/ -name "$(DAARC)-*.rpm" -exec cp -p {} . \; | |
221 | $(MUTE)rm -rf junk | |
222 | @echo "***** RPMS created and put $(ALICE_ROOT) folder *****" | |
223 | ||
4179078a | 224 | else |
225 | ||
226 | static-DA: clean-DA | |
f2d76654 | 227 | clean-DA: tar-DA |
228 | tar-DA: rpm-DA | |
229 | rpm-DA: | |
4179078a | 230 | @echo |
231 | @echo "****************************************************************************************************" | |
232 | @echo "* In order to build a detector-algorithm package you have to set the environment variable DAMODULE *" | |
233 | @echo "* For example: setenv DAMODULE TOF *" | |
234 | @echo "* or export DAMODULE=TOF *" | |
4caead95 | 235 | @echo "* If you have only one detector-algorithm package then it is enough to have DAMODULEda.cxx *" |
236 | @echo "* in your DAMODULE directory. In case of several detector-algorithms you have to specify also the *" | |
237 | @echo "* name of the algorithm whcih you want to build. The makefile will use DAMODULEDANAMEda.cxx *" | |
238 | @echo "* in your DAMODULE directory. Then in order to build your specific detector-algorithm package you *" | |
239 | @echo "* have to set the environment variable DANAME. *" | |
240 | @echo "* If the detector algorithm uses code from another sub-detector you can specify this by setting *" | |
4179078a | 241 | @echo "* the environment variable EXTRADAMODULE *" |
242 | @echo "****************************************************************************************************" | |
243 | @echo | |
244 | ||
245 | ||
246 | endif |