New nonrecursive makefiles
[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 # Where to install libraries and binaries
13 LIBPATH=lib/tgt_$(ALICE_TARGET)
14 BINPATH=bin/tgt_$(ALICE_TARGET)
15
16 ##### include machine dependent macros #####
17
18 #include $(filter-out DEBUG,build/Makefile.$(ALICE_TARGET))
19 include build/Makefile.$(ALICE_TARGET)
20
21 # Check if called with debug
22 ifeq ($(ALIDEBUG),YES)
23 override ALICE_TARGET:=$(ALICE_TARGET)DEBUG
24 FFLAGS := -g $(filter-out -O%,$(FFLAGS))
25 CXXFLAGS := -g $(filter-out -O%,$(CXXLAGS))
26 CFLAGS := -g $(filter-out -O%,$(CLAGS))
27 endif
28
29
30 ##### Modules to build #####
31
32 #needs to add:  VZERO TGeant4 AliGeant4 GEODB Euclid  
33 #
34
35 MODULES:=STEER TPC PMD CONTAINERS ZDC STRUCT RALICE EMCAL \
36         ALIFAST CASTOR FMD START TGeant3 EVGEN THijing TMEVSIM \
37          MEVSIM PDF PYTHIA PYTHIA6  TRD GEANT321 MINICERN TOF \
38         ITS RICH PHOS MUON HIJING LHC HBTP THbtp
39
40 MODULES += ALIROOT 
41
42 MODDIRS := MODULES
43                  
44 # look for include files in each of the moduled
45 CXXFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
46 CXXFLAGS += $(patsubst %,-I$(ALICE_ROOT)/%,$(MODULES))
47 CXXFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
48
49 FFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
50 FFLAGS += $(patsubst %,-I$(ALICE_ROOT)/%,$(MODULES))
51 FFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
52
53 CINTFLAGS += $(patsubst %,-I%,$(ALICE_ROOT))
54 CINTFLAGS += $(patsubst %,-I$(ALICE_ROOT)/%,$(MODULES))
55 CINTFLAGS += $(patsubst %,-I%,$(ROOTSYS)/include)
56
57 DEPINC += $(patsubst %,-I%,$(ALICE_ROOT))
58 DEPINC += $(patsubst %,-I$(ALICE_ROOT)/%,$(MODULES))
59 DEPINC += $(patsubst %,-I%,$(ROOTSYS)/include)
60
61
62 LIBS := $(ROOTLIBS) $(SYSLIBS) $(GLIBS)
63
64
65 # default target
66 default:     alilibs  aliroot
67
68 # each module must add to this
69 ALLLIBS :=
70 ALLEXECS :=
71 INCLUDEFILES :=
72 BINLIBS := 
73
74
75 BINLIBDIRS := -L$(ALICE_ROOT)/$(LIBPATH)
76
77 .PHONY:         alilibs aliroot makedistr 
78
79 #Dependencies of module.mk files
80
81 include build/module.dep
82
83 # Check if module.mk is present for the library
84 %.mk:
85         @echo "***** Creating $@ file *****";
86         share/alibtool mkmodule  $(patsubst %/module.mk,%,$@) > $@;
87
88 # If cleaning, do not include dependencies or module.mk files.
89 ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
90
91 # description of each module
92 include $(patsubst %,%/module.mk,$(MODULES))
93
94 # include dependencies if not making them!
95 ifneq ($(MAKECMDGOALS),depend)
96 include $(INCLUDEFILES)
97 endif
98
99 endif
100
101 # targets
102
103 aliroot: $(BINPATH) $(ALLEXECS) bin
104
105
106 alilibs: $(LIBPATH) $(ALLLIBS) lib
107
108 # Single Makefile "distribution": Makefile + modules + mkdepend scripts
109 makedistr: $(MODULES)    
110          tar -cvf MakeDistr.tar $(patsubst %,%/*.pkg,$(MODULES)) \
111                 Makefile create build/* 
112
113 all: aliroot
114
115 depend: $(INCLUDEFILES)
116
117 debug:
118         @echo "***** Entering DEBUG mode. *****"
119         @(export ALIDEBUG=YES && $(MAKE) -f Makefile.flat )
120 lib: 
121         @mkdir lib
122         @mkdir lib/tgt_$(ALICE_TARGET)
123
124 bin: 
125         @mkdir bin
126         @mkdir bin/tgt_$(ALICE_TARGET)
127
128 $(MODULES):
129         @echo "***** Making $@ *****"
130         mkdir -p $@
131
132 $(BINPATH):
133         @echo "***** Making $@ *****"
134         mkdir -p $@
135
136 $(LIBPATH):
137         @echo "***** Making $@ *****"
138         mkdir -p $@
139
140
141 cleanall:
142         @echo "***** Cleaning up everything ****"
143         rm -rf $(patsubst %,%/module.mk,$(MODULES)) 
144         rm -rf $(patsubst %,%/tgt_$(ALICE_TARGET),$(MODULES))
145         rm -rf lib/tgt_$(ALICE_TARGET)
146         rm -rf bin/tgt_$(ALICE_TARGET)
147
148 clean: clean-modules clean-depend clean-objects clean-libs clean-bins
149
150 clean-modules:
151         @echo "***** Cleaning up module.mk files *****"
152         rm -rf $(patsubst %,%/module.mk,$(MODULES)) 
153
154 clean-depend:
155         @echo "***** Cleaning up dependencies *****"
156         rm -rf */tgt_$(ALICE_TARGET)/*.d
157         rm -rf */tgt_$(ALICE_TARGET)/*/*.d
158         rm -rf */tgt_$(ALICE_TARGET)/*/*/*.d
159         rm -rf */tgt_$(ALICE_TARGET)/*/*/*/*.d
160
161 clean-objects:
162         @echo "***** Cleaning up .o files *****"
163         rm -rf */tgt_$(ALICE_TARGET)/*.o
164         rm -rf */tgt_$(ALICE_TARGET)/*/*.o
165         rm -rf */tgt_$(ALICE_TARGET)/*/*/*.o
166         rm -rf */tgt_$(ALICE_TARGET)/*/*/*/*.o
167
168 clean-libs:
169         @echo "***** Cleaning up library files *****"
170         rm -rf lib/tgt_$(ALICE_TARGET)/*
171
172 clean-bins:
173         @echo "***** Cleaning up binary files *****"
174         rm -rf bin/tgt_$(ALICE_TARGET)
175
176
177
178
179
180
181