]> git.uio.no Git - u/mrichter/AliRoot.git/blame - build/MakefileDA
New target for building RPMs is added. Several other improvements.
[u/mrichter/AliRoot.git] / build / MakefileDA
CommitLineData
17cb72ed 1#-*- Mode: Makefile -*-
2
4179078a 3ifdef DAMODULE
4
17cb72ed 5CXXFLAGS+=-I${ALICE_ROOT}/RAW
4caead95 6CXXFLAGS+=-I${ALICE_ROOT}/$(DAMODULE)
7CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(DAMODULE)/*/)))))
17cb72ed 8
9ifneq ($(EXTRADAMODULE),)
10CXXFLAGS+=-I${ALICE_ROOT}/$(EXTRADAMODULE)
4caead95 11CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(EXTRADAMODULE)/*/)))))
17cb72ed 12endif
13
f2d76654 14DATARGETDIR=${DAMODULE}/tgt_${ALICE_TARGET}
4caead95 15DASRC=${DAMODULE}/${DAMODULE}${DANAME}da.cxx
f2d76654 16DADEP=${DATARGETDIR}/${DAMODULE}${DANAME}da.d
17DAOBJ=${DATARGETDIR}/${DAMODULE}${DANAME}da.o
4caead95 18DALIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/lib${DAMODULE}${DANAME}DA.a
19DAEXE=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}/${DAMODULE}${DANAME}da.exe
17cb72ed 20
f2d76654 21ifeq ($(DAVERSION),)
22DAVERSION=1.0
23endif
24
25ifeq ($(DARELEASE),)
26DARELEASE=1
27endif
28
29DAARC=daqDA-${DAMODULE}-${DAMODULE}${DANAME}da-$(DAVERSION)
30DATAR=${DATARGETDIR}/$(DAARC).src.tar.gz
31DASPECFILE=${DATARGETDIR}/$(DAMODULE)$(DANAME)da.spec
32
33DAMAKEFILE=${DATARGETDIR}/${DAMODULE}${DANAME}da.make
e06bd7b4 34
17cb72ed 35DAQDADIR=${ALICE}/daqDAlib
36DAQDALIB=$(DAQDADIR)/libdaqDA.a
37
38ROOTLIBDIR=$(shell root-config --libdir)
39
4179078a 40SYSLIBS=-ldl
e06bd7b4 41
17cb72ed 42MONITORLIBS=$(shell date-config --monitorlibs=noshift)
43
4caead95 44ALIROOTALIBS=$(RAWDatabaseALIB) $(RAWDatarecALIB) $(RAWDatasimALIB) $(STEERALIB) $(CDBALIB) $(ESDALIB) $(AODALIB)
17cb72ed 45
4caead95 46ALIROOTALIBS+=$($(DAMODULE)ALIBS)
17cb72ed 47
48ifneq ($(EXTRADAMODULE),)
49
4caead95 50ALIROOTALIBS+=$($(EXTRADAMODULE)ALIBS)
17cb72ed 51
52endif
53
54static-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
72DAINCLUDES=$(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
85clean-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 134tar-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
214rpm-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 224else
225
226static-DA: clean-DA
f2d76654 227clean-DA: tar-DA
228tar-DA: rpm-DA
229rpm-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
246endif