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 #####
9 PLATFORM = $(shell root-config --arch)
11 ALICE_TARGET = $(PLATFORM)
13 override ALICE_ROOT=$(shell pwd)
21 # IRST coding rule check
22 IRST_INSTALLDIR=$(ALICE)/local/IRST
23 IRST_CONFIG_DIR=$(IRST_INSTALLDIR)/userConfig/ALICE
24 CLASSPATH=$(IRST_INSTALLDIR)
25 export CLASSPATH IRST_INSTALLDIR IRST_CONFIG_DIR
26 CODE_CHECK=java rules.ALICE.ALICERuleChecker
27 REV_ENG=$(IRST_INSTALLDIR)/scripts/revEng.sh
30 include build/Makefile.config
31 ##################################################################
33 # Where to install libraries and binaries
34 # and common header files
36 LIBPATH = lib/tgt_$(ALICE_TARGET)
37 BINPATH = bin/tgt_$(ALICE_TARGET)
38 EXPORTDIR = $(ALICE_ROOT)/include
39 ##################################################################
41 ##################################################################
42 # include machine dependent macros
44 -include build/Makefile.$(ALICE_TARGET)
45 ##################################################################
47 ##################################################################
49 # Check if called with debug
51 ifeq ($(ALIDEBUG),YES)
52 override ALICE_TARGET:=$(ALICE_TARGET)DEBUG
53 FFLAGS := -g $(filter-out -O%,$(FFLAGS))
54 CXXFLAGS := -g $(filter-out -O%,$(CXXLAGS))
55 CFLAGS := -g $(filter-out -O%,$(CLAGS))
56 SOFLAGS := -g $(filter-out -O%,$(SOFLAGS))
57 LDFLAGS := -g $(filter-out -O%,$(LDFLAGS))
59 ##################################################################
61 ##################################################################
63 # Check if called with profile
65 ifeq ($(ALIPROFILE),YES)
66 override ALICE_TARGET:=$(ALICE_TARGET)PROF
73 ##################################################################
75 ##################################################################
77 # check if DATE is installed
80 DATEFLAGS = -DALI_DATE -D${DATE_SYS} -DDATE_SYS=${DATE_SYS} -Dlong32=${DATE_LONG32} -Dlong64=${DATE_LONG64} -DdatePointer=${DATE_POINTER}
81 CXXFLAGS += $(DATEFLAGS)
82 CFLAGS += $(DATEFLAGS)
83 CINTFLAGS += $(DATEFLAGS)
84 DEPINC += $(DATEFLAGS)
86 ##################################################################
88 ##################################################################
92 # Uncomment to show some output
93 #$(warning MAKECMDGOALS=$(MAKECMDGOALS))
95 ALIROOTMODULES:= STEER PHOS TRD TPC ZDC MUON PMD FMD TOF ITS \
96 CRT RICH START STRUCT EVGEN RALICE ALIFAST VZERO \
97 THijing CONTAINERS MEVSIM TMEVSIM THbtp HBTP EMCAL HBTAN \
98 THerwig TEPEMGEN EPEMGEN FASTSIM TPHIC RAW MONITOR DISPLAY ANALYSIS \
101 CERNMODULES:= PDF PYTHIA6 HIJING MICROCERN HERWIG
103 MODULES:=$(ALIROOTMODULES) $(CERNMODULES)
105 ifeq ($(findstring TFluka,$(MAKECMDGOALS)),TFluka)
109 ifeq ($(findstring Flugg,$(MAKECMDGOALS)),Flugg)
113 ##################################################################
117 MODDIRS := $(MODULES)
119 #############################################################
121 # Default include dirs for
122 # C++, Fortran, Cint, and dependencies
123 # The module directory will be added by each module
126 CXXFLAGS += -I$(ALICE_ROOT)/include
127 CXXFLAGS += -I$(shell root-config --incdir)
129 CINTFLAGS += -I$(ALICE_ROOT)/include
130 CINTFLAGS += -I$(shell root-config --incdir)
132 DEPINC += -I$(ALICE_ROOT)/include
133 DEPINC += -I$(shell root-config --incdir)
134 #############################################################
137 #############################################################
139 # Libraries to link binaries against
140 # Libraries will be linked againstSHLIB
141 LIBS := $(GLIBS) $(ROOTLIBS) $(SYSLIBS)
142 #############################################################
146 default: alilibs aliroot
149 #############################################################
151 # Each module will add to this
158 #############################################################
160 BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH)
163 #Dependencies of module.mk files
165 include build/module.dep
167 #############################################################
169 # Check if module.mk is present for the library
170 %.mk: build/module.tpl
172 @echo "***** Creating $@ file *****";
174 @share/alibtool mkmodule $(patsubst %/module.mk,%,$@) > $@;
175 #############################################################
177 # **************************************************************************
179 # If cleaning, do not include
180 # dependencies or module.mk files.
182 ifeq ($(findstring $(MAKECMDGOALS), clean distclean clean-all clean-dicts clean-modules clean-depend clean-objects clean-libs clean-bins),)
184 # If making modules, not not include
187 ifneq ($(findstring modules,$(MAKECMDGOALS)),modules)
189 #############################################################
191 # Include the modules
192 -include $(patsubst %,%/module.mk,$(MODULES))
196 #############################################################
198 #############################################################
200 # include dependencies if not making them!
201 ifneq ($(MAKECMDGOALS),depend )
202 # Don't include if cleaning of any sort
203 ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
204 #$(warning INCLUDEFILES=$(INCLUDEFILES))
205 -include $(INCLUDEFILES)
208 #############################################################
212 # **************************************************************************
214 #############################################################
216 # include dummy dependency file
217 # *MUST* be last includefile
218 include build/dummy.d
219 #############################################################
224 .PHONY: alilibs aliroot makedistr clean distclean clean-all \
227 modules: $(patsubst %,%/module.mk,$(MODULES))
230 aliroot: $(BINPATH) $(ALLEXECS) alilibs bin
232 ifeq ($(ALIPROFILE),YES)
233 alilibs: $(LIBPATH) $(ALLLIBS) $(ALLALIBS) lib modules
235 alilibs: $(LIBPATH) $(ALLLIBS) lib modules
238 # Single Makefile "distribution": Makefile + modules + mkdepend scripts
239 makedistr: $(MODULES)
240 tar -cvf MakeDistr.tar $(patsubst %,%/*.pkg,$(MODULES)) \
241 Makefile create build/*
246 depend: $(INCLUDEFILES)
250 @echo "***** Entering DEBUG mode. *****"
252 @(export ALIDEBUG=YES && $(MAKE))
255 @echo "***** Entering PROFILE mode. *****"
257 @(export ALIPROFILE=YES && $(MAKE))
260 @mkdir lib/tgt_$(ALICE_TARGET)
264 @mkdir bin/tgt_$(ALICE_TARGET)
268 @echo "***** Making $@ *****"
274 @echo "***** Making $@ *****"
280 @echo "***** Making $@ *****"
284 build/dummy.d: $(EXPORTFILES)
285 @(if [ ! -f $@ ] ; then \
290 @echo "***** No target clean, use one of these *****"
291 @echo " clean-aliroot : Clean up all aliroot libraries"
292 @echo " clean-MODULENAME : Clean everything from module MODULENAME"
293 @echo " clean-all : Cleans up everything, including cern libraires"
294 @echo " distclean : Like clean-all + clean all tgt_*'s"
295 @echo " clean-modules : Clean all module.mk file in all modules"
296 @echo " clean-libs : Clean all libraries (not object files)"
297 @echo "********************************************"
299 clean-all: clean-modules clean-libs clean-bins
301 @echo "***** Cleaning up everything ****"
303 $(MUTE)rm -rf $(patsubst %,%/tgt_$(ALICE_TARGET),$(MODULES))
304 $(MUTE)rm -rf $(EXPORTDIR)
307 $(MUTE)rm -rf */tgt_* bin lib
309 #This cleans only libraries that are not CERN-libraries
311 clean-aliroot: $(patsubst %,%/module.mk,$(ALIROOTMODULES)) $(patsubst %,clean-%,$(ALIROOTMODULES))
313 CHECKMODULES := $(MODULES)
314 CHECKMODULES := $(filter-out HBTP,$(CHECKMODULES))
315 CHECKMODULES := $(filter-out MEVSIM,$(CHECKMODULES))
316 CHECKMODULES := $(filter-out EPEMGEN,$(CHECKMODULES))
317 CHECKMODULES := $(filter-out TPHIC,$(CHECKMODULES))
318 CHECKMODULES := $(filter-out PDF,$(CHECKMODULES))
319 CHECKMODULES := $(filter-out MICROCERN,$(CHECKMODULES))
321 check-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,check-%,$(CHECKMODULES))
323 reveng-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,reveng-%,$(CHECKMODULES))
325 revdisp-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,revdisp-%,$(CHECKMODULES))
329 @echo "***** Cleaning up G__ files *****"
331 $(MUTE)rm -rf */tgt_$(ALICE_TARGET)/G__*
335 @echo "***** Cleaning up module.mk files *****"
337 $(MUTE)rm -rf $(patsubst %,%/module.mk,$(MODULES))
341 @echo "***** Cleaning up dependencies *****"
343 $(MUTE)echo rm `find . -name "*.d"`
347 @echo "***** Cleaning up .o files *****"
349 $(MUTE)echo rm `find . -name "*.o"`
353 @echo "***** Cleaning up library files *****"
355 $(MUTE)rm -rf lib/tgt_$(ALICE_TARGET)/*
359 @echo "***** Cleaning up binary files *****"
361 $(MUTE)rm -rf bin/tgt_$(ALICE_TARGET)
363 clean-check-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,clean-check-%,$(CHECKMODULES))
365 clean-reveng-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,clean-reveng-%,$(CHECKMODULES))
368 @rm -rf html/roothtml
372 aliroot -q -b "mkhtml.C(0,1)" ;\
373 ls ../macros/*.C > /tmp/macros ;\
374 for i in $(ALIROOTMODULES) ; do \
375 ls ../$$i/*.C 2>/dev/null >> /tmp/macros ;\
377 for i in `cat /tmp/macros` ; do \
379 aliroot -b -q "mkhtml.C(\"$$i\")" > /dev/null ;\
382 @ln -s ../picts html/picts
383 @ln -s ../../picts html/roothtml/picts
384 @ln -s ../../../picts html/roothtml/src/picts
385 @ln -s ../../../picts html/roothtml/examples/picts