Moved system applications
[reactos.git] / reactos / Makefile
1 #
2 # Global makefile
3 #
4
5 #
6 # Select your host
7 #
8 #HOST = mingw32-linux
9 #HOST = mingw32-windows
10
11 include rules.mak
12
13 #
14 # Required to run the system
15 #
16 COMPONENTS = iface_native iface_additional ntoskrnl
17 DLLS = ntdll kernel32 crtdll advapi32 fmifs gdi32 secur32 user32 ws2_32
18 SUBSYS = smss win32k csrss
19
20 #
21 # Select the server(s) you want to build
22 #
23 SERVERS = win32
24 # SERVERS = posix linux os2
25
26 #
27 # Select the loader(s) you want to build
28 #
29 LOADERS = dos
30 # LOADERS = boot
31
32 #
33 # Select the device drivers and filesystems you want
34 #
35 DEVICE_DRIVERS = vidport vga blue ide null floppy
36 # DEVICE_DRIVERS = beep event floppy ide_test mouse sound test test1 parallel serial
37
38 INPUT_DRIVERS = keyboard
39
40 FS_DRIVERS = vfat
41 # FS_DRIVERS = minix ext2 template
42
43 # ndis tdi tcpip tditest wshtcpip
44 NET_DRIVERS = ndis tcpip tditest wshtcpip
45
46 # ne2000
47 NET_DEVICE_DRIVERS = ne2000
48
49 #
50 # system applications (required for startup)
51 #
52 SYS_APPS = shell winlogon services
53
54 APPS = args hello test cat bench apc shm lpc thread event file gditest \
55 pteb consume dump_shared_data vmtest regtest
56 # objdir
57
58 # ping
59 NET_APPS = ping
60
61
62 KERNEL_SERVICES = $(DEVICE_DRIVERS) $(INPUT_DRIVERS) $(FS_DRIVERS) $(NET_DRIVERS) $(NET_DEVICE_DRIVERS)
63
64 all: buildno $(COMPONENTS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(SYS_APPS) $(APPS) $(NET_APPS)
65
66 .PHONY: all
67
68 clean: buildno_clean $(COMPONENTS:%=%_clean) $(DLLS:%=%_clean) $(LOADERS:%=%_clean) \
69 $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) $(SYS_APPS:%=%_clean) $(APPS:%=%_clean)
70
71 .PHONY: clean
72
73 ifeq ($(HOST),mingw32-linux)
74 rcopy$(EXE_POSTFIX): rcopy.c
75 $(HOST_CC) -g -DUNIX_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
76 endif
77 ifeq ($(HOST),mingw32-windows)
78 rcopy$(EXE_POSTFIX): rcopy.c
79 $(HOST_CC) -g -DDOS_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
80 endif
81
82 ifeq ($(HOST),mingw32-linux)
83 rmkdir$(EXE_POSTFIX): rmkdir.c
84 $(HOST_CC) -g -DUNIX_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
85 endif
86 ifeq ($(HOST),mingw32-windows)
87 rmkdir$(EXE_POSTFIX): rmkdir.c
88 $(HOST_CC) -g -DDOS_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
89 endif
90
91
92 install: rcopy$(EXE_POSTFIX) rmkdir$(EXE_POSTFIX) make_install_dirs autoexec_install $(COMPONENTS:%=%_install) \
93 $(DLLS:%=%_install) $(LOADERS:%=%_install) \
94 $(KERNEL_SERVICES:%=%_install) $(SUBSYS:%=%_install) \
95 $(SYS_APPS:%=%_install) $(APPS:%=%_install)
96
97 dist: rcopy$(EXE_POSTFIX) clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) $(DLLS:%=%_dist) \
98 $(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \
99 $(SYS_APPS:%=%_dist) $(APPS:%=%_dist)
100
101 #
102 # Build number generator
103 #
104 buildno: include/reactos/version.h
105 make -C apps/buildno
106
107 buildno_clean:
108 make -C apps/buildno clean
109
110 buildno_dist:
111
112 buildno_install:
113
114 .PHONY: buildno buildno_clean buildno_dist buildno_install
115
116 #
117 # System Applications
118 #
119 $(SYS_APPS): %:
120 make -C apps/system/$*
121
122 $(SYS_APPS:%=%_clean): %_clean:
123 make -C apps/system/$* clean
124
125 $(SYS_APPS:%=%_dist): %_dist:
126 make -C apps/system/$* dist
127
128 $(SYS_APPS:%=%_install): %_install:
129 make -C apps/system/$* install
130
131 .PHONY: $(SYS_APPS) $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_dist)
132
133 #
134 # Applications
135 #
136 $(APPS): %:
137 make -C apps/$*
138
139 $(APPS:%=%_clean): %_clean:
140 make -C apps/$* clean
141
142 $(APPS:%=%_dist): %_dist:
143 make -C apps/$* dist
144
145 $(APPS:%=%_install): %_install:
146 make -C apps/$* install
147
148 .PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_install) $(APPS:%=%_dist)
149
150 #
151 # Network applications
152 #
153 $(NET_APPS): %:
154 make -C apps/net/$*
155
156 $(NET_APPS:%=%_clean): %_clean:
157 make -C apps/net/$* clean
158
159 $(NET_APPS:%=%_dist): %_dist:
160 make -C apps/net/$* dist
161
162 $(NET_APPS:%=%_install): %_install:
163 make -C apps/net/$* install
164
165 .PHONY: $(NET_APPS) $(NET_APPS:%=%_clean) $(NET_APPS:%=%_install) $(NET_APPS:%=%_dist)
166
167 #
168 # Interfaces
169 #
170 iface_native:
171 make -C iface/native
172
173 iface_native_clean:
174 make -C iface/native clean
175
176 iface_native_install:
177
178 iface_native_dist:
179
180 iface_additional:
181 make -C iface/addsys
182
183 iface_additional_clean:
184 make -C iface/addsys clean
185
186 iface_additional_install:
187
188 iface_additional_dist:
189
190 .PHONY: iface_native iface_native_clean iface_native_install \
191 iface_native_dist \
192 iface_additional iface_additional_clean iface_additional_install \
193 iface_additional_dist
194
195 #
196 # Device driver rules
197 #
198 $(DEVICE_DRIVERS): %:
199 make -C services/dd/$*
200
201 $(DEVICE_DRIVERS:%=%_clean): %_clean:
202 make -C services/dd/$* clean
203
204 $(DEVICE_DRIVERS:%=%_install): %_install:
205 make -C services/dd/$* install
206
207 $(DEVICE_DRIVERS:%=%_dist): %_dist:
208 make -C services/dd/$* dist
209
210 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
211 $(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_dist)
212
213 #
214 # Input driver rules
215 #
216 $(INPUT_DRIVERS): %:
217 make -C services/input/$*
218
219 $(INPUT_DRIVERS:%=%_clean): %_clean:
220 make -C services/input/$* clean
221
222 $(INPUT_DRIVERS:%=%_install): %_install:
223 make -C services/input/$* install
224
225 $(INPUT_DRIVERS:%=%_dist): %_dist:
226 make -C services/input/$* dist
227
228 .PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_clean) \
229 $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_dist)
230
231 $(FS_DRIVERS): %:
232 make -C services/fs/$*
233
234 $(FS_DRIVERS:%=%_clean): %_clean:
235 make -C services/fs/$* clean
236
237 $(FS_DRIVERS:%=%_install): %_install:
238 make -C services/fs/$* install
239
240 $(FS_DRIVERS:%=%_dist): %_dist:
241 make -C services/fs/$* dist
242
243 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_install) \
244 $(FS_DRIVERS:%=%_dist)
245
246 $(NET_DRIVERS): %:
247 make -C services/net/$*
248
249 $(NET_DRIVERS:%=%_clean): %_clean:
250 make -C services/net/$* clean
251
252 $(NET_DRIVERS:%=%_install): %_install:
253 make -C services/net/$* install
254
255 $(NET_DRIVERS:%=%_dist): %_dist:
256 make -C services/net/$* dist
257
258 .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_clean) $(NET_DRIVERS:%=%_install) \
259 $(NET_DRIVERS:%=%_dist)
260
261 $(NET_DEVICE_DRIVERS): %:
262 make -C services/net/dd/$*
263
264 $(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
265 make -C services/net/dd/$* clean
266
267 $(NET_DEVICE_DRIVERS:%=%_install): %_install:
268 make -C services/net/dd/$* install
269
270 $(NET_DEVICE_DRIVERS:%=%_dist): %_dist:
271 make -C services/net/dd/$* dist
272
273 .PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) \
274 $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_dist)
275
276 #
277 # Kernel loaders
278 #
279
280 $(LOADERS): %:
281 make -C loaders/$*
282
283 $(LOADERS:%=%_clean): %_clean:
284 make -C loaders/$* clean
285
286 $(LOADERS:%=%_install): %_install:
287 make -C loaders/$* install
288
289 $(LOADERS:%=%_dist): %_dist:
290 make -C loaders/$* dist
291
292 .PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_install) \
293 $(LOADERS:%=%_dist)
294
295 #
296 # Required system components
297 #
298
299 ntoskrnl:
300 make -C ntoskrnl
301
302 ntoskrnl_clean:
303 make -C ntoskrnl clean
304
305 ntoskrnl_install:
306 make -C ntoskrnl install
307
308 ntoskrnl_dist:
309 make -C ntoskrnl dist
310
311 .PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
312
313 #
314 # Required DLLs
315 #
316
317 $(DLLS): %:
318 make -C lib/$*
319
320 $(DLLS:%=%_clean): %_clean:
321 make -C lib/$* clean
322
323 $(DLLS:%=%_install): %_install:
324 make -C lib/$* install
325
326 $(DLLS:%=%_dist): %_dist:
327 make -C lib/$* dist
328
329 .PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_install) $(DLLS:%=%_dist)
330
331 #
332 # Kernel Subsystems
333 #
334
335 $(SUBSYS): %:
336 make -C subsys/$*
337
338 $(SUBSYS:%=%_clean): %_clean:
339 make -C subsys/$* clean
340
341 $(SUBSYS:%=%_install): %_install:
342 make -C subsys/$* install
343
344 $(SUBSYS:%=%_dist): %_dist:
345 make -C subsys/$* dist
346
347 .PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
348 $(SUBSYS:%=%_dist)
349
350 #
351 # Make an install floppy
352 #
353 make_install_dirs:
354 ./rmkdir $(FLOPPY_DIR)/dlls
355 ./rmkdir $(FLOPPY_DIR)/apps
356 ./rmkdir $(FLOPPY_DIR)/drivers
357 ./rmkdir $(FLOPPY_DIR)/subsys
358
359
360 .PHONY: make_install_dirs
361
362 autoexec_install: $(FLOPPY_DIR)/autoexec.bat
363
364 $(FLOPPY_DIR)/autoexec.bat: bootflop.bat
365 $(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat
366
367 #
368 # Make a distribution saveset
369 #
370
371 clean_dist_dir:
372 ifeq ($(DOSCLI),yes)
373 - $(RM) $(DIST_DIR)\dlls\*.dll
374 - $(RM) $(DIST_DIR)\apps\*.exe
375 - $(RM) $(DIST_DIR)\drivers\*.sys
376 - $(RM) $(DIST_DIR)\subsys\*.exe
377 - $(RMDIR) $(DIST_DIR)\dlls
378 - $(RMDIR) $(DIST_DIR)\apps
379 - $(RMDIR) $(DIST_DIR)\drivers
380 - $(RMDIR) $(DIST_DIR)\subsys
381 - $(RMDIR) $(DIST_DIR)
382 else
383 $(RM) -r $(DIST_DIR)
384 endif
385
386 make_dist_dirs: ./rmkdir
387 ./rmkdir $(DIST_DIR)
388 ./rmkdir $(DIST_DIR)/dlls
389 ./rmkdir $(DIST_DIR)/apps
390 ./rmkdir $(DIST_DIR)/drivers
391 ./rmkdir $(DIST_DIR)/dlls
392 ./rmkdir $(DIST_DIR)/subsys
393
394 .PHONY: clean_dist_dir make_dist_dirs
395
396 #
397 #
398 #
399 etags:
400 find . -name "*.[ch]" -print | etags --language=c -
401
402 # EOF