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 include build/Makefile.config
17 ##################################################################
19 # Where to install libraries and binaries
20 # and common header files
22 LIBPATH=lib/tgt_$(ALICE_TARGET)
23 BINPATH=bin/tgt_$(ALICE_TARGET)
24 EXPORTDIR = $(ALICE_ROOT)/include
25 ##################################################################
27 ##################################################################
28 # include machine dependent macros
30 -include build/Makefile.$(ALICE_TARGET)
31 ##################################################################
33 ##################################################################
35 # Check if called with debug
37 ifeq ($(ALIDEBUG),YES)
38 override ALICE_TARGET:=$(ALICE_TARGET)DEBUG
39 FFLAGS := -g $(filter-out -O%,$(FFLAGS))
40 CXXFLAGS := -g $(filter-out -O%,$(CXXLAGS))
41 CFLAGS := -g $(filter-out -O%,$(CLAGS))
43 ##################################################################
45 ##################################################################
49 # COMMENTED OUT FOR TEST PURPOSES
51 ALIROOTMODULES:= STEER \
52 TGeant3 PHOS TRD TPC ZDC MUON PMD FMD TOF ITS \
53 CASTOR RICH START STRUCT EVGEN RALICE ALIFAST \
54 THijing CONTAINERS MEVSIM TMEVSIM THbtp HBTP EMCAL HBTAN
56 CERNMODULES:= PDF PYTHIA PYTHIA6 GEANT321 MINICERN HIJING
58 MODULES:=$(ALIROOTMODULES) $(CERNMODULES)
60 ##################################################################
66 #############################################################
68 # Default include dirs for
69 # C++, Fortran, Cint, and dependencies
70 # The module directory will be added by each module
73 CXXFLAGS += -I$(ALICE_ROOT)/include
74 CXXFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
76 CINTFLAGS += -I$(ALICE_ROOT)/include
77 CINTFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
79 DEPINC += -I$(ALICE_ROOT)/include
80 DEPINC += $(patsubst %,-I%,$(ROOTSYS)/include)
81 #############################################################
84 #############################################################
86 # Libraries to link binaries against
87 # Libraries will be linked againstSHLIB
88 LIBS := $(ROOTLIBS) $(SYSLIBS) $(GLIBS)
89 #############################################################
93 default: alilibs aliroot
96 #############################################################
98 # Each module will add to this
105 #############################################################
107 BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH)
110 #Dependencies of module.mk files
112 include build/module.dep
114 #############################################################
116 # Check if module.mk is present for the library
119 @echo "***** Creating $@ file *****";
121 @share/alibtool mkmodule $(patsubst %/module.mk,%,$@) > $@;
122 #############################################################
124 # **************************************************************************
126 # If cleaning, do not include
127 # dependencies or module.mk files.
129 ifeq ($(findstring $(MAKECMDGOALS), clean clean-all clean-dicts clean-modules clean-depend clean-objects clean-libs clean-bins),)
131 # If making modules, not not include
134 ifneq ($(findstring modules,$(MAKECMDGOALS)),modules)
136 #############################################################
138 # Include the modules
139 -include $(patsubst %,%/module.mk,$(MODULES))
140 #############################################################
142 #############################################################
144 # include dependencies if not making them!
145 ifneq ($(MAKECMDGOALS),depend )
146 # Don't include if cleaning of any sort
147 ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
148 include $(INCLUDEFILES)
151 #############################################################
155 # **************************************************************************
157 #############################################################
159 # include dummy dependency file
160 # *MUST* be last includefile
161 include build/dummy.d
162 #############################################################
167 .PHONY: alilibs aliroot makedistr clean
169 modules: $(patsubst %,%/module.mk,$(MODULES))
171 aliroot: $(BINPATH) $(ALLEXECS) alilibs bin
173 alilibs: $(LIBPATH) $(ALLLIBS) lib modules
175 # Single Makefile "distribution": Makefile + modules + mkdepend scripts
176 makedistr: $(MODULES)
177 tar -cvf MakeDistr.tar $(patsubst %,%/*.pkg,$(MODULES)) \
178 Makefile create build/*
182 depend: $(INCLUDEFILES)
186 @echo "***** Entering DEBUG mode. *****"
188 @(export ALIDEBUG=YES && $(MAKE) -f Makefile.flat )
191 @mkdir lib/tgt_$(ALICE_TARGET)
195 @mkdir bin/tgt_$(ALICE_TARGET)
199 @echo "***** Making $@ *****"
205 @echo "***** Making $@ *****"
211 @echo "***** Making $@ *****"
215 build/dummy.d: $(EXPORTFILES)
216 @(if [ ! -f $@ ] ; then \
221 @echo "***** No targen clean, use one of these *****"
222 @echo " clean-aliroot : Clean up all aliroot libraries"
223 @echo " clean-MODULENAME : Clean everything from module MODULENAME"
224 @echo " clean-all : Cleans up everything, including cern libraires"
225 @echo " clean-modules : Clean all module.mk file in all modules"
226 @echo " clean-libs : Clean all libraries (not object files)"
227 @echo "********************************************"
229 clean-all: clean-modules clean-libs clean-bins
231 @echo "***** Cleaning up everything ****"
233 $(MUTE)rm -rf $(patsubst %,%/tgt_$(ALICE_TARGET),$(MODULES))
234 $(MUTE)rm -rf $(EXPORTDIR)
236 #This cleans only libraries that are not CERN-libraries
238 clean-aliroot: $(patsubst %,%/module.mk,$(ALIROOTMODULES)) $(patsubst %,clean-%,$(ALIROOTMODULES))
242 @echo "***** Cleaning up G__ files *****"
244 $(MUTE)rm -rf */tgt_$(ALICE_TARGET)/G__*
248 @echo "***** Cleaning up module.mk files *****"
250 $(MUTE)rm -rf $(patsubst %,%/module.mk,$(MODULES))
254 @echo "***** Cleaning up dependencies *****"
256 $(MUTE)echo rm `find . -name "*.d"`
260 @echo "***** Cleaning up .o files *****"
262 $(MUTE)echo rm `find . -name "*.o"`
266 @echo "***** Cleaning up library files *****"
268 $(MUTE)rm -rf lib/tgt_$(ALICE_TARGET)/*
272 @echo "***** Cleaning up binary files *****"
274 $(MUTE)rm -rf bin/tgt_$(ALICE_TARGET)