source: trunk/Mars/Makefile@ 18123

Last change on this file since 18123 was 17980, checked in by Jens Buss, 10 years ago
added optional Makefile variable for the libnova include path, so we can also build it on phido
File size: 5.0 KB
Line 
1##################################################################
2#
3# makefile
4#
5# for the MARS software
6#
7##################################################################
8# @maintitle
9
10# @code
11
12#
13# please change all system depend values in the
14# config.mk.${OSTYPE} file
15#
16#
17
18include Makefile.conf.general
19include Makefile.conf.$(OSTYPE)
20
21#
22#PROGRAMS = readraw merpp mars test mona status
23PROGRAMS := readdaq readraw readcorsika ceres merpp callisto star ganymed sponde showlog showplot mars mars-config
24SOLIB := libmars.so
25
26CINT = M
27
28#
29# connect the include files defined in the config.mk file
30#
31# WARNING: the result (whether the linkage works or not) depends on the
32# order of the libraries. It seems, that the most base library
33# must be the last one
34#
35
36#
37# ----->>> mars libraries
38#
39SUBDIRS := mbase \
40 mastro \
41 mmain \
42 mcorsika \
43 mdrs \
44 mfbase \
45 mfilter \
46 mdata \
47 mhbase \
48 mhvstime \
49 mhist \
50 manalysis \
51 mextralgo \
52 msignal \
53 mbadpixels \
54 mhcalib \
55 mhflux \
56 mcalib \
57 mpedestal \
58 mfileio \
59 mgeom \
60 melectronics \
61 msim \
62 msimreflector \
63 msimcamera \
64 msql \
65 mimage \
66 mhft \
67 mmc \
68 mraw \
69 mcamera \
70 mtrigger \
71 mpointing \
72 mreport \
73 mgui \
74 mranforest \
75 mjobs \
76 mjoptim \
77 mjtrain \
78 mmovie \
79 mtools \
80 mmuon
81
82LIBNOVA_PATH := `which libnovaconfig`
83
84ifeq ($(shell basename "$(LIBNOVA_PATH)X"), libnovaconfigX)
85#SUBDIRS += libnova
86LIBNOVA = -lnova
87endif
88
89# Insert here "-I" and the path to your libnova installation,
90# e.g. -ImyFolder/libnova/include.
91# Leave it empty, if libnova is installed
92# to the default location (i.e. /usr/include/libnova).
93LIBNOVA_INCLUDE_PATH :=
94
95#LIBRARIES = $(SUBDIRS:%=lib/lib%.a)
96LIBRARIES := $(SUBDIRS:=.a)
97CONDOR := $(SUBDIRS:=.condor)
98SGE := $(SUBDIRS:=.sge)
99MRPROPERS := $(SUBDIRS:=.mrproper)
100CLEANERS := $(SUBDIRS:=.clean)
101LIBS := $(SOLIB)
102
103#------------------------------------------------------------------------------
104.SUFFIXES: .c .cc .h .o .cxx .hxx .gch
105
106SRCFILES = \
107 mcore/factofits.h \
108 mcore/factfits.h \
109 mcore/DrsCalib.h \
110 mcore/PixelMap.h \
111 mcore/Interpolator2D.h \
112 mcore/nova.h \
113 mcore/Prediction.h
114
115############################################################
116RNDMNAME:=$(shell mktemp)
117
118all: $(SOLIB) $(PROGRAMS)
119 @echo " Done. "
120 @echo " "
121
122static: LIBS=$(SUBDIRS:=/*.o) $(OBJS)
123#static: rmlib $(LIBRARIES) $(PROGRAMS)
124static: $(LIBRARIES) $(PROGRAMS)
125 @echo " Done. "
126 @echo " "
127
128include Makefile.rules
129
130#
131# Use $(CXX) -v ... for a more verbose output
132#
133# ROOTGLIBS must be there - why? How can I link the libraries?
134$(SOLIB): $(LIBRARIES) $(OBJS) $(HEADERS)
135 @echo " Linking shared object $@ ..."
136 $(LINKER) $(CXXFLAGS) $(SOFLAG) $(OBJS) $(SUBDIRS:=/*.o) $(ROOTGLIBS) $(LIBNOVA) -o ${RNDMNAME}
137 mv ${RNDMNAME} $@
138 chmod go+r $@
139
140# This is a special workaround to create the shared object (bundle, plugin)
141# for root and the dynlib (to be linked with the executable) on Mac OSX
142ifneq ($(OSTYPE),darwin)
143$(PROGRAMS): $(PROGRAMS:=.o) $(SOLIB)
144 @echo " Linking $@ ..."
145 $(LINKER) $(CXXFLAGS) $@.o $(MARS_LIB) $(SOLIB) $(ROOTGLIBS) -o $@
146
147# Use this to link the programs statically - for gprof
148#$(PROGRAMS): $(OBJS) $(HEADERS) $(PROGRAMS:=.o)
149# @echo " Linking $@ ..."
150# $(CXX) $(CXXFLAGS) $(ROOTGLIBS) $(OBJS) $(SUBDIRS:=/*.o) $@.o $(MARS_LIB) -o $@
151else
152$(DYLIB): $(LIBRARIES) $(OBJS) $(HEADERS)
153 @echo " Linking dylib $(DYLIB) ..."
154 $(LINKER) $(CXXFLAGS) $(DYFLAG) $(OBJS) $(SUBDIRS:=/*.o) $(ROOTGLIBS) -o $@
155
156$(PROGRAMS): $(PROGRAMS:=.o) $(DYLIB)
157 @echo " Linking mac executable $@ ..."
158 $(LINKER) $(CXXFLAGS) $(ROOTGLIBS) $(DYLIB) $@.o $(MARS_LIB) -o $@
159endif
160
161rmcondor:
162 rm -f .makecondor.log
163
164condor: rmcondor $(CONDOR)
165 echo Waiting for jobs to finish...
166 condor_wait .makecondor.log
167 rm .makecondor.log
168 make -j2 $(PROGRAMS)
169# find -name "*/.makecondor.*"
170# find -maxdepth 2 -name ".makecondor.*" -exec echo {}\\\; cat {}\\\; echo {}\\\; \;
171
172sge: $(SGE)
173 make -j16 $(PROGRAMS)
174
175dox: $(SOLIB)
176 @echo
177 @echo " Creating html documentation and logfile dohtml.log..."
178 rm -f dohtml.log
179 root -b -q dohtml.C 2>&1 >> dohtml.log | tee -a dohtml.log
180 @echo " done."
181 @echo
182
183#clean: rmcint rmobjs rmdep rmcore rmlib
184
185mrproper: $(MRPROPERS) rmbin rmbak rmbakmac rmhtml clean
186 @echo " Done."
187 @echo " "
188
189tar: mrproper
190 @echo "Making tar-file"
191 root -b -q -l -n tar.C
192# @tar cvf ../mars.tar --exclude=Root .rootrc *
193# @gzip -9 ../mars.tar
194
195#Makefile.depend:
196# (! find ./ Makefile.depend -maxdepth 1 -empty 2> /dev/null && \
197# echo " Generating dependancies into Makefile.depend" && \
198# makedepend -- $(INCLUDES) -- $(PROGRAMS:=.cc) $(SRCS) $(SUBDIRS:=/*.cc) -w1024 -f- 2> /dev/null | grep -v Cint | grep -v "/usr/" > Makefile.depend && \
199# echo " ") || find -maxdepth 0 -true > /dev/null
200#
201#depend: Makefile.depend
202
203# @endcode
Note: See TracBrowser for help on using the repository browser.