1 # Top level Makefile for AliRoot System
3 # Author: Jan-Erik Revsbech (revsbech@fys.ku.dk)
4 # Developed on idea of Boris Polichtchouk (Boris.Polichtchouk@cern.ch), 15/4/2001
7 ##### include general path/location macros #####
8 override ALICE_TARGET := $(shell root-config --arch)
9 override ALICE_ROOT := $(shell pwd)
17 # IRST coding rule check
18 IRST_INSTALLDIR=$(ALICE)/local/IRST
19 IRST_CONFIG_DIR=$(IRST_INSTALLDIR)/userConfig/ALICE
20 CLASSPATH=$(IRST_INSTALLDIR)
21 export CLASSPATH IRST_INSTALLDIR IRST_CONFIG_DIR
22 CODE_CHECK=java rules.ALICE.ALICERuleChecker
23 REV_ENG=$(IRST_INSTALLDIR)/scripts/revEng.sh
26 include build/Makefile.config
27 ##################################################################
29 # Where to install libraries and binaries
30 # and common header files
32 LIBPATH = lib/tgt_$(ALICE_TARGET)
33 BINPATH = bin/tgt_$(ALICE_TARGET)
34 EXPORTDIR = $(ALICE_ROOT)/include
35 ##################################################################
37 ##################################################################
38 # include machine dependent macros
40 -include build/Makefile.$(ALICE_TARGET)
41 ##################################################################
43 ##################################################################
45 # Check if called with debug
47 ifeq ($(ALIDEBUG),YES)
48 override ALICE_TARGET := $(ALICE_TARGET)DEBUG
49 FFLAGS := -g $(filter-out -O%,$(FFLAGS))
50 CXXFLAGS := -g $(filter-out -O%,$(CXXLAGS))
51 CFLAGS := -g $(filter-out -O%,$(CLAGS))
52 SOFLAGS := -g $(filter-out -O%,$(SOFLAGS))
53 LDFLAGS := -g $(filter-out -O%,$(LDFLAGS))
55 ##################################################################
57 ##################################################################
59 # Check if called with profile
61 ifeq ($(ALIPROFILE),YES)
62 override ALICE_TARGET := $(ALICE_TARGET)PROF
69 ##################################################################
71 ##################################################################
73 # check if DATE is installed
76 DATEFLAGS = -DALI_DATE -D${DATE_SYS} -DDATE_SYS=${DATE_SYS} -Dlong32=${DATE_LONG32} -Dlong64=${DATE_LONG64} -DdatePointer=${DATE_POINTER}
77 CXXFLAGS += $(DATEFLAGS)
78 CFLAGS += $(DATEFLAGS)
79 CINTFLAGS += $(DATEFLAGS)
80 DEPINC += $(DATEFLAGS)
82 ##################################################################
84 ##################################################################
88 # Uncomment to show some output
89 #$(warning MAKECMDGOALS=$(MAKECMDGOALS))
91 ALIROOTMODULES := STEER PHOS TRD TPC ZDC MUON PMD FMD TOF ITS \
92 CRT RICH START STRUCT EVGEN RALICE ALIFAST VZERO \
93 THijing CONTAINERS MEVSIM TMEVSIM THbtp HBTP EMCAL HBTAN \
94 THerwig TEPEMGEN EPEMGEN FASTSIM TPHIC RAW MONITOR DISPLAY ANALYSIS \
97 CERNMODULES := PDF PYTHIA6 HIJING MICROCERN HERWIG
99 MODULES := $(ALIROOTMODULES) $(CERNMODULES)
101 ifeq ($(findstring TFluka,$(MAKECMDGOALS)),TFluka)
105 ifeq ($(findstring Flugg,$(MAKECMDGOALS)),Flugg)
109 ##################################################################
113 MODDIRS := $(MODULES)
115 #############################################################
117 # Default include dirs for
118 # C++, Fortran, Cint, and dependencies
119 # The module directory will be added by each module
122 CXXFLAGS += -I$(ALICE_ROOT)/include
123 CXXFLAGS += -I$(shell root-config --incdir)
125 CINTFLAGS += -I$(ALICE_ROOT)/include
126 CINTFLAGS += -I$(shell root-config --incdir)
128 DEPINC += -I$(ALICE_ROOT)/include
129 DEPINC += -I$(shell root-config --incdir)
130 #############################################################
133 #############################################################
135 # Libraries to link binaries against
136 # Libraries will be linked againstSHLIB
137 LIBS := $(GLIBS) $(ROOTLIBS) $(SYSLIBS)
138 #############################################################
142 default: alilibs aliroot
145 #############################################################
147 # Each module will add to this
154 #############################################################
156 BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH)
159 #Dependencies of module.mk files
161 include build/module.dep
163 #############################################################
165 # Check if module.mk is present for the library
166 %.mk: build/module.tpl
168 @echo "***** Creating $@ file *****";
170 @share/alibtool mkmodule $(patsubst %/module.mk,%,$@) > $@;
171 #############################################################
173 # **************************************************************************
175 # If cleaning, do not include
176 # dependencies or module.mk files.
178 ifeq ($(findstring $(MAKECMDGOALS), clean distclean clean-all clean-dicts clean-modules clean-depend clean-objects clean-libs clean-bins),)
180 # If making modules, not not include
183 ifneq ($(findstring modules,$(MAKECMDGOALS)),modules)
185 #############################################################
187 # Include the modules
188 -include $(patsubst %,%/module.mk,$(MODULES))
192 #############################################################
194 #############################################################
196 # include dependencies if not making them!
197 ifneq ($(MAKECMDGOALS),depend )
198 # Don't include if cleaning of any sort
199 ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
200 #$(warning INCLUDEFILES=$(INCLUDEFILES))
201 -include $(INCLUDEFILES)
204 #############################################################
208 # **************************************************************************
210 #############################################################
212 # include dummy dependency file
213 # *MUST* be last includefile
214 include build/dummy.d
215 #############################################################
220 .PHONY: alilibs aliroot makedistr clean distclean clean-all \
223 modules: $(patsubst %,%/module.mk,$(MODULES))
226 aliroot: $(BINPATH) $(ALLEXECS) alilibs bin
228 ifeq ($(ALIPROFILE),YES)
229 alilibs: $(LIBPATH) $(ALLLIBS) $(ALLALIBS) lib modules
231 alilibs: $(LIBPATH) $(ALLLIBS) lib modules
234 # Single Makefile "distribution": Makefile + modules + mkdepend scripts
235 makedistr: $(MODULES)
236 tar -cvf MakeDistr.tar $(patsubst %,%/*.pkg,$(MODULES)) \
237 Makefile create build/*
242 depend: $(INCLUDEFILES)
246 @echo "***** Entering DEBUG mode. *****"
248 @(export ALIDEBUG=YES && $(MAKE))
252 @echo "***** Entering PROFILE mode. *****"
254 @(export ALIPROFILE=YES && $(MAKE))
258 @mkdir lib/tgt_$(ALICE_TARGET)
262 @mkdir bin/tgt_$(ALICE_TARGET)
266 @echo "***** Making $@ *****"
272 @echo "***** Making $@ *****"
278 @echo "***** Making $@ *****"
282 build/dummy.d: $(EXPORTFILES)
283 @(if [ ! -f $@ ] ; then \
288 @echo "***** No target clean, use one of these *****"
289 @echo " clean-aliroot : Clean up all aliroot libraries"
290 @echo " clean-MODULENAME : Clean everything from module MODULENAME"
291 @echo " clean-all : Cleans up everything, including cern libraires"
292 @echo " distclean : Like clean-all + clean all tgt_*'s"
293 @echo " clean-modules : Clean all module.mk files in all modules"
294 @echo " clean-libs : Clean all libraries (not object files)"
295 @echo "********************************************"
297 clean-all: clean-modules clean-libs clean-bins
299 @echo "***** Cleaning up everything ****"
301 $(MUTE)rm -rf $(patsubst %,%/tgt_$(ALICE_TARGET),$(MODULES))
302 $(MUTE)rm -rf $(EXPORTDIR)
305 $(MUTE)rm -rf */tgt_* bin lib
307 #This cleans only libraries that are not CERN-libraries
309 clean-aliroot: $(patsubst %,%/module.mk,$(ALIROOTMODULES)) $(patsubst %,clean-%,$(ALIROOTMODULES))
311 CHECKMODULES := $(MODULES)
312 CHECKMODULES := $(filter-out HBTP,$(CHECKMODULES))
313 CHECKMODULES := $(filter-out MEVSIM,$(CHECKMODULES))
314 CHECKMODULES := $(filter-out EPEMGEN,$(CHECKMODULES))
315 CHECKMODULES := $(filter-out TPHIC,$(CHECKMODULES))
316 CHECKMODULES := $(filter-out PDF,$(CHECKMODULES))
317 CHECKMODULES := $(filter-out MICROCERN,$(CHECKMODULES))
319 check-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,check-%,$(CHECKMODULES))
321 reveng-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,reveng-%,$(CHECKMODULES))
323 revdisp-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,revdisp-%,$(CHECKMODULES))
327 @echo "***** Cleaning up G__ files *****"
329 $(MUTE)rm -rf */tgt_$(ALICE_TARGET)/G__*
333 @echo "***** Cleaning up module.mk files *****"
335 $(MUTE)rm -rf $(patsubst %,%/module.mk,$(MODULES))
339 @echo "***** Cleaning up dependencies *****"
341 $(MUTE)echo rm `find . -name "*.d"`
345 @echo "***** Cleaning up .o files *****"
347 $(MUTE)echo rm `find . -name "*.o"`
351 @echo "***** Cleaning up library files *****"
353 $(MUTE)rm -rf lib/tgt_$(ALICE_TARGET)/*
357 @echo "***** Cleaning up binary files *****"
359 $(MUTE)rm -rf bin/tgt_$(ALICE_TARGET)
361 clean-check-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,clean-check-%,$(CHECKMODULES))
363 clean-reveng-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,clean-reveng-%,$(CHECKMODULES))
366 @rm -rf html/roothtml
370 aliroot -q -b "mkhtml.C(0,1)" ;\
371 ls ../macros/*.C > /tmp/macros ;\
372 for i in $(ALIROOTMODULES) ; do \
373 ls ../$$i/*.C 2>/dev/null >> /tmp/macros ;\
375 for i in `cat /tmp/macros` ; do \
377 aliroot -b -q "mkhtml.C(\"$$i\")" > /dev/null ;\
380 @ln -s ../picts html/picts
381 @ln -s ../../picts html/roothtml/picts
382 @ln -s ../../../picts html/roothtml/src/picts
383 @ln -s ../../../picts html/roothtml/examples/picts