]>
Commit | Line | Data |
---|---|---|
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 |