3 # Makefile for the jetan package (standalone)
11 #-------------------------------------------------------------------------------
12 # Include library definition
14 include $(ALICE_ROOT)/build/Makefile.config
16 #-------------------------------------------------------------------------------
17 # Location where to install libraries and binaries and common header files
19 LIBPATH := ./lib/tgt_$(ALICE_TARGET)
20 BINPATH := ./bin/tgt_$(ALICE_TARGET)
21 EXPORTDIR := $(ALICE_ROOT)/include
22 BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH)
24 #-------------------------------------------------------------------------------
25 # Include machine dependent macros
27 include $(ALICE_ROOT)/build/Makefile.$(ALICE_TARGET)
29 #-------------------------------------------------------------------------------
30 # Check if called with debug
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))
41 #-------------------------------------------------------------------------------
42 # Check if called with profile
44 ifeq ($(ALIPROFILE),YES)
45 override ALICE_TARGET := $(ALICE_TARGET)PROF
53 #-------------------------------------------------------------------------------
54 # Check if DATE is installed
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)
65 #-------------------------------------------------------------------------------
66 # Default include dirs for C++, Fortran, Cint, and dependencies
67 # The module directory will be added by each module
69 GENINC := -I$(ALICE_ROOT)/include -I$(shell root-config --incdir)
71 CXXFLAGSNO += $(GENINC)
72 CINTFLAGS += $(GENINC)
75 LIBS := $(GLIBS) $(ROOTLIBS) $(SYSLIBS)
77 #Determine if it's a library or a executable
80 # Package head directory, source and include directories
87 # Reseting variables before importing pkg-file
113 JETANFFLAGS:=$(FFLAGS)
115 JETANFFLAGS:=$(PACKFFLAGS)
119 JETANCFLAGS:=$(CFLAGS)
121 JETANCFLAGS:=$(PACKCFLAGS)
125 JETANCXXFLAGS:=$(CXXFLAGS)
127 JETANCXXFLAGS:=$(PACKCXXFLAGS)
131 JETANSOFLAGS:=$(SOFLAGS)
133 JETANSOFLAGS:=$(PACKSOFLAGS)
138 JETANDYFLAGS:=$(DYFLAGS)
140 JETANDYFLAGS:=$(PACKDYFLAGS)
145 JETANDCXXFLAGS:=$(CXXFLAGSNO)
147 JETANDCXXFLAGS:=$(PACKDCXXFLAGS)
157 # Headerfiles exported to common place:
158 JETANEXPORT:=$(EXPORT)
159 JETANEXPORTDEST:=$(patsubst %,$(EXPORTDIR)/%,$(EXPORT))
162 #Extra include,libs, defines etc.
164 JETANDEFINE:=$(EDEFINE) -DNOUQHEADERINFO
166 JETANINC:=$(patsubst %,-I$(ALICE_ROOT)/%,$(EINCLUDE)) -I.
168 JETANELIBS:=$(patsubst %,-l%,$(ELIBS))
169 JETANELIBSDEP:=$(patsubst %,lib/tgt_$(ALICE_TARGET)/lib%.$(SOEXT),$(ELIBS))
170 JETANELIBSDIR:=$(patsubst %,-L%,$(ELIBSDIR))
172 #c sources and headers
174 JETANCS:=$(patsubst %,$(MODDIR)/%,$(CSRCS))
175 JETANCH:=$(patsubst %,$(MODDIR)/%,$(CHDRS))
178 JETANFS:=$(patsubst %,$(MODDIR)/%,$(FSRCS))
180 #c++ sources and header
181 JETANS:=$(patsubst %,$(MODDIR)/%,$(SRCS))
182 JETANH:=$(patsubst %,$(MODDIR)/%,$(HDRS)) $(EHDRS)
184 #c++ source subdirectories
187 #############################################################################
189 # If special rootcint headerfiles is specified use them
190 # else use all headers
193 JETANCINTHDRS:=$(JETANH)
195 JETANCINTHDRS:=$(CINTHDRS)
197 #############################################################################
201 JETANDH:=$(MODDIR)/$(DHDR)
205 JETANCO:=$(patsubst %,$(MODDIRO)/%, $(CSRCS:.c=.o))
207 JETANFO:=$(patsubst %,$(MODDIRO)/%, $(TEMP:.f=.o))
208 JETANO:= $(patsubst %,$(MODDIRO)/%, $(SRCS:.cxx=.o)) $(JETANFO) $(JETANCO)
213 JETANDS:=$(MODDIRO)/G__JETAN.cxx
214 JETANDO:=$(MODDIRO)/G__JETAN.o
215 JETANDDEP:=$(JETANDO:.o=.d)
216 JETANDEP:=$(JETANO:.o=.d) $(JETANDDEP)
221 JETANDEP:=$(JETANO:.o=.d)
225 #The actual library file
227 JETANLIB:=$(LIBPATH)/libJETAN.$(SOEXT)
230 JETANDLIB:=$(LIBPATH)/libJETAN.$(DYEXT)
233 JETANALIB:=$(LIBPATH)/libJETAN.$(AEXT)
235 #Add this to the modules libs
236 JETANLIBS += $(JETANLIB)
237 JETANALIBS += $(JETANALIB)
239 JETANDLIBS += $(JETANDLIB)
242 #The actual binary file
244 JETANBIN:=$(BINPATH)/JETAN
246 #Add to modules list of binaries
247 JETANBINS += $(JETANBIN)
249 # Use in the main Makefile
252 ALLLIBS += $(JETANLIB)
253 ALLALIBS += $(JETANALIB)
255 ALLLIBS += $(JETANDLIB)
259 ALLEXECS += $(JETANBIN)
263 JETANLIB := $(JETANLIB)
265 JETANLIB := $(JETANLIB)
268 # include all dependence files
269 INCLUDEFILES +=$(JETANDEP)
271 EXPORTFILES += $(JETANEXPORTDEST)
275 #The exportfiles only include if any!!
278 #$(JETANEXPORTDEST): $(patsubst %,JETAN/%,$(JETANEXPORT))
280 $(JETANEXPORTDEST): $(EXPORTDIR)/%.h: JETAN/%.h
282 @echo "***** Copying file $^ to $@ *****"
284 @[ -d $(dir $@) ] || mkdir -p $(dir $@)
288 #------------------------------------------------------------------------
290 $(JETANLIB):$(JETANO) $(JETANDO)
292 @echo "***** Linking library $@ *****"
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
305 $(JETANDLIB):$(JETANO) $(JETANDO)
307 @echo "***** Linking library $@ *****"
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
319 #------------------------------------------------------------------------
321 $(JETANALIB):$(JETANO) $(JETANDO)
323 @echo "***** Linking static library $@ *****"
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
336 $(JETANBIN):$(JETANO) $(JETANDO) $(JETANELIBSDEP)
338 @echo "***** Making executable $@ *****"
340 ifeq ($(ALIPROFILE),YES)
341 $(MUTE)$(LD) $(LDFLAGS) $(JETANO) $(ARLIBS) $(SHLIBS) $(LIBS) $(EXEFLAGS) -o $@
343 $(MUTE)$(LD) $(LDFLAGS) $(JETANO) $(JETANDO) $(BINLIBDIRS) $(JETANELIBSDIR) $(JETANELIBS) $(LIBS) $(EXEFLAGS) -o $@
346 $(JETANDS): $(JETANCINTHDRS) $(JETANDH)
348 @echo "***** Creating $@ *****";
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)
354 $(JETANDO): $(JETANDS)
356 @echo "***** Compiling $< *****";
358 $(MUTE)$(CXX) $(JETANDEFINE) -c $(JETANINC) -I$(ALICE_ROOT) $< -o $@ $(JETANDCXXFLAGS)
360 #Different targets for the module
363 all-JETAN: $(JETANLIB)
365 all-JETAN: $(JETANDLIB)
368 all-JETAN: $(JETANBIN)
371 depend-JETAN: $(JETANDEP)
373 # determination of object files
374 $(MODDIRO)/%.o: $(MODDIR)/%.cxx $(MODDIRO)/%.d
376 @echo "***** Compiling $< *****";
378 @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
379 $(MUTE)$(CXX) $(JETANDEFINE) -c $(JETANINC) $< -o $@ $(JETANCXXFLAGS)
381 $(MODDIRO)/%.o: $(MODDIR)/%.F $(MODDIRO)/%.d
383 @echo "***** Compiling $< *****";
385 @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
386 $(MUTE)$(F77) -c $(JETANINC) $< -o $@ $(JETANFFLAGS)
388 $(MODDIRO)/%.o: $(MODDIR)/%.f $(MODDIRO)/%.d
390 @echo "***** Compiling $< *****";
392 @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
393 $(MUTE)$(F77) -c $(JETANINC) $< -o $@ $(JETANFFLAGS)
395 $(MODDIRO)/%.o: $(MODDIR)/%.c $(MODDIRO)/%.d
397 @echo "***** Compiling $< *****";
399 @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
400 $(MUTE)$(CC) $(JETANDEFINE) -c $(JETANINC) $< -o $@ $(JETANCFLAGS)
402 $(JETANDDEP): $(JETANDS)
404 @echo "***** Making dependences for $< *****";
406 @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
407 @$(ALICE_ROOT)/share/alibtool depend "$(JETANELIBSDIR) $(JETANINC) $(DEPINC) $<" > $@
409 $(MODDIRO)/%.d: $(MODDIRS)/%.cxx
411 @echo "***** Making dependences for $< *****";
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
417 @echo "***** Making dependences for $< *****";
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
423 @echo "***** Making dependences for $< *****";
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
429 @echo "***** Making dependences for $< *****";
431 @(if [ ! -d '$(dir $@)' ]; then echo "***** Making directory $(dir $@) *****"; mkdir -p $(dir $@); fi;)
432 @$(ALICE_ROOT)/share/alibtool depend "$(JETANDEFINE) $(JETANELIBSDIR) $(JETANINC) $(DEPINC) $<" > $@
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)))
439 # Clean option for the whole module
442 @echo "***** Cleaning JETAN *****"
444 $(MUTE)rm -rf $(MODDIRO)
446 $(MUTE)rm -rf $(BINPATH)