]> git.uio.no Git - u/mrichter/AliRoot.git/blob - Makefile.flat
bug correction
[u/mrichter/AliRoot.git] / Makefile.flat
1 # Top level Makefile for AliRoot System
2 #
3 # Author: Jan-Erik Revsbech (revsbech@fys.ku.dk)
4 #         Developed on idea of Boris Polichtchouk (Boris.Polichtchouk@cern.ch), 15/4/2001
5
6
7 ##### include general path/location macros #####
8 override ALICE_ROOT=$(shell pwd)
9
10 include build/Makefile.config
11 ################################################################## 
12
13 #            Where to install libraries and binaries 
14 #                 and common header files
15
16 LIBPATH=lib/tgt_$(ALICE_TARGET)
17 BINPATH=bin/tgt_$(ALICE_TARGET)
18 EXPORTDIR = $(ALICE_ROOT)/include
19 ##################################################################
20
21 ##################################################################
22 # include machine dependent macros 
23
24 -include build/Makefile.$(ALICE_TARGET)
25 ##################################################################
26
27 ##################################################################
28
29 #               Check if called with debug
30
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))
36 endif
37 ##################################################################
38
39 ##################################################################
40 #
41 #                   Modules to build 
42
43 # COMMENTED OUT FOR TEST PURPOSES
44
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 HBTAN
49
50 #ALIROOTMODULES:= HBTP
51
52 CERNMODULES:= PDF PYTHIA PYTHIA6 GEANT321 MINICERN HIJING
53
54
55 MODULES:=$(ALIROOTMODULES) $(CERNMODULES)
56
57 ##################################################################
58
59 MODULES += ALIROOT 
60
61 MODDIRS := MODULES
62
63 #############################################################
64
65 #               Default include dirs for 
66 #          C++, Fortran, Cint, and dependencies 
67 #      The module directory will be added by each module
68 #
69
70 CXXFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
71 CXXFLAGS += -I$(ALICE_ROOT)/include
72 CXXFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
73
74 FFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
75 FFLAGS += -I$(ALICE_ROOT)/include
76 FFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
77
78 CINTFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
79 CINTFLAGS += -I$(ALICE_ROOT)/include
80 CINTFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
81
82 DEPINC += $(patsubst %,-I%,$(ALICE_ROOT))
83 DEPINC  += -I$(ALICE_ROOT)/include
84 DEPINC += $(patsubst %,-I%,$(ROOTSYS)/include)
85 #############################################################
86
87
88 #############################################################
89 #
90 #             Libraries to link binaries against
91 #            Libraries will be linked againstSHLIB
92 LIBS := $(ROOTLIBS) $(SYSLIBS) $(GLIBS)
93 #############################################################
94
95
96 # default target
97 default:     alilibs  aliroot
98
99
100 #############################################################
101 #
102 #            Each module will add to this
103
104 ALLLIBS :=
105 ALLEXECS :=
106 INCLUDEFILES :=
107 BINLIBS := 
108 EXPORTFILES := 
109 #############################################################
110
111 BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH)
112
113
114
115 #Dependencies of module.mk files
116
117 include build/module.dep
118
119 #############################################################
120
121 #        Check if module.mk is present for the library
122 %.mk:
123         @echo "***** Creating $@ file *****";
124         @share/alibtool mkmodule  $(patsubst %/module.mk,%,$@) > $@;
125 #############################################################
126
127 # **************************************************************************
128 #
129 #               If cleaning, do not include 
130 #             dependencies or module.mk files.
131
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)
134
135 #            If makeing modules, not not include
136 #                       anything
137
138 ifneq ($(findstring modules,$(MAKECMDGOALS)),modules)
139
140 #############################################################
141
142 #                Include the modules
143 -include $(patsubst %,%/module.mk,$(MODULES))
144 #############################################################
145
146 #############################################################
147 #
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)
153 endif
154 endif
155 #############################################################
156
157 endif
158 endif
159 # **************************************************************************
160
161 #############################################################
162 #
163 #              include dummy dependency file
164 #               *MUST* be last includefile
165 include build/dummy.d
166 #############################################################
167
168
169 # targets
170
171 .PHONY:         alilibs aliroot makedistr clean
172
173 modules: $(patsubst %,%/module.mk,$(MODULES))   
174
175 aliroot: $(BINPATH) $(ALLEXECS) alilibs bin
176
177 #haders: $(EXPORTFILES)
178
179 alilibs: $(LIBPATH) $(ALLLIBS) lib modules
180
181 # Single Makefile "distribution": Makefile + modules + mkdepend scripts
182 makedistr: $(MODULES)    
183          tar -cvf MakeDistr.tar $(patsubst %,%/*.pkg,$(MODULES)) \
184                 Makefile create build/* 
185
186 all: aliroot
187
188 depend: $(INCLUDEFILES) 
189
190 debug:
191         @echo "***** Entering DEBUG mode. *****"
192         @(export ALIDEBUG=YES && $(MAKE) -f Makefile.flat )
193 lib: 
194         @mkdir lib
195         @mkdir lib/tgt_$(ALICE_TARGET)
196
197 bin: 
198         @mkdir bin
199         @mkdir bin/tgt_$(ALICE_TARGET)
200
201 $(MODULES):
202         @echo "***** Making $@ *****"
203         mkdir -p $@
204
205 $(BINPATH):
206         @echo "***** Making $@ *****"
207         mkdir -p $@
208
209 $(LIBPATH):
210         @echo "***** Making $@ *****"
211         mkdir -p $@
212
213 build/dummy.d: $(EXPORTFILES)
214         @(if [ ! -f $@ ] ; then \
215            touch $@; \
216         fi)
217
218 clean:
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 "********************************************"
226
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)
233         rm -rf $(EXPORTDIR)
234
235 #This cleans only libraries that are not CERN-libraries
236
237 clean-aliroot:   $(patsubst %,%/module.mk,$(ALIROOTMODULES)) $(patsubst %,clean-%,$(ALIROOTMODULES))
238
239 clean-dicts:
240         @echo "***** Cleaning up G__ files *****"
241         rm -rf */tgt_$(ALICE_TARGET)/G__*
242 clean-modules:
243         @echo "***** Cleaning up module.mk files *****"
244         rm -rf $(patsubst %,%/module.mk,$(MODULES)) 
245
246 clean-depend:
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
252
253 clean-objects:
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
259
260 clean-libs:
261         @echo "***** Cleaning up library files *****"
262         rm -rf lib/tgt_$(ALICE_TARGET)/*
263
264 clean-bins:
265         @echo "***** Cleaning up binary files *****"
266         rm -rf bin/tgt_$(ALICE_TARGET)
267
268
269
270
271
272
273