Added CVS Id.
[reactos.git] / reactos / Makefile
1 #
2 # Global makefile
3 #
4
5 PATH_TO_TOP = .
6
7 include $(PATH_TO_TOP)/rules.mak
8
9 #
10 # Required to run the system
11 #
12 COMPONENTS = iface_native iface_additional hallib ntoskrnl
13 HALS = halx86
14 BUS = acpi isapnp
15 DLLS = ntdll kernel32 advapi32 crtdll msvcrt fmifs gdi32 msafd \
16 user32 oleaut32 secur32 shell32 ws2_32 version
17 SUBSYS = smss win32k csrss
18
19 #
20 # Select the server(s) you want to build
21 #
22 #SERVERS = posix linux os2
23 SERVERS = win32
24
25 #
26 # Select the loader(s) you want to build
27 #
28 #LOADERS = boot dos
29 LOADERS = dos
30
31 #
32 # Select the device drivers and filesystems you want
33 #
34 #DEVICE_DRIVERS = beep floppy mouse sound test parallel serial
35 DEVICE_DRIVERS = vidport vga blue ide null floppy
36
37 #INPUT_DRIVERS = keyboard
38 INPUT_DRIVERS = keyboard mouclass psaux
39
40 #FS_DRIVERS = vfat minix ext2 template
41 FS_DRIVERS = vfat ms np
42
43 #NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
44 NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
45
46 #NET_DEVICE_DRIVERS = ne2000
47 NET_DEVICE_DRIVERS = ne2000
48
49 #
50 # storage drivers (don't change the order)
51 #
52 STORAGE_DRIVERS = class2 scsiport disk
53
54 #
55 # system applications (required for startup)
56 #
57 #SYS_APPS = lsass services shell winlogon
58 SYS_APPS = services shell winlogon
59
60 APPS = args hello test cat bench apc shm lpc thread event file gditest \
61 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
62 objdir atomtest winhello partinfo
63
64 #NET_APPS = ping roshttpd telnet
65 NET_APPS = ping roshttpd
66
67
68 KERNEL_SERVICES = $(DEVICE_DRIVERS) $(INPUT_DRIVERS) $(FS_DRIVERS) \
69 $(NET_DRIVERS) $(NET_DEVICE_DRIVERS) $(STORAGE_DRIVERS)
70
71 all: tools dk $(COMPONENTS) $(HALS) $(BUS) $(DLLS) $(SUBSYS) \
72 $(LOADERS) $(KERNEL_SERVICES) $(SYS_APPS) $(APPS) $(NET_APPS)
73
74 clean: dk_clean $(HALS:%=%_clean) \
75 $(COMPONENTS:%=%_clean) $(BUS:%=%_clean) $(DLLS:%=%_clean) \
76 $(LOADERS:%=%_clean) $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) \
77 $(SYS_APPS:%=%_clean) $(APPS:%=%_clean) $(NET_APPS:%=%_clean) clean_after tools_clean
78
79 clean_after:
80 $(RM) $(PATH_TO_TOP)/include/roscfg.h
81
82 install: tools install_dirs install_before \
83 $(COMPONENTS:%=%_install) $(HALS:%=%_install) $(BUS:%=%_install) \
84 $(DLLS:%=%_install) $(LOADERS:%=%_install) \
85 $(KERNEL_SERVICES:%=%_install) $(SUBSYS:%=%_install) \
86 $(SYS_APPS:%=%_install) $(APPS:%=%_install)
87
88 dist: $(TOOLS_PATH)/rcopy$(EXE_POSTFIX) dist_clean dist_dirs \
89 $(HALS:%=%_dist) $(COMPONENTS:%=%_dist) $(BUS:%=%_dist) $(DLLS:%=%_dist) \
90 $(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \
91 $(SYS_APPS:%=%_dist) $(APPS:%=%_dist) $(NET_APPS:%=%_dist)
92
93 .PHONY: all clean clean_before install dist
94
95 #
96 # System Applications
97 #
98 $(SYS_APPS): %:
99 make -C apps/system/$*
100
101 $(SYS_APPS:%=%_clean): %_clean:
102 make -C apps/system/$* clean
103
104 $(SYS_APPS:%=%_dist): %_dist:
105 make -C apps/system/$* dist
106
107 $(SYS_APPS:%=%_install): %_install:
108 make -C apps/system/$* install
109
110 .PHONY: $(SYS_APPS) $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_dist)
111
112 #
113 # Applications
114 #
115 $(APPS): %:
116 make -C apps/$*
117
118 $(APPS:%=%_clean): %_clean:
119 make -C apps/$* clean
120
121 $(APPS:%=%_dist): %_dist:
122 make -C apps/$* dist
123
124 $(APPS:%=%_install): %_install:
125 make -C apps/$* install
126
127 .PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_install) $(APPS:%=%_dist)
128
129 #
130 # Network applications
131 #
132 $(NET_APPS): %:
133 make -C apps/net/$*
134
135 $(NET_APPS:%=%_clean): %_clean:
136 make -C apps/net/$* clean
137
138 $(NET_APPS:%=%_dist): %_dist:
139 make -C apps/net/$* dist
140
141 $(NET_APPS:%=%_install): %_install:
142 make -C apps/net/$* install
143
144 .PHONY: $(NET_APPS) $(NET_APPS:%=%_clean) $(NET_APPS:%=%_install) $(NET_APPS:%=%_dist)
145
146
147 #
148 # Tools
149 #
150 tools:
151 make -C tools
152
153 tools_clean:
154 make -C tools clean
155
156 tools_install:
157
158 tools_dist:
159
160 .PHONY: tools tools_clean tools_install tools_dist
161
162
163 #
164 # Developer Kits
165 #
166 dk:
167 $(RMKDIR) $(DK_PATH)
168 $(RMKDIR) $(DDK_PATH)
169 $(RMKDIR) $(DDK_PATH_LIB)
170 $(RMKDIR) $(DDK_PATH_INC)
171 $(RMKDIR) $(SDK_PATH)
172 $(RMKDIR) $(SDK_PATH_LIB)
173 $(RMKDIR) $(SDK_PATH_INC)
174 $(RMKDIR) $(XDK_PATH)
175 $(RMKDIR) $(XDK_PATH_LIB)
176 $(RMKDIR) $(XDK_PATH_INC)
177
178 # WARNING! Be very sure that there are no important files
179 # in these directories before cleaning them!!!
180 dk_clean:
181 $(RM) $(DDK_PATH_LIB)/*.a
182 # $(RM) $(DDK_PATH_INC)/*.h
183 $(RMDIR) $(DDK_PATH_LIB)
184 # $(RMDIR) $(DDK_PATH_INC)
185 $(RM) $(SDK_PATH_LIB)/*.a
186 # $(RM) $(SDK_PATH_INC)/*.h
187 $(RMDIR) $(SDK_PATH_LIB)
188 # $(RMDIR) $(SDK_PATH_INC)
189 $(RM) $(XDK_PATH_LIB)/*.a
190 # $(RM) $(XDK_PATH_INC)/*.h
191 $(RMDIR) $(XDK_PATH_LIB)
192 # $(RMDIR) $(XDK_PATH_INC)
193
194 dk_install:
195
196 dk_dist:
197
198 .PHONY: dk dk_clean dk_install dk_dist
199
200
201 #
202 # Interfaces
203 #
204 iface_native:
205 make -C iface/native
206
207 iface_native_clean:
208 make -C iface/native clean
209
210 iface_native_install:
211
212 iface_native_dist:
213
214 iface_additional:
215 make -C iface/addsys
216
217 iface_additional_clean:
218 make -C iface/addsys clean
219
220 iface_additional_install:
221
222 iface_additional_dist:
223
224 .PHONY: iface_native iface_native_clean iface_native_install \
225 iface_native_dist \
226 iface_additional iface_additional_clean iface_additional_install \
227 iface_additional_dist
228
229 #
230 # Bus driver rules
231 #
232 $(BUS): %:
233 make -C services/bus/$*
234
235 $(BUS:%=%_clean): %_clean:
236 make -C services/bus/$* clean
237
238 $(BUS:%=%_install): %_install:
239 make -C services/bus/$* install
240
241 $(BUS:%=%_dist): %_dist:
242 make -C services/bus/$* dist
243
244 .PHONY: $(BUS) $(BUS:%=%_clean) \
245 $(BUS:%=%_install) $(BUS:%=%_dist)
246
247 #
248 # Device driver rules
249 #
250 $(DEVICE_DRIVERS): %:
251 make -C services/dd/$*
252
253 $(DEVICE_DRIVERS:%=%_clean): %_clean:
254 make -C services/dd/$* clean
255
256 $(DEVICE_DRIVERS:%=%_install): %_install:
257 make -C services/dd/$* install
258
259 $(DEVICE_DRIVERS:%=%_dist): %_dist:
260 make -C services/dd/$* dist
261
262 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
263 $(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_dist)
264
265 #
266 # Input driver rules
267 #
268 $(INPUT_DRIVERS): %:
269 make -C services/input/$*
270
271 $(INPUT_DRIVERS:%=%_clean): %_clean:
272 make -C services/input/$* clean
273
274 $(INPUT_DRIVERS:%=%_install): %_install:
275 make -C services/input/$* install
276
277 $(INPUT_DRIVERS:%=%_dist): %_dist:
278 make -C services/input/$* dist
279
280 .PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_clean) \
281 $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_dist)
282
283 $(FS_DRIVERS): %:
284 make -C services/fs/$*
285
286 $(FS_DRIVERS:%=%_clean): %_clean:
287 make -C services/fs/$* clean
288
289 $(FS_DRIVERS:%=%_install): %_install:
290 make -C services/fs/$* install
291
292 $(FS_DRIVERS:%=%_dist): %_dist:
293 make -C services/fs/$* dist
294
295 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) \
296 $(FS_DRIVERS:%=%_install) $(FS_DRIVERS:%=%_dist)
297
298 #
299 # Network driver rules
300 #
301 $(NET_DRIVERS): %:
302 make -C services/net/$*
303
304 $(NET_DRIVERS:%=%_clean): %_clean:
305 make -C services/net/$* clean
306
307 $(NET_DRIVERS:%=%_install): %_install:
308 make -C services/net/$* install
309
310 $(NET_DRIVERS:%=%_dist): %_dist:
311 make -C services/net/$* dist
312
313 .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_clean) \
314 $(NET_DRIVERS:%=%_install) $(NET_DRIVERS:%=%_dist)
315
316 $(NET_DEVICE_DRIVERS): %:
317 make -C services/net/dd/$*
318
319 $(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
320 make -C services/net/dd/$* clean
321
322 $(NET_DEVICE_DRIVERS:%=%_install): %_install:
323 make -C services/net/dd/$* install
324
325 $(NET_DEVICE_DRIVERS:%=%_dist): %_dist:
326 make -C services/net/dd/$* dist
327
328 .PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) \
329 $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_dist)
330
331 #
332 # storage driver rules
333 #
334 $(STORAGE_DRIVERS): %:
335 make -C services/storage/$*
336
337 $(STORAGE_DRIVERS:%=%_clean): %_clean:
338 make -C services/storage/$* clean
339
340 $(STORAGE_DRIVERS:%=%_install): %_install:
341 make -C services/storage/$* install
342
343 $(STORAGE_DRIVERS:%=%_dist): %_dist:
344 make -C services/storage/$* dist
345
346 .PHONY: $(STORAGE_DRIVERS) $(STORAGE_DRIVERS:%=%_clean) \
347 $(STORAGE_DRIVERS:%=%_install) $(STORAGE_DRIVERS:%=%_dist)
348
349 #
350 # Kernel loaders
351 #
352
353 $(LOADERS): %:
354 make -C loaders/$*
355
356 $(LOADERS:%=%_clean): %_clean:
357 make -C loaders/$* clean
358
359 $(LOADERS:%=%_install): %_install:
360 make -C loaders/$* install
361
362 $(LOADERS:%=%_dist): %_dist:
363 make -C loaders/$* dist
364
365 .PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_install) \
366 $(LOADERS:%=%_dist)
367
368 #
369 # Required system components
370 #
371
372 ntoskrnl:
373 make -C ntoskrnl
374
375 ntoskrnl_clean:
376 make -C ntoskrnl clean
377
378 ntoskrnl_install:
379 make -C ntoskrnl install
380
381 ntoskrnl_dist:
382 make -C ntoskrnl dist
383
384 .PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
385
386 #
387 # Hardware Abstraction Layer import library
388 #
389
390 hallib:
391 make -C hal/hal
392
393 hallib_clean:
394 make -C hal/hal clean
395
396 hallib_install:
397 make -C hal/hal install
398
399 hallib_dist:
400 make -C hal/hal dist
401
402 .PHONY: hallib hallib_clean hallib_install hallib_dist
403
404 #
405 # Hardware Abstraction Layers
406 #
407
408 $(HALS): %:
409 make -C hal/$*
410
411 $(HALS:%=%_clean): %_clean:
412 make -C hal/$* clean
413
414 $(HALS:%=%_install): %_install:
415 make -C hal/$* install
416
417 $(HALS:%=%_dist): %_dist:
418 make -C hal/$* dist
419
420 .PHONY: $(HALS) $(HALS:%=%_clean) $(HALS:%=%_install) $(HALS:%=%_dist)
421
422 #
423 # Required DLLs
424 #
425
426 $(DLLS): %:
427 make -C lib/$*
428
429 $(DLLS:%=%_clean): %_clean:
430 make -C lib/$* clean
431
432 $(DLLS:%=%_install): %_install:
433 make -C lib/$* install
434
435 $(DLLS:%=%_dist): %_dist:
436 make -C lib/$* dist
437
438 .PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_install) $(DLLS:%=%_dist)
439
440 #
441 # Kernel Subsystems
442 #
443
444 $(SUBSYS): %:
445 make -C subsys/$*
446
447 $(SUBSYS:%=%_clean): %_clean:
448 make -C subsys/$* clean
449
450 $(SUBSYS:%=%_install): %_install:
451 make -C subsys/$* install
452
453 $(SUBSYS:%=%_dist): %_dist:
454 make -C subsys/$* dist
455
456 .PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
457 $(SUBSYS:%=%_dist)
458
459 #
460 # Create an installation
461 #
462
463 install_clean:
464 $(RM) $(INSTALL_DIR)/system32/drivers/*.*
465 $(RM) $(INSTALL_DIR)/system32/config/*.*
466 $(RM) $(INSTALL_DIR)/system32/*.*
467 $(RM) $(INSTALL_DIR)/symbols/*.*
468 $(RM) $(INSTALL_DIR)/media/fonts/*.*
469 $(RM) $(INSTALL_DIR)/media/*.*
470 $(RM) $(INSTALL_DIR)/bin/*.*
471 $(RM) $(INSTALL_DIR)/*.com
472 $(RM) $(INSTALL_DIR)/*.bat
473 $(RMDIR) $(INSTALL_DIR)/system32/drivers
474 $(RMDIR) $(INSTALL_DIR)/system32/config
475 $(RMDIR) $(INSTALL_DIR)/system32
476 $(RMDIR) $(INSTALL_DIR)/symbols
477 $(RMDIR) $(INSTALL_DIR)/media/fonts
478 $(RMDIR) $(INSTALL_DIR)/media
479 $(RMDIR) $(INSTALL_DIR)/bin
480 $(RMDIR) $(INSTALL_DIR)
481
482 install_dirs:
483 $(RMKDIR) $(INSTALL_DIR)
484 $(RMKDIR) $(INSTALL_DIR)/bin
485 $(RMKDIR) $(INSTALL_DIR)/media
486 $(RMKDIR) $(INSTALL_DIR)/media/fonts
487 $(RMKDIR) $(INSTALL_DIR)/symbols
488 $(RMKDIR) $(INSTALL_DIR)/system32
489 $(RMKDIR) $(INSTALL_DIR)/system32/config
490 $(RMKDIR) $(INSTALL_DIR)/system32/drivers
491
492 install_before:
493 $(CP) boot.bat $(INSTALL_DIR)/boot.bat
494 $(CP) aboot.bat $(INSTALL_DIR)/aboot.bat
495 $(CP) boot.hiv $(INSTALL_DIR)/system32/boot.hiv
496 $(CP) media/fonts/helb____.ttf $(INSTALL_DIR)/media/fonts/helb____.ttf
497 $(CP) media/fonts/timr____.ttf $(INSTALL_DIR)/media/fonts/timr____.ttf
498
499 .PHONY: install_clean install_dirs install_before
500
501
502 #
503 # Make a distribution saveset
504 #
505
506 dist_clean:
507 $(RM) $(DIST_DIR)/symbols/*.sym
508 $(RM) $(DIST_DIR)/drivers/*.sys
509 $(RM) $(DIST_DIR)/subsys/*.exe
510 $(RM) $(DIST_DIR)/dlls/*.dll
511 $(RM) $(DIST_DIR)/apps/*.exe
512 $(RM) $(DIST_DIR)/*.exe
513 $(RMDIR) $(DIST_DIR)/symbols
514 $(RMDIR) $(DIST_DIR)/subsys
515 $(RMDIR) $(DIST_DIR)/drivers
516 $(RMDIR) $(DIST_DIR)/dlls
517 $(RMDIR) $(DIST_DIR)/apps
518 $(RMDIR) $(DIST_DIR)
519
520 dist_dirs:
521 $(RMKDIR) $(DIST_DIR)
522 $(RMKDIR) $(DIST_DIR)/apps
523 $(RMKDIR) $(DIST_DIR)/dlls
524 $(RMKDIR) $(DIST_DIR)/drivers
525 $(RMKDIR) $(DIST_DIR)/subsys
526 $(RMKDIR) $(DIST_DIR)/symbols
527
528 .PHONY: dist_clean dist_dirs
529
530
531 etags:
532 find . -name "*.[ch]" -print | etags --language=c -
533
534 # EOF