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_ROOT=$(shell pwd)
16 # IRST coding rule check
17 IRST_INSTALLDIR=$(ALICE)/local/IRST
18 CLASSPATH=$(IRST_INSTALLDIR)
19 export CLASSPATH IRST_INSTALLDIR
20 CODE_CHECK=java rules.ALICE.ALICERuleChecker
21 REV_ENG=$(IRST_INSTALLDIR)/scripts/revEng.sh
24 include build/Makefile.config
25 ##################################################################
27 # Where to install libraries and binaries
28 # and common header files
30 LIBPATH=lib/tgt_$(ALICE_TARGET)
31 BINPATH=bin/tgt_$(ALICE_TARGET)
32 EXPORTDIR = $(ALICE_ROOT)/include
33 ##################################################################
35 ##################################################################
36 # include machine dependent macros
38 -include build/Makefile.$(ALICE_TARGET)
39 ##################################################################
41 ##################################################################
43 # Check if called with debug
45 ifeq ($(ALIDEBUG),YES)
46 override ALICE_TARGET:=$(ALICE_TARGET)DEBUG
47 FFLAGS := -g $(filter-out -O%,$(FFLAGS))
48 CXXFLAGS := -g $(filter-out -O%,$(CXXLAGS))
49 CFLAGS := -g $(filter-out -O%,$(CLAGS))
50 SOFLAGS := -g $(filter-out -O%,$(SOFLAGS))
51 LDFLAGS := -g $(filter-out -O%,$(LDFLAGS))
53 ##################################################################
55 ##################################################################
59 # Uncomment to show some output
60 #$(warning MAKECMDGOALS=$(MAKECMDGOALS))
62 ALIROOTMODULES:= STEER PHOS TRD TPC ZDC MUON PMD FMD TOF ITS \
63 CRT RICH START STRUCT EVGEN RALICE ALIFAST VZERO \
64 THijing CONTAINERS MEVSIM TMEVSIM THbtp HBTP EMCAL HBTAN \
65 THerwig TEPEMGEN EPEMGEN FASTSIM
67 CERNMODULES:= PDF PYTHIA PYTHIA6 HIJING MICROCERN HERWIG
69 MODULES:=$(ALIROOTMODULES) $(CERNMODULES)
71 ifeq ($(findstring TFluka,$(MAKECMDGOALS)),TFluka)
76 ##################################################################
82 #############################################################
84 # Default include dirs for
85 # C++, Fortran, Cint, and dependencies
86 # The module directory will be added by each module
89 CXXFLAGS += -I$(ALICE_ROOT)/include
90 CXXFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
92 CINTFLAGS += -I$(ALICE_ROOT)/include
93 CINTFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
95 DEPINC += -I$(ALICE_ROOT)/include
96 DEPINC += $(patsubst %,-I%,$(ROOTSYS)/include)
97 #############################################################
100 #############################################################
102 # Libraries to link binaries against
103 # Libraries will be linked againstSHLIB
104 LIBS := $(GLIBS) $(ROOTLIBS) $(SYSLIBS)
105 #############################################################
109 default: alilibs aliroot
112 #############################################################
114 # Each module will add to this
121 #############################################################
123 BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH)
126 #Dependencies of module.mk files
128 include build/module.dep
130 #############################################################
132 # Check if module.mk is present for the library
133 %.mk: build/module.tpl
135 @echo "***** Creating $@ file *****";
137 @share/alibtool mkmodule $(patsubst %/module.mk,%,$@) > $@;
138 #############################################################
140 # **************************************************************************
142 # If cleaning, do not include
143 # dependencies or module.mk files.
145 ifeq ($(findstring $(MAKECMDGOALS), clean clean-all clean-dicts clean-modules clean-depend clean-objects clean-libs clean-bins),)
147 # If making modules, not not include
150 ifneq ($(findstring modules,$(MAKECMDGOALS)),modules)
152 #############################################################
154 # Include the modules
155 -include $(patsubst %,%/module.mk,$(MODULES))
159 #############################################################
161 #############################################################
163 # include dependencies if not making them!
164 ifneq ($(MAKECMDGOALS),depend )
165 # Don't include if cleaning of any sort
166 ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
167 include $(INCLUDEFILES)
170 #############################################################
174 # **************************************************************************
176 #############################################################
178 # include dummy dependency file
179 # *MUST* be last includefile
180 include build/dummy.d
181 #############################################################
186 .PHONY: alilibs aliroot makedistr clean htmldoc
188 modules: $(patsubst %,%/module.mk,$(MODULES))
191 aliroot: $(BINPATH) $(ALLEXECS) alilibs bin
193 alilibs: $(LIBPATH) $(ALLLIBS) lib modules
195 # Single Makefile "distribution": Makefile + modules + mkdepend scripts
196 makedistr: $(MODULES)
197 tar -cvf MakeDistr.tar $(patsubst %,%/*.pkg,$(MODULES)) \
198 Makefile create build/*
203 depend: $(INCLUDEFILES)
207 @echo "***** Entering DEBUG mode. *****"
209 @(export ALIDEBUG=YES && $(MAKE))
212 @mkdir lib/tgt_$(ALICE_TARGET)
216 @mkdir bin/tgt_$(ALICE_TARGET)
220 @echo "***** Making $@ *****"
226 @echo "***** Making $@ *****"
232 @echo "***** Making $@ *****"
236 build/dummy.d: $(EXPORTFILES)
237 @(if [ ! -f $@ ] ; then \
242 @echo "***** No targen clean, use one of these *****"
243 @echo " clean-aliroot : Clean up all aliroot libraries"
244 @echo " clean-MODULENAME : Clean everything from module MODULENAME"
245 @echo " clean-all : Cleans up everything, including cern libraires"
246 @echo " clean-modules : Clean all module.mk file in all modules"
247 @echo " clean-libs : Clean all libraries (not object files)"
248 @echo "********************************************"
250 clean-all: clean-modules clean-libs clean-bins
252 @echo "***** Cleaning up everything ****"
254 $(MUTE)rm -rf $(patsubst %,%/tgt_$(ALICE_TARGET),$(MODULES))
255 $(MUTE)rm -rf $(EXPORTDIR)
257 #This cleans only libraries that are not CERN-libraries
259 clean-aliroot: $(patsubst %,%/module.mk,$(ALIROOTMODULES)) $(patsubst %,clean-%,$(ALIROOTMODULES))
261 CHECKMODULES := $(filter-out HBTP,$(filter-out MEVSIM,$(ALIROOTMODULES)))
263 check-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,check-%,$(CHECKMODULES))
265 reveng-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,reveng-%,$(CHECKMODULES))
267 revdisp-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,revdisp-%,$(CHECKMODULES))
271 @echo "***** Cleaning up G__ files *****"
273 $(MUTE)rm -rf */tgt_$(ALICE_TARGET)/G__*
277 @echo "***** Cleaning up module.mk files *****"
279 $(MUTE)rm -rf $(patsubst %,%/module.mk,$(MODULES))
283 @echo "***** Cleaning up dependencies *****"
285 $(MUTE)echo rm `find . -name "*.d"`
289 @echo "***** Cleaning up .o files *****"
291 $(MUTE)echo rm `find . -name "*.o"`
295 @echo "***** Cleaning up library files *****"
297 $(MUTE)rm -rf lib/tgt_$(ALICE_TARGET)/*
301 @echo "***** Cleaning up binary files *****"
303 $(MUTE)rm -rf bin/tgt_$(ALICE_TARGET)
305 clean-check-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,clean-check-%,$(CHECKMODULES))
307 clean-reveng-all: $(patsubst %,%/module.mk,$(CHECKMODULES)) $(patsubst %,clean-reveng-%,$(CHECKMODULES))
310 @rm -rf html/roothtml
314 aliroot -q -b "mkhtml.C(0,1)" ;\
315 ls ../macros/*.C > /tmp/macros ;\
316 for i in $(ALIROOTMODULES) ; do \
317 ls ../$$i/*.C 2>/dev/null >> /tmp/macros ;\
319 for i in `cat /tmp/macros` ; do \
321 aliroot -b -q "mkhtml.C(\"$$i\")" > /dev/null ;\
324 @ln -s ../picts html/picts
325 @ln -s ../../picts html/roothtml/picts
326 @ln -s ../../../picts html/roothtml/src/picts
327 @ln -s ../../../picts html/roothtml/examples/picts