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)
10 include build/Makefile.config
11 ##################################################################
13 # Where to install libraries and binaries
14 # and common header files
16 LIBPATH=lib/tgt_$(ALICE_TARGET)
17 BINPATH=bin/tgt_$(ALICE_TARGET)
18 EXPORTDIR = $(ALICE_ROOT)/include
19 ##################################################################
21 ##################################################################
22 # include machine dependent macros
24 -include build/Makefile.$(ALICE_TARGET)
25 ##################################################################
27 ##################################################################
29 # Check if called with debug
31 ifeq ($(ALIDEBUG),YES)
32 override ALICE_TARGET:=$(ALICE_TARGET)DEBUG
33 FFLAGS := -g $(filter-out -O%,$(FFLAGS))
34 CXXFLAGS := -g $(filter-out -O%,$(CXXLAGS))
35 CFLAGS := -g $(filter-out -O%,$(CLAGS))
37 ##################################################################
39 ##################################################################
43 # COMMENTED OUT FOR TEST PURPOSES
45 ALIROOTMODULES:= STEER \
46 TGeant3 PHOS TRD TPC ZDC MUON PMD FMD TOF ITS \
47 CASTOR RICH START STRUCT EVGEN RALICE ALIFAST \
48 THijing CONTAINERS MEVSIM TMEVSIM THbtp HBTP EMCAL
50 #ALIROOTMODULES:= HBTP
52 CERNMODULES:= PDF PYTHIA PYTHIA6 GEANT321 MINICERN HIJING
55 MODULES:=$(ALIROOTMODULES) $(CERNMODULES)
57 ##################################################################
63 #############################################################
65 # Default include dirs for
66 # C++, Fortran, Cint, and dependencies
67 # The module directory will be added by each module
70 CXXFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
71 CXXFLAGS += -I$(ALICE_ROOT)/include
72 CXXFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
74 FFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
75 FFLAGS += -I$(ALICE_ROOT)/include
76 FFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
78 CINTFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
79 CINTFLAGS += -I$(ALICE_ROOT)/include
80 CINTFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
82 DEPINC += $(patsubst %,-I%,$(ALICE_ROOT))
83 DEPINC += -I$(ALICE_ROOT)/include
84 DEPINC += $(patsubst %,-I%,$(ROOTSYS)/include)
85 #############################################################
88 #############################################################
90 # Libraries to link binaries against
91 # Libraries will be linked againstSHLIB
92 LIBS := $(ROOTLIBS) $(SYSLIBS) $(GLIBS)
93 #############################################################
97 default: alilibs aliroot
100 #############################################################
102 # Each module will add to this
109 #############################################################
111 BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH)
115 #Dependencies of module.mk files
117 include build/module.dep
119 #############################################################
121 # Check if module.mk is present for the library
123 @echo "***** Creating $@ file *****";
124 @share/alibtool mkmodule $(patsubst %/module.mk,%,$@) > $@;
125 #############################################################
127 # **************************************************************************
129 # If cleaning, do not include
130 # dependencies or module.mk files.
132 ifeq ($(findstring $(MAKECMDGOALS), clean clean-all clean-dicts clean-modules clean-depend clean-objects clean-libs clean-bins),)
133 #ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
135 # If makeing modules, not not include
138 ifneq ($(findstring modules,$(MAKECMDGOALS)),modules)
140 #############################################################
142 # Include the modules
143 -include $(patsubst %,%/module.mk,$(MODULES))
144 #############################################################
146 #############################################################
148 # include dependencies if not making them!
149 ifneq ($(MAKECMDGOALS),depend )
150 # Don't include if cleaning of any sort
151 ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
152 include $(INCLUDEFILES)
155 #############################################################
159 # **************************************************************************
161 #############################################################
163 # include dummy dependency file
164 # *MUST* be last includefile
165 include build/dummy.d
166 #############################################################
171 .PHONY: alilibs aliroot makedistr clean
173 modules: $(patsubst %,%/module.mk,$(MODULES))
175 aliroot: $(BINPATH) $(ALLEXECS) alilibs bin
177 #haders: $(EXPORTFILES)
179 alilibs: $(LIBPATH) $(ALLLIBS) lib modules
181 # Single Makefile "distribution": Makefile + modules + mkdepend scripts
182 makedistr: $(MODULES)
183 tar -cvf MakeDistr.tar $(patsubst %,%/*.pkg,$(MODULES)) \
184 Makefile create build/*
188 depend: $(INCLUDEFILES)
191 @echo "***** Entering DEBUG mode. *****"
192 @(export ALIDEBUG=YES && $(MAKE) -f Makefile.flat )
195 @mkdir lib/tgt_$(ALICE_TARGET)
199 @mkdir bin/tgt_$(ALICE_TARGET)
202 @echo "***** Making $@ *****"
206 @echo "***** Making $@ *****"
210 @echo "***** Making $@ *****"
213 build/dummy.d: $(EXPORTFILES)
214 @(if [ ! -f $@ ] ; then \
219 @echo "***** No targen clean, use on of these *****"
220 @echo " clean-aliroot : Clean up all aliroot libraries"
221 @echo " clean-MODULENAME : Clean everything from module MODULENAME"
222 @echo " clean-all : Cleans up everything, including cern libraires"
223 @echo " clean-modules : Clean all module.mk file in all modules"
224 @echo " clean-libs : Clean all libraries (not object files)"
225 @echo "********************************************"
227 clean-all: clean-modules
228 @echo "***** Cleaning up everything ****"
229 rm -rf $(patsubst %,%/module.mk,$(MODULES))
230 rm -rf $(patsubst %,%/tgt_$(ALICE_TARGET),$(MODULES))
231 rm -rf lib/tgt_$(ALICE_TARGET)
232 rm -rf bin/tgt_$(ALICE_TARGET)
235 #This cleans only libraries that are not CERN-libraries
237 clean-aliroot: $(patsubst %,%/module.mk,$(ALIROOTMODULES)) $(patsubst %,clean-%,$(ALIROOTMODULES))
240 @echo "***** Cleaning up G__ files *****"
241 rm -rf */tgt_$(ALICE_TARGET)/G__*
243 @echo "***** Cleaning up module.mk files *****"
244 rm -rf $(patsubst %,%/module.mk,$(MODULES))
247 @echo "***** Cleaning up dependencies *****"
248 rm -rf */tgt_$(ALICE_TARGET)/*.d
249 rm -rf */tgt_$(ALICE_TARGET)/*/*.d
250 rm -rf */tgt_$(ALICE_TARGET)/*/*/*.d
251 rm -rf */tgt_$(ALICE_TARGET)/*/*/*/*.d
254 @echo "***** Cleaning up .o files *****"
255 rm -rf */tgt_$(ALICE_TARGET)/*.o
256 rm -rf */tgt_$(ALICE_TARGET)/*/*.o
257 rm -rf */tgt_$(ALICE_TARGET)/*/*/*.o
258 rm -rf */tgt_$(ALICE_TARGET)/*/*/*/*.o
261 @echo "***** Cleaning up library files *****"
262 rm -rf lib/tgt_$(ALICE_TARGET)/*
265 @echo "***** Cleaning up binary files *****"
266 rm -rf bin/tgt_$(ALICE_TARGET)