]> git.uio.no Git - u/mrichter/AliRoot.git/blob - build/MakefileDA
Improved version of online detector-algorithm makefile
[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 DASRC=${DAMODULE}/${DAMODULE}${DANAME}da.cxx
15 DADEP=${DAMODULE}/tgt_${ALICE_TARGET}/${DAMODULE}${DANAME}da.d
16 DAOBJ=${DAMODULE}/tgt_${ALICE_TARGET}/${DAMODULE}${DANAME}da.o
17 DALIB=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/lib${DAMODULE}${DANAME}DA.a
18 DAEXE=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}/${DAMODULE}${DANAME}da.exe
19
20 DAMAKEFILE=${DAMODULE}/tgt_${ALICE_TARGET}/${DAMODULE}${DANAME}da.make
21
22 DAQDADIR=${ALICE}/daqDAlib
23 DAQDALIB=$(DAQDADIR)/libdaqDA.a
24
25 ROOTLIBDIR=$(shell root-config --libdir)
26
27 SYSLIBS=-ldl
28
29 MONITORLIBS=$(shell date-config --monitorlibs=noshift)
30
31 ALIROOTALIBS=$(RAWDatabaseALIB) $(RAWDatarecALIB) $(RAWDatasimALIB) $(STEERALIB) $(CDBALIB) $(ESDALIB) $(AODALIB)
32
33 ALIROOTALIBS+=$($(DAMODULE)ALIBS)
34
35 ifneq ($(EXTRADAMODULE),) 
36
37 ALIROOTALIBS+=$($(EXTRADAMODULE)ALIBS)
38
39 endif
40
41 static-DA: $(DAEXE)
42
43 $(DAEXE): $(LIBPATH) $(DAOBJ) $(DALIB) $(DAQDALIB)
44         @echo "Making $(DAEXE) executable..."
45         $(MUTE)$(LD) $(LDFLAGS) -o $@ $(DAOBJ) $(DALIB) \
46         $(SYSLIBS) \
47         $(ROOTLIBDIR)/libRoot.a \
48         $(ROOTLIBDIR)/libfreetype.a $(ROOTLIBDIR)/libpcre.a \
49         $(MONITORLIBS) $(DAQDALIB)
50
51 $(DAOBJ): $(DASRC) $(DAQDADIR) $(DADEP)
52         @echo "Compiling $(DASRC)..."
53         $(MUTE)$(CXX) -c $(CXXFLAGS) -I$(DAQDADIR) $< -o $@
54
55 $(DADEP): $(DASRC) $(DAQDADIR)
56         @echo "Making $(DASRC) dependencies..."
57         $(MUTE)$(CPP) -MM $(CXXFLAGS) -I$(DAQDADIR) $< > $@
58
59 DAINCLUDES=$(sort $(filter-out %.o:,$(filter-out %.cxx,$(filter-out \,$(shell cat $(DADEP))))))
60
61 -include $(DADEP)
62
63 $(DALIB): $(ALIROOTALIBS)
64         @echo "Making $(DALIB)..."
65         $(MUTE)rm -rf $@
66         $(MUTE)rm -rf junk
67         $(MUTE)mkdir junk && cd junk && $(addprefix $(AR) x ../,$(addsuffix &&,$^)) $(AR) r $@ *.o && cd .. && rm -rf junk
68
69 clean-DA:
70         @echo "Cleaning $(DAMODULE)$(DANAME) detector-algorithm..."
71         $(MUTE)rm -f $(DAEXE)
72         $(MUTE)rm -f $(DAOBJ)
73         $(MUTE)rm -f $(DADEP)
74         $(MUTE)rm -f $(DAMAKEFILE)
75         $(MUTE)rm -f $(DALIB)
76         $(MUTE)rm -f $(ALIROOTALIBS)
77
78 $(DAMAKEFILE):
79         @echo "Making $(DAMAKEFILE)..."
80         @echo "CXXFLAGS+=""$$""(shell date-config --cflags)" > $@
81         @echo "CXXFLAGS+=-Iinclude" >> $@
82         @echo "DAQDADIR=daqDAlib" >> $@
83         @echo "DAQDALIB=""$$""(DAQDADIR)/libdaqDA.a" >> $@
84         @echo "MONITORLIBS=""$$""(shell date-config --monitorlibs=noshift)" >> $@
85         @echo "${DAMODULE}${DANAME}da.exe: ${DAMODULE}${DANAME}da.o" >> $@
86         @echo "         ""$$""(CXX) ""$$""(LDFLAGS) -o ""$$""@ ""$$""< \\" >> $@
87         @echo "         lib/lib${DAMODULE}${DANAME}DA.a \\" >> $@
88         @echo "         $(SYSLIBS) \\" >> $@
89         @echo "         lib/libRoot.a \\" >> $@
90         @echo "         lib/libfreetype.a lib/libpcre.a \\" >> $@
91         @echo "         ""$$""(MONITORLIBS) ""$$""(DAQDALIB)" >> $@
92         @echo "${DAMODULE}${DANAME}da.o: ${DAMODULE}${DANAME}da.cxx" >> $@
93         @echo "         ""$$""(CXX) -c ""$$""(CXXFLAGS) -I""$$""(DAQDADIR) ""$$""< -o ""$$""@" >> $@
94         @echo "clean:" >> $@
95         @echo "         @rm -f ${DAMODULE}${DANAME}da.exe ${DAMODULE}${DANAME}da.o" >> $@
96
97 tar-DA: $(DASRC) $(DALIB) $(DAQDADIR) $(DADEP) $(DAMAKEFILE)
98         @echo "Making $(DAMODULE)$(DANAME) detector-algorithm archive..."
99         $(MUTE)rm -rf $(DAMODULE)${DANAME}da.tar
100         $(MUTE)rm -rf junk
101         $(MUTE)mkdir junk && mkdir junk/lib && mkdir junk/include && \
102         cp -a $(DASRC) $(DAQDADIR) junk && \
103         cp -a $(DALIB) $(ROOTLIBDIR)/libRoot.a $(ROOTLIBDIR)/libfreetype.a $(ROOTLIBDIR)/libpcre.a junk/lib && \
104         $(foreach daincfile,$(DAINCLUDES), cp -a $(daincfile) junk/include &&) \
105         cp -a $(DAMAKEFILE) junk/Makefile && \
106         cd junk && \
107         tar cf ../$(DAMODULE)${DANAME}da.tar * && \
108         cd .. && rm -rf junk
109
110 else
111
112 static-DA: clean-DA
113 clean-DA: tar-DA
114 tar-DA:
115         @echo
116         @echo "****************************************************************************************************"
117         @echo "* In order to build a detector-algorithm package you have to set the environment variable DAMODULE *"
118         @echo "* For example: setenv DAMODULE TOF                                                                 *"
119         @echo "*          or  export DAMODULE=TOF                                                                 *"
120         @echo "* If you have only one detector-algorithm package then it is enough to have DAMODULEda.cxx         *"
121         @echo "* in your DAMODULE directory. In case of several detector-algorithms you have to specify also the  *"
122         @echo "* name of the algorithm whcih you want to build. The makefile will use DAMODULEDANAMEda.cxx        *"
123         @echo "* in your DAMODULE directory. Then in order to build your specific detector-algorithm package you  *"
124         @echo "* have to set the environment variable DANAME.                                                     *"
125         @echo "* If the detector algorithm uses code from another sub-detector you can specify this by setting    *"
126         @echo "* the environment variable EXTRADAMODULE                                                           *"
127         @echo "****************************************************************************************************"
128         @echo
129
130
131 endif