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