Update of the flat makefiles (J.-E. Revsbech)
[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 MODULES:=PDF PYTHIA PYTHIA6 GEANT321 MINICERN STEER HIJING\
45          TGeant3 PHOS TRD TPC ZDC MUON PMD FMD TOF ITS \
46          CASTOR RICH START STRUCT EVGEN RALICE ALIFAST \
47          THijing CONTAINERS MEVSIM TMEVSIM THbtp HBTP EMCAL
48
49 # MODULES:=STEER HBTP PHOS
50
51 ##################################################################
52
53 MODULES += ALIROOT 
54
55 MODDIRS := MODULES
56                  
57
58 #############################################################
59
60 #               Default include dirs for 
61 #          C++, Fortran, Cint, and dependencies 
62 #      The module directory will be added by each module
63 #
64
65 CXXFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
66 CXXFLAGS += -I$(ALICE_ROOT)/include
67 CXXFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
68
69 FFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
70 FFLAGS += -I$(ALICE_ROOT)/include
71 FFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
72
73 CINTFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
74 CINTFLAGS += -I$(ALICE_ROOT)/include
75 CINTFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
76
77 DEPINC += $(patsubst %,-I%,$(ALICE_ROOT))
78 DEPINC  += -I$(ALICE_ROOT)/include
79 DEPINC += $(patsubst %,-I%,$(ROOTSYS)/include)
80 #############################################################
81
82
83 #############################################################
84 #
85 #             Libraries to link binaries against
86 #            Libraries will be linked againstSHLIB
87 LIBS := $(ROOTLIBS) $(SYSLIBS) $(GLIBS)
88 #############################################################
89
90
91 # default target
92 default:     alilibs  aliroot
93
94
95 #############################################################
96 #
97 #            Each module will add to this
98
99 ALLLIBS :=
100 ALLEXECS :=
101 INCLUDEFILES :=
102 BINLIBS := 
103 EXPORTFILES := 
104 #############################################################
105
106 BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH)
107
108 .PHONY:         alilibs aliroot makedistr headers
109
110 #Dependencies of module.mk files
111
112 include build/module.dep
113
114 #############################################################
115
116 #        Check if module.mk is present for the library
117 %.mk:
118         @echo "***** Creating $@ file *****";
119         @share/alibtool mkmodule  $(patsubst %/module.mk,%,$@) > $@;
120 #############################################################
121
122 # **************************************************************************
123 #
124 #               If cleaning, do not include 
125 #             dependencies or module.mk files.
126
127 ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
128
129 #            If makeing modules, not not include
130 #                       anything
131
132 ifneq ($(findstring modules,$(MAKECMDGOALS)),modules)
133
134
135 #############################################################
136
137 #                Include the modules
138 include $(patsubst %,%/module.mk,$(MODULES))
139 #############################################################
140
141 #############################################################
142 #
143 #          include dependencies if not making them!
144 ifneq ($(MAKECMDGOALS),depend)
145 include $(INCLUDEFILES)
146 endif
147 #############################################################
148
149 endif
150 endif
151 # **************************************************************************
152
153
154 # targets
155
156 modules: $(patsubst %,%/module.mk,$(MODULES))   
157
158 aliroot: $(BINPATH) $(ALLEXECS) alilibs bin headers
159
160 headers: $(EXPORTFILES)
161
162 alilibs: $(LIBPATH) $(ALLLIBS) lib headers modules
163
164 # Single Makefile "distribution": Makefile + modules + mkdepend scripts
165 makedistr: $(MODULES)    
166          tar -cvf MakeDistr.tar $(patsubst %,%/*.pkg,$(MODULES)) \
167                 Makefile create build/* 
168
169 all: aliroot
170
171 depend: $(INCLUDEFILES) 
172
173 debug:
174         @echo "***** Entering DEBUG mode. *****"
175         @(export ALIDEBUG=YES && $(MAKE) -f Makefile.flat )
176 lib: 
177         @mkdir lib
178         @mkdir lib/tgt_$(ALICE_TARGET)
179
180 bin: 
181         @mkdir bin
182         @mkdir bin/tgt_$(ALICE_TARGET)
183
184 $(MODULES):
185         @echo "***** Making $@ *****"
186         mkdir -p $@
187
188 $(BINPATH):
189         @echo "***** Making $@ *****"
190         mkdir -p $@
191
192 $(LIBPATH):
193         @echo "***** Making $@ *****"
194         mkdir -p $@
195
196
197 cleanall: clean-modules
198         @echo "***** Cleaning up everything ****"
199         rm -rf $(patsubst %,%/module.mk,$(MODULES)) 
200         rm -rf $(patsubst %,%/tgt_$(ALICE_TARGET),$(MODULES))
201         rm -rf lib/tgt_$(ALICE_TARGET)
202         rm -rf bin/tgt_$(ALICE_TARGET)
203         rm -rf $(EXPORTDIR)
204
205 clean: clean-modules  clean-objects clean-libs clean-bins clean-ditcs
206
207 clean-dicts:
208         @echo "***** Cleaning up G__ files *****"
209         rm -rf */tgt_$(ALICE_TARGET)/G__*
210 clean-modules:
211         @echo "***** Cleaning up module.mk files *****"
212         rm -rf $(patsubst %,%/module.mk,$(MODULES)) 
213
214 clean-depend:
215         @echo "***** Cleaning up dependencies *****"
216         rm -rf */tgt_$(ALICE_TARGET)/*.d
217         rm -rf */tgt_$(ALICE_TARGET)/*/*.d
218         rm -rf */tgt_$(ALICE_TARGET)/*/*/*.d
219         rm -rf */tgt_$(ALICE_TARGET)/*/*/*/*.d
220
221 clean-objects:
222         @echo "***** Cleaning up .o files *****"
223         rm -rf */tgt_$(ALICE_TARGET)/*.o
224         rm -rf */tgt_$(ALICE_TARGET)/*/*.o
225         rm -rf */tgt_$(ALICE_TARGET)/*/*/*.o
226         rm -rf */tgt_$(ALICE_TARGET)/*/*/*/*.o
227
228 clean-libs:
229         @echo "***** Cleaning up library files *****"
230         rm -rf lib/tgt_$(ALICE_TARGET)/*
231
232 clean-bins:
233         @echo "***** Cleaning up binary files *****"
234         rm -rf bin/tgt_$(ALICE_TARGET)
235
236
237
238
239
240
241