]>
Commit | Line | Data |
---|---|---|
03747640 | 1 | # $Id$ |
2 | # | |
3 | # Makefile for the jetan package (standalone) | |
4 | ||
5 | ifdef ALIVERBOSE | |
6 | MUTE:= | |
7 | else | |
8 | MUTE:=@ | |
9 | endif | |
10 | ||
11 | #------------------------------------------------------------------------------- | |
12 | # Include library definition | |
13 | ||
14 | include $(ALICE_ROOT)/build/Makefile.config | |
15 | ||
16 | #------------------------------------------------------------------------------- | |
17 | # Location where to install libraries and binaries and common header files | |
18 | ||
19 | LIBPATH := ./lib/tgt_$(ALICE_TARGET) | |
20 | BINPATH := ./bin/tgt_$(ALICE_TARGET) | |
21 | EXPORTDIR := $(ALICE_ROOT)/include | |
22 | BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH) | |
23 | ||
24 | #------------------------------------------------------------------------------- | |
25 | # Include machine dependent macros | |
26 | ||
27 | include $(ALICE_ROOT)/build/Makefile.$(ALICE_TARGET) | |
28 | ||
29 | #------------------------------------------------------------------------------- | |
30 | # Check if called with debug | |
31 | ||
32 | ifeq ($(ALIDEBUG),YES) | |
33 | override ALICE_TARGET := $(ALICE_TARGET)DEBUG | |
34 | FFLAGS := -g $(filter-out -O%,$(FFLAGS)) | |
35 | CXXFLAGS := -g $(filter-out -O%,$(CXXLAGS)) | |
36 | CFLAGS := -g $(filter-out -O%,$(CLAGS)) | |
37 | SOFLAGS := -g $(filter-out -O%,$(SOFLAGS)) | |
38 | LDFLAGS := -g $(filter-out -O%,$(LDFLAGS)) | |
39 | endif | |
40 | ||
41 | #------------------------------------------------------------------------------- | |
42 | # Check if called with profile | |
43 | ||
44 | ifeq ($(ALIPROFILE),YES) | |
45 | override ALICE_TARGET := $(ALICE_TARGET)PROF | |
46 | FFLAGS += -pg | |
47 | CXXFLAGS += -pg | |
48 | CFLAGS += -pg | |
49 | SOFLAGS += -pg | |
50 | LDFLAGS += -pg | |
51 | endif | |
52 | ||
53 | #------------------------------------------------------------------------------- | |
54 | # Check if DATE is installed | |
55 | ||
56 | ifdef DATE_ROOT | |
57 | DATEFLAGS = -DALI_DATE -D${DATE_SYS} -DDATE_SYS=${DATE_SYS} -Dlong32=${DATE_LONG32} \ | |
58 | -Dlong64=${DATE_LONG64} -DdatePointer=${DATE_POINTER} | |
59 | CXXFLAGS += $(DATEFLAGS) | |
60 | CFLAGS += $(DATEFLAGS) | |
61 | CINTFLAGS += $(DATEFLAGS) | |
62 | DEPINC += $(DATEFLAGS) | |
63 | endif | |
64 | ||
65 | #------------------------------------------------------------------------------- | |
66 | # Default include dirs for C++, Fortran, Cint, and dependencies | |
67 | # The module directory will be added by each module | |
68 | ||
69 | GENINC := -I$(ALICE_ROOT)/include -I$(shell root-config --incdir) | |
70 | CXXFLAGS += $(GENINC) | |
71 | CXXFLAGSNO += $(GENINC) | |
72 | CINTFLAGS += $(GENINC) | |
73 | DEPINC += $(GENINC) | |
74 | ||
75 | LIBS := $(GLIBS) $(ROOTLIBS) $(SYSLIBS) | |
76 | ||
77 | #Determine if it's a library or a executable | |
78 | TYPE=lib | |
79 | ||
80 | # Package head directory, source and include directories | |
81 | CURDIR=$(shell pwd) | |
82 | MODDIR:=. | |
83 | MODDIRS:=$(MODDIR) | |
84 | MODDIRI:=$(MODDIR) | |
85 | MODDIRO:=./.objs | |
86 | ||
87 | # Reseting variables before importing pkg-file | |
88 | SRCS:= | |
89 | HDRS:= | |
90 | FSRCS:= | |
91 | DHDR:= | |
92 | CSRCS:= | |
93 | CHDRS:= | |
94 | EINCLUDE:= | |
95 | EDEFINE:= | |
96 | ELIBS:= | |
97 | ELIBSDIR:= | |
98 | PACKFFLAGS:= | |
99 | PACKCXXFLAGS:= | |
100 | PACKCFLAGS:= | |
101 | PACKDYFLAGS:= | |
102 | PACKSOFLAGS:= | |
103 | EXPORT:= | |
104 | EHDRS:= | |
105 | CINTHDRS:= | |
106 | ARLIBS:= | |
107 | SHLIBS:= | |
108 | SUBDIR:= | |
109 | ||
110 | include libJETAN.pkg | |
111 | ||
112 | ifndef PACKFFLAGS | |
113 | JETANFFLAGS:=$(FFLAGS) | |
114 | else | |
115 | JETANFFLAGS:=$(PACKFFLAGS) | |
116 | endif | |
117 | ||
118 | ifndef PACKCFLAGS | |
119 | JETANCFLAGS:=$(CFLAGS) | |
120 | else | |
121 | JETANCFLAGS:=$(PACKCFLAGS) | |
122 | endif | |
123 | ||
124 | ifndef PACKCXXFLAGS | |
125 | JETANCXXFLAGS:=$(CXXFLAGS) | |
126 | else | |
127 | JETANCXXFLAGS:=$(PACKCXXFLAGS) | |
128 | endif | |
129 | ||
130 | ifndef PACKSOFLAGS | |
131 | JETANSOFLAGS:=$(SOFLAGS) | |
132 | else | |
133 | JETANSOFLAGS:=$(PACKSOFLAGS) | |
134 | endif | |
135 | ||
136 | ifdef DYEXT | |
137 | ifndef PACKDYFLAGS | |
138 | JETANDYFLAGS:=$(DYFLAGS) | |
139 | else | |
140 | JETANDYFLAGS:=$(PACKDYFLAGS) | |
141 | endif | |
142 | endif | |
143 | ||
144 | ifndef PACKDCXXFLAGS | |
145 | JETANDCXXFLAGS:=$(CXXFLAGSNO) | |
146 | else | |
147 | JETANDCXXFLAGS:=$(PACKDCXXFLAGS) | |
148 | endif | |
149 | ||
150 | ||
151 | ifdef DHDR | |
152 | WITHDICT=YES | |
153 | else | |
154 | WITHDICT= | |
155 | endif | |
156 | ||
157 | # Headerfiles exported to common place: | |
158 | JETANEXPORT:=$(EXPORT) | |
159 | JETANEXPORTDEST:=$(patsubst %,$(EXPORTDIR)/%,$(EXPORT)) | |
160 | ||
161 | ||
162 | #Extra include,libs, defines etc. | |
163 | ||
042d3031 | 164 | JETANDEFINE:=$(EDEFINE) -DNOUQHEADERINFO |
03747640 | 165 | |
042d3031 | 166 | JETANINC:=$(patsubst %,-I$(ALICE_ROOT)/%,$(EINCLUDE)) -I. |
03747640 | 167 | |
168 | JETANELIBS:=$(patsubst %,-l%,$(ELIBS)) | |
169 | JETANELIBSDEP:=$(patsubst %,lib/tgt_$(ALICE_TARGET)/lib%.$(SOEXT),$(ELIBS)) | |
170 | JETANELIBSDIR:=$(patsubst %,-L%,$(ELIBSDIR)) | |
171 | ||
172 | #c sources and headers | |
173 | ||
174 | JETANCS:=$(patsubst %,$(MODDIR)/%,$(CSRCS)) | |
175 | JETANCH:=$(patsubst %,$(MODDIR)/%,$(CHDRS)) | |
176 | ||
177 | #Fortran sources | |
178 | JETANFS:=$(patsubst %,$(MODDIR)/%,$(FSRCS)) | |
179 | ||
180 | #c++ sources and header | |
181 | JETANS:=$(patsubst %,$(MODDIR)/%,$(SRCS)) | |
182 | JETANH:=$(patsubst %,$(MODDIR)/%,$(HDRS)) $(EHDRS) | |
183 | ||
184 | #c++ source subdirectories | |
185 | JETANSDIR:=$(SUBDIR) | |
186 | ||
187 | ############################################################################# | |
188 | # | |
189 | # If special rootcint headerfiles is specified use them | |
190 | # else use all headers | |
191 | ||
192 | ifndef CINTHDRS | |
193 | JETANCINTHDRS:=$(JETANH) | |
194 | else | |
195 | JETANCINTHDRS:=$(CINTHDRS) | |
196 | endif | |
197 | ############################################################################# | |
198 | ||
199 | # Package Dictionary | |
200 | ||
201 | JETANDH:=$(MODDIR)/$(DHDR) | |
202 | ||
203 | ||
204 | #All objects | |
205 | JETANCO:=$(patsubst %,$(MODDIRO)/%, $(CSRCS:.c=.o)) | |
206 | TEMP:=$(FSRCS:.F=.o) | |
207 | JETANFO:=$(patsubst %,$(MODDIRO)/%, $(TEMP:.f=.o)) | |
208 | JETANO:= $(patsubst %,$(MODDIRO)/%, $(SRCS:.cxx=.o)) $(JETANFO) $(JETANCO) | |
209 | ||
210 | ||
211 | ||
212 | ifdef WITHDICT | |
213 | JETANDS:=$(MODDIRO)/G__JETAN.cxx | |
214 | JETANDO:=$(MODDIRO)/G__JETAN.o | |
215 | JETANDDEP:=$(JETANDO:.o=.d) | |
216 | JETANDEP:=$(JETANO:.o=.d) $(JETANDDEP) | |
217 | else | |
218 | JETANDS:= | |
219 | JETANDO:= | |
220 | JETANDDEP:= | |
221 | JETANDEP:=$(JETANO:.o=.d) | |
222 | endif | |
223 | ||
224 | ||
225 | #The actual library file | |
226 | ||
227 | JETANLIB:=$(LIBPATH)/libJETAN.$(SOEXT) | |
228 | ||
229 | ifneq ($(DYEXT),) | |
230 | JETANDLIB:=$(LIBPATH)/libJETAN.$(DYEXT) | |
231 | endif | |
232 | ||
233 | JETANALIB:=$(LIBPATH)/libJETAN.$(AEXT) | |
234 | ||
235 | #Add this to the modules libs | |
236 | JETANLIBS += $(JETANLIB) | |
237 | JETANALIBS += $(JETANALIB) | |
238 | ifneq ($(DYEXT),) | |
239 | JETANDLIBS += $(JETANDLIB) | |
240 | endif | |
241 | ||
242 | #The actual binary file | |
243 | ||
244 | JETANBIN:=$(BINPATH)/JETAN | |
245 | ||
246 | #Add to modules list of binaries | |
247 | JETANBINS += $(JETANBIN) | |
248 | ||
249 | # Use in the main Makefile | |
250 | ||
251 | ifeq ($(TYPE),lib) | |
252 | ALLLIBS += $(JETANLIB) | |
253 | ALLALIBS += $(JETANALIB) | |
254 | ifneq ($(DYEXT),) | |
255 | ALLLIBS += $(JETANDLIB) | |
256 | endif | |
257 | BINLIBS += -lJETAN | |
258 | else | |
259 | ALLEXECS += $(JETANBIN) | |
260 | endif | |
261 | ||
262 | ifeq ($(DYEXT),) | |
263 | JETANLIB := $(JETANLIB) | |
264 | else | |
265 | JETANLIB := $(JETANLIB) | |
266 | endif | |
267 | ||
268 | # include all dependence files | |
269 | INCLUDEFILES +=$(JETANDEP) | |
270 | ||
271 | EXPORTFILES += $(JETANEXPORTDEST) | |
272 | ||
273 | #local rules | |
274 | ||
275 | #The exportfiles only include if any!! | |
276 | ||
277 | ifdef JETANEXPORT | |
278 | #$(JETANEXPORTDEST): $(patsubst %,JETAN/%,$(JETANEXPORT)) | |
279 | ||
280 | $(JETANEXPORTDEST): $(EXPORTDIR)/%.h: JETAN/%.h | |
281 | ifndef ALIQUIET | |
282 | @echo "***** Copying file $^ to $@ *****" | |
283 | endif | |
284 | @[ -d $(dir $@) ] || mkdir -p $(dir $@) | |
285 | @cp $^ $@ | |
286 | endif | |
287 | ||
288 | #------------------------------------------------------------------------ | |
289 | ||
290 | $(JETANLIB):$(JETANO) $(JETANDO) | |
291 | ifndef ALIQUIET | |
292 | @echo "***** Linking library $@ *****" | |
293 | endif | |
294 | $(MUTE)mkdir -p $(LIBPATH) | |
295 | $(MUTE)TMPDIR=/tmp/JETAN$$$$.`date +%M%S` ; \ | |
296 | export TMPDIR; mkdir -p $$TMPDIR ; cd $$TMPDIR ; \ | |
297 | find $(CURDIR)/.objs/ -name '*.o' -exec ln -s {} . \; ;\ | |
298 | \rm -f $(CURDIR)/$@ ;\ | |
299 | TMPLIB=$(notdir $(JETANLIB)); export TMPLIB;\ | |
300 | $(SHLD) $(JETANSOFLAGS) -o $(CURDIR)/$@ $(notdir $(JETANO) $(JETANDO)) $(JETANELIBSDIR) $(JETANELIBS) $(SHLIB);\ | |
301 | chmod a-w $(CURDIR)/$@ ;\ | |
302 | cd $(ALICE_ROOT) ; \rm -rf $$TMPDIR | |
303 | ||
304 | ifneq ($(DYEXT),) | |
305 | $(JETANDLIB):$(JETANO) $(JETANDO) | |
306 | ifndef ALIQUIET | |
307 | @echo "***** Linking library $@ *****" | |
308 | endif | |
309 | $(MUTE)mkdir -p $(LIBPATH) | |
310 | $(MUTE)TMPDIR=/tmp/JETAN$$$$.`date +%M%S` ; \ | |
311 | export TMPDIR; mkdir -p $$TMPDIR ; cd $$TMPDIR ; \ | |
312 | find $(CURDIR)/.objs/ -name '*.o' -exec ln -s {} . \; ;\ | |
313 | \rm -f $(CURDIR)/$@ ;\ | |
314 | $(DYLD) $(JETANDYFLAGS) -o $(CURDIR)/$@ $(notdir $(JETANO) $(JETANDO)) $(JETANELIBSDIR) $(JETANELIBS) $(DYLIB);\ | |
315 | chmod a-w $(CURDIR)/$@ ;\ | |
316 | cd $(ALICE_ROOT) ; \rm -rf $$TMPDIR | |
317 | endif | |
318 | ||
319 | #------------------------------------------------------------------------ | |
320 | ||
321 | $(JETANALIB):$(JETANO) $(JETANDO) | |
322 | ifndef ALIQUIET | |
323 | @echo "***** Linking static library $@ *****" | |
324 | endif | |
325 | $(MUTE)mkdir -p $(LIBPATH) | |
326 | $(MUTE)TMPDIR=/tmp/JETAN$$$$.`date +%M%S` ; \ | |
327 | export TMPDIR; mkdir -p $$TMPDIR ; cd $$TMPDIR ; \ | |
328 | find $(CURDIR)/JETAN/tgt_$(ALICE_TARGET) -name '*.o' -exec ln -s {} . \; ;\ | |
329 | \rm -f $(CURDIR)/$@ ;\ | |
330 | TMPLIB=$(notdir $(JETANLIB)); export TMPLIB;\ | |
331 | $(ALLD) $(ALFLAGS) $(CURDIR)/$@ $(notdir $(JETANO) $(JETANDO)) $(JETANELIBSDIR) $(JETANELIBS) $(ALLIB);\ | |
332 | cd $(CURDIR) ; \rm -rf $$TMPDIR | |
333 | $(MUTE)chmod a-w $@ | |
334 | ||
335 | ||
336 | $(JETANBIN):$(JETANO) $(JETANDO) $(JETANELIBSDEP) | |
337 | ifndef ALIQUIET | |
338 | @echo "***** Making executable $@ *****" | |
339 | endif | |
340 | ifeq ($(ALIPROFILE),YES) | |
341 | $(MUTE)$(LD) $(LDFLAGS) $(JETANO) $(ARLIBS) $(SHLIBS) $(LIBS) $(EXEFLAGS) -o $@ | |
342 | else | |
343 | $(MUTE)$(LD) $(LDFLAGS) $(JETANO) $(JETANDO) $(BINLIBDIRS) $(JETANELIBSDIR) $(JETANELIBS) $(LIBS) $(EXEFLAGS) -o $@ | |
344 | endif | |
345 | ||
346 | $(JETANDS): $(JETANCINTHDRS) $(JETANDH) | |
347 | ifndef ALIQUIET | |
348 | @echo "***** Creating $@ *****"; | |
349 | endif | |
350 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
351 | @\rm -f $(patsubst %.cxx,%.d, $@) | |
352 | $(MUTE)rootcint -f $@ -c $(JETANDEFINE) $(CINTFLAGS) $(JETANINC) $(JETANCINTHDRS) $(JETANDH) | |
353 | ||
354 | $(JETANDO): $(JETANDS) | |
355 | ifndef ALIQUIET | |
356 | @echo "***** Compiling $< *****"; | |
357 | endif | |
358 | $(MUTE)$(CXX) $(JETANDEFINE) -c $(JETANINC) -I$(ALICE_ROOT) $< -o $@ $(JETANDCXXFLAGS) | |
359 | ||
360 | #Different targets for the module | |
361 | ||
362 | ifeq ($(TYPE),lib) | |
363 | all-JETAN: $(JETANLIB) | |
364 | ifneq ($(DYEXT),) | |
365 | all-JETAN: $(JETANDLIB) | |
366 | endif | |
367 | else | |
368 | all-JETAN: $(JETANBIN) | |
369 | endif | |
370 | ||
371 | depend-JETAN: $(JETANDEP) | |
372 | ||
373 | # determination of object files | |
374 | $(MODDIRO)/%.o: $(MODDIR)/%.cxx $(MODDIRO)/%.d | |
375 | ifndef ALIQUIET | |
376 | @echo "***** Compiling $< *****"; | |
377 | endif | |
378 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
379 | $(MUTE)$(CXX) $(JETANDEFINE) -c $(JETANINC) $< -o $@ $(JETANCXXFLAGS) | |
380 | ||
381 | $(MODDIRO)/%.o: $(MODDIR)/%.F $(MODDIRO)/%.d | |
382 | ifndef ALIQUIET | |
383 | @echo "***** Compiling $< *****"; | |
384 | endif | |
385 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
386 | $(MUTE)$(F77) -c $(JETANINC) $< -o $@ $(JETANFFLAGS) | |
387 | ||
388 | $(MODDIRO)/%.o: $(MODDIR)/%.f $(MODDIRO)/%.d | |
389 | ifndef ALIQUIET | |
390 | @echo "***** Compiling $< *****"; | |
391 | endif | |
392 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
393 | $(MUTE)$(F77) -c $(JETANINC) $< -o $@ $(JETANFFLAGS) | |
394 | ||
395 | $(MODDIRO)/%.o: $(MODDIR)/%.c $(MODDIRO)/%.d | |
396 | ifndef ALIQUIET | |
397 | @echo "***** Compiling $< *****"; | |
398 | endif | |
399 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
400 | $(MUTE)$(CC) $(JETANDEFINE) -c $(JETANINC) $< -o $@ $(JETANCFLAGS) | |
401 | ||
402 | $(JETANDDEP): $(JETANDS) | |
403 | ifndef ALIQUIET | |
404 | @echo "***** Making dependences for $< *****"; | |
405 | endif | |
406 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
407 | @$(ALICE_ROOT)/share/alibtool depend "$(JETANELIBSDIR) $(JETANINC) $(DEPINC) $<" > $@ | |
408 | ||
409 | $(MODDIRO)/%.d: $(MODDIRS)/%.cxx | |
410 | ifndef ALIQUIET | |
411 | @echo "***** Making dependences for $< *****"; | |
412 | endif | |
413 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
414 | @$(ALICE_ROOT)/share/alibtool depend "$(JETANDEFINE) $(JETANELIBSDIR) $(JETANINC) $(DEPINC) $<" > $@ | |
415 | $(MODDIRO)/%.d: $(MODDIRS)/%.f | |
416 | ifndef ALIQUIET | |
417 | @echo "***** Making dependences for $< *****"; | |
418 | endif | |
419 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
420 | @$(ALICE_ROOT)/share/alibtool dependF "$(JETANELIBSDIR) $(JETANINC) $(DEPINC) $<" > $@ | |
421 | $(MODDIRO)/%.d: $(MODDIRS)/%.F | |
422 | ifndef ALIQUIET | |
423 | @echo "***** Making dependences for $< *****"; | |
424 | endif | |
425 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
426 | $(MUTE)share/alibtool dependF "$(JETANELIBSDIR) $(JETANINC) $(DEPINC) $<" > $@ | |
427 | $(MODDIRO)/%.d: $(MODDIRS)/%.c | |
428 | ifndef ALIQUIET | |
429 | @echo "***** Making dependences for $< *****"; | |
430 | endif | |
431 | @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;) | |
432 | @$(ALICE_ROOT)/share/alibtool depend "$(JETANDEFINE) $(JETANELIBSDIR) $(JETANINC) $(DEPINC) $<" > $@ | |
433 | ||
434 | .PRECIOUS: $(patsubst %.cxx,$(MODDIRO)/%.d,$(SRCS)) | |
435 | .PRECIOUS: $(patsubst %.c,$(MODDIRO)/%.d,$(CSRCS)) | |
436 | .PRECIOUS: $(patsubst %.F,$(MODDIRO)/%.d,$(patsubst %.f,$(MODDIRO)/%.d,$(FSRCS))) | |
437 | ||
438 | ||
439 | # Clean option for the whole module | |
440 | clean: | |
441 | ifndef ALIQUIET | |
442 | @echo "***** Cleaning JETAN *****" | |
443 | endif | |
444 | $(MUTE)rm -rf $(MODDIRO) | |
445 | $(MUTE)rm -rf lib | |
446 | $(MUTE)rm -rf $(BINPATH) |