]> git.uio.no Git - u/mrichter/AliRoot.git/blob - build/MakefileDA
012fa217a2d2ed0339b5a130004e617dfc1bba28
[u/mrichter/AliRoot.git] / build / MakefileDA
1 #-*- Mode: Makefile -*-
2
3 ifdef DAMODULE
4
5 CXXFLAGS+=-I${ALICE_ROOT}/RAW
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)/*/)))))
8
9 ifneq ($(EXTRADAMODULE),) 
10 CXXFLAGS+=-I${ALICE_ROOT}/$(EXTRADAMODULE)
11 CXXFLAGS+=$(addprefix -I,$(filter-out %tgt_${ALICE_TARGET},$(filter-out %CVS,$(patsubst %/,%,$(shell ls -d ${ALICE_ROOT}/$(EXTRADAMODULE)/*/)))))
12 endif
13
14 DATARGETDIR=${DAMODULE}/tgt_${ALICE_TARGET}
15 DASRC=${DAMODULE}/${DAMODULE}${DANAME}da.cxx
16 DADEP=${DATARGETDIR}/${DAMODULE}${DANAME}da.d
17 DAOBJ=${DATARGETDIR}/${DAMODULE}${DANAME}da.o
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
20
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
34
35 DAQDADIR=${ALICE}/daqDAlib
36 DAQDALIB=$(DAQDADIR)/libdaqDA.a
37
38 ROOTLIBDIR=$(shell root-config --libdir)
39
40 SYSLIBS=-ldl
41
42 MONITORLIBS=$(shell date-config --monitorlibs=noshift)
43
44 ALIROOTALIBS=$(RAWDatabaseALIB) $(RAWDatarecALIB) $(RAWDatasimALIB) $(STEERALIB) $(CDBALIB) $(ESDALIB) $(AODALIB)
45
46 ALIROOTALIBS+=$($(DAMODULE)ALIBS)
47
48 ifneq ($(EXTRADAMODULE),) 
49
50 ALIROOTALIBS+=$($(EXTRADAMODULE)ALIBS)
51
52 endif
53
54 static-DA: $(DAEXE)
55
56 $(DAEXE): $(LIBPATH) $(DAOBJ) $(DALIB) $(DAQDALIB)
57         @echo "***** Making executable $(DAEXE) *****"
58         $(MUTE)$(LD) $(LDFLAGS) -o $@ $(DAOBJ) $(DALIB) \
59         $(SYSLIBS) \
60         $(ROOTLIBDIR)/libRoot.a \
61         $(ROOTLIBDIR)/libfreetype.a $(ROOTLIBDIR)/libpcre.a \
62         $(MONITORLIBS) $(DAQDALIB)
63
64 $(DAOBJ): $(DASRC) $(DAQDADIR) $(DADEP) $(DATARGETDIR)
65         @echo "***** Compiling $(DASRC) *****"
66         $(MUTE)$(CXX) -c $(CXXFLAGS) -I$(DAQDADIR) $< -o $@
67
68 $(DADEP): $(DASRC) $(DAQDADIR) $(DATARGETDIR)
69         @echo "***** Making detector-algorithm dependencies $(DADEP) *****"
70         $(MUTE)$(CPP) -MM $(CXXFLAGS) -I$(DAQDADIR) $< > $@
71
72 DAINCLUDES=$(sort $(filter-out %.o:,$(filter-out %.cxx,$(filter-out \,$(shell cat $(DADEP))))))
73
74 -include $(DADEP)
75
76 $(DATARGETDIR):
77         $(MUTE)if [ ! -d '$@' ]; then echo "***** Making directory $@ *****"; mkdir -p $@; fi
78
79 $(DALIB): $(ALIROOTALIBS)
80         @echo "***** Linking static library $(DALIB) *****"
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
84
85 clean-DA:
86         @echo "***** Cleaning $(DAMODULE)$(DANAME) detector-algorithm *****"
87         $(MUTE)rm -f $(DASPECFILE)
88         $(MUTE)rm -f $(DATAR)
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)
95
96 $(DAMAKEFILE): $(DATARGETDIR)
97         @echo "***** Making makefile $(DAMAKEFILE) *****"
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)" >> $@
103         @echo "${DAMODULE}${DANAME}da.exe: ${DAMODULE}${DANAME}da.o" >> $@
104         @echo "         ""$$""(CXX) ""$$""(LDFLAGS) -o ""$$""@ ""$$""< \\" >> $@
105         @echo "         lib/lib${DAMODULE}${DANAME}DA.a \\" >> $@
106         @echo "         $(SYSLIBS) \\" >> $@
107         @echo "         lib/libRoot.a \\" >> $@
108         @echo "         lib/libfreetype.a lib/libpcre.a \\" >> $@
109         @echo "         ""$$""(MONITORLIBS) ""$$""(DAQDALIB)" >> $@
110         @echo "${DAMODULE}${DANAME}da.o: ${DAMODULE}${DANAME}da.cxx" >> $@
111         @echo "         ""$$""(CXX) -c ""$$""(CXXFLAGS) -I""$$""(DAQDADIR) ""$$""< -o ""$$""@" >> $@
112         @echo "clean:" >> $@
113         @echo "         @rm -f ${DAMODULE}${DANAME}da.exe ${DAMODULE}${DANAME}da.o" >> $@
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)
124         $(MUTE)rm -rf junk
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 && \
130         cd junk && \
131         tar czf ../$(DATAR) * && \
132         cd .. && rm -rf junk
133
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
224 else
225
226 static-DA: clean-DA
227 clean-DA:  tar-DA
228 tar-DA:    rpm-DA
229 rpm-DA:
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                                                                 *"
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    *"
241         @echo "* the environment variable EXTRADAMODULE                                                           *"
242         @echo "****************************************************************************************************"
243         @echo
244
245
246 endif