2003-07-11 Casper S. Hornstrup <chorns@users.sourceforge.net>
[reactos.git] / reactos / Makefile
1 #
2 # Global makefile
3 #
4
5 PATH_TO_TOP = .
6
7 #
8 # Define to build ReactOS external targets
9 #
10 ifeq ($(ROS_BUILD_EXT),)
11 ROS_BUILD_EXT = no
12 else
13 ROS_BUILD_EXT = yes
14 endif
15
16 include $(PATH_TO_TOP)/rules.mak
17
18 # Required to run the system
19 COMPONENTS = iface_native iface_additional hallib ntoskrnl
20
21 # Hardware Abstraction Layers
22 # halx86
23 HALS = halx86
24
25 # Bus drivers
26 # acpi isapnp pci
27 BUS = acpi isapnp pci
28
29 # Filesystem libraries
30 # vfatlib
31 LIB_FSLIB = vfatlib
32
33 # Static libraries
34 LIB_STATIC = string rosrtl epsapi zlib
35
36 # User mode libraries
37 # advapi32 crtdll fmifs gdi32 kernel32 libpcap packet msafd msvcrt ntdll ole32
38 # oleaut32 epsapi psapi rpcrt4 secur32 shell32 user32 version ws2help ws2_32 wsock32 wshirda
39 DLLS = advapi32 crtdll fmifs freetype gdi32 kernel32 packet msafd msvcrt ntdll \
40 psapi secur32 syssetup user32 version winedbgc winspool ws2help ws2_32 \
41 wsock32 wshirda
42
43 SUBSYS = smss win32k csrss ntvdm
44
45 #
46 # Select the server(s) you want to build
47 #
48 #SERVERS = posix linux os2
49 SERVERS = win32
50
51 # Boot loaders
52 # dos
53 LOADERS = dos
54
55 # Driver support libraries
56 #bzip2 zlib
57 DRIVERS_LIB = bzip2
58
59 # Kernel mode device drivers
60 # Obsolete: ide
61 # beep blue floppy null parallel ramdrv serenum serial vga videoprt
62 DEVICE_DRIVERS = beep blue debugout floppy null serial vga videoprt
63
64 # Kernel mode input drivers
65 # keyboard mouclass psaux sermouse
66 INPUT_DRIVERS = keyboard mouclass psaux
67
68 # Kernel mode file system drivers
69 # cdfs ext2 fs_rec ms np vfat
70 FS_DRIVERS = cdfs fs_rec ms np vfat mup ntfs
71
72 # Kernel mode networking drivers
73 # afd ndis npf tcpip tdi wshtcpip
74 NET_DRIVERS = afd ndis npf tcpip tdi wshtcpip
75
76 # Kernel mode networking device drivers
77 # ne2000
78 NET_DEVICE_DRIVERS = ne2000
79
80 # Kernel mode storage drivers
81 # atapi cdrom class2 disk scsiport
82 STORAGE_DRIVERS = atapi cdrom class2 disk scsiport
83
84 # System applications
85 # autochk cmd format gstart services setup usetup winlogon
86 SYS_APPS = autochk cmd format gstart services setup usetup winlogon
87
88 # System services
89 # rpcss eventlog
90 SYS_SVC = rpcss eventlog
91
92 APPS = tests testsets utils
93
94
95 # External (sub)systems for ReactOS
96 # rosapps wine posix os2 (requires c++) java (non-existant)
97 EXTERNALS = rosapps wine posix os2
98
99 ifeq ($(ROS_BUILD_EXT),yes)
100 EXT_MODULES = $(EXTERNALS)
101 else
102 EXT_MODULES =
103 endif
104
105 KERNEL_DRIVERS = $(DRIVERS_LIB) $(DEVICE_DRIVERS) $(INPUT_DRIVERS) $(FS_DRIVERS) \
106 $(NET_DRIVERS) $(NET_DEVICE_DRIVERS) $(STORAGE_DRIVERS)
107
108 # Regression tests
109 REGTESTS = regtests
110
111 all: tools dk implib $(LIB_STATIC) $(COMPONENTS) $(HALS) $(BUS) $(LIB_FSLIB) $(DLLS) $(SUBSYS) \
112 $(LOADERS) $(KERNEL_DRIVERS) $(SYS_APPS) $(SYS_SVC) \
113 $(APPS) $(EXT_MODULES) $(REGTESTS)
114
115 #config: $(TOOLS:%=%_config)
116
117 depends: $(LIB_STATIC:%=%_depends) $(LIB_FSLIB:%=%_depends) $(DLLS:%=%_depends) $(SUBSYS:%=%_depends) $(SYS_SVC:%=%_depends) \
118 $(EXT_MODULES:%=%_depends) $(POSIX_LIBS:%=%_depends)
119
120 implib: $(COMPONENTS:%=%_implib) $(HALS:%=%_implib) $(BUS:%=%_implib) \
121 $(LIB_STATIC:%=%_implib) $(LIB_FSLIB:%=%_implib) $(DLLS:%=%_implib) $(LOADERS:%=%_implib) \
122 $(KERNEL_DRIVERS:%=%_implib) $(SUBSYS:%=%_implib) \
123 $(SYS_APPS:%=%_implib) $(SYS_SVC:%=%_implib) \
124 $(APPS:%=%_implib) $(EXT_MODULES:%=%_implib)
125
126 clean: tools dk_clean $(HALS:%=%_clean) \
127 $(COMPONENTS:%=%_clean) $(BUS:%=%_clean) $(LIB_STATIC:%=%_clean) $(LIB_FSLIB:%=%_clean) $(DLLS:%=%_clean) \
128 $(LOADERS:%=%_clean) $(KERNEL_DRIVERS:%=%_clean) $(SUBSYS:%=%_clean) \
129 $(SYS_APPS:%=%_clean) $(SYS_SVC:%=%_clean) \
130 $(NET_APPS:%=%_clean) \
131 $(APPS:%=%_clean) $(EXT_MODULES:%=%_clean) $(REGTESTS:%=%_clean) \
132 clean_after tools_clean
133
134 clean_after:
135 $(RM) $(PATH_TO_TOP)/include/roscfg.h
136
137 install: tools install_dirs install_before \
138 $(COMPONENTS:%=%_install) $(HALS:%=%_install) $(BUS:%=%_install) \
139 $(LIB_STATIC:%=%_install) $(LIB_FSLIB:%=%_install) $(DLLS:%=%_install) $(LOADERS:%=%_install) \
140 $(KERNEL_DRIVERS:%=%_install) $(SUBSYS:%=%_install) \
141 $(SYS_APPS:%=%_install) $(SYS_SVC:%=%_install) \
142 $(APPS:%=%_install) $(EXT_MODULES:%=%_install) $(REGTESTS:%=%_install)
143
144 dist: $(TOOLS_PATH)/rcopy$(EXE_POSTFIX) dist_clean dist_dirs \
145 $(HALS:%=%_dist) $(COMPONENTS:%=%_dist) $(BUS:%=%_dist) $(LIB_STATIC:%=%_dist) $(LIB_FSLIB:%=%_dist) \
146 $(DLLS:%=%_dist) $(LOADERS:%=%_dist) $(KERNEL_DRIVERS:%=%_dist) $(SUBSYS:%=%_dist) \
147 $(SYS_APPS:%=%_dist) $(SYS_SVC:%=%_dist) \
148 $(NET_APPS:%=%_dist) \
149 $(APPS:%=%_dist) $(EXT_MODULES:%=%_dist)
150
151 bootcd_directory_layout:
152 $(RMKDIR) $(BOOTCD_DIR)
153 $(RMKDIR) $(BOOTCD_DIR)/bootdisk
154 $(RMKDIR) $(BOOTCD_DIR)/loader
155 $(RMKDIR) $(BOOTCD_DIR)/reactos
156 $(RMKDIR) $(BOOTCD_DIR)/reactos/system32
157
158 bootcd_bootstrap_files: $(COMPONENTS:%=%_bootcd) $(HALS:%=%_bootcd) $(BUS:%=%_bootcd) \
159 $(LIB_STATIC:%=%_bootcd) $(LIB_FSLIB:%=%_bootcd) $(DLLS:%=%_bootcd) $(KERNEL_DRIVERS:%=%_bootcd) \
160 $(SUBSYS:%=%_bootcd) $(SYS_APPS:%=%_bootcd)
161
162 bootcd: all bootcd_directory_layout bootcd_bootstrap_files
163 $(MAKE) install INSTALL_DIR=$(BOOTCD_DIR)/reactos INSTALL_SYMBOLS=no BOOTCD_INSTALL=yes
164
165 .PHONY: all depends implib clean clean_before install dist bootcd_directory_layout \
166 bootcd_bootstrap_files bootcd
167
168
169 #
170 # System Applications
171 #
172 $(SYS_APPS): %:
173 $(MAKE) -C subsys/system/$*
174
175 $(SYS_APPS:%=%_implib): %_implib:
176 $(MAKE) -C subsys/system/$* implib
177
178 $(SYS_APPS:%=%_clean): %_clean:
179 $(MAKE) -C subsys/system/$* clean
180
181 $(SYS_APPS:%=%_dist): %_dist:
182 $(MAKE) -C subsys/system/$* dist
183
184 $(SYS_APPS:%=%_install): %_install:
185 $(MAKE) -C subsys/system/$* install
186
187 $(SYS_APPS:%=%_bootcd): %_bootcd:
188 $(MAKE) -C subsys/system/$* bootcd
189
190 .PHONY: $(SYS_APPS) $(SYS_APPS:%=%_implib) $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_dist) $(SYS_APPS:%=%_bootcd)
191
192 #
193 # System Services
194 #
195 $(SYS_SVC): %:
196 $(MAKE) -C services/$*
197
198 $(SYS_SVC:%=%_depends): %_depends:
199 $(MAKE) -C services/$* depends
200
201 $(SYS_SVC:%=%_implib): %_implib:
202 $(MAKE) -C services/$* implib
203
204 $(SYS_SVC:%=%_clean): %_clean:
205 $(MAKE) -C services/$* clean
206
207 $(SYS_SVC:%=%_dist): %_dist:
208 $(MAKE) -C services/$* dist
209
210 $(SYS_SVC:%=%_install): %_install:
211 $(MAKE) -C services/$* install
212
213 .PHONY: $(SYS_SVC) $(SYS_SVC:%=%_depends) $(SYS_SVC:%=%_implib) $(SYS_SVC:%=%_clean) $(SYS_SVC:%=%_install) $(SYS_SVC:%=%_dist)
214
215
216 #
217 # Applications
218 #
219 #
220 # Extra (optional system) Applications
221 #
222 $(APPS): %:
223 $(MAKE) -C apps/$*
224
225 $(APPS:%=%_implib): %_implib:
226 $(MAKE) -C apps/$* implib
227
228 $(APPS:%=%_clean): %_clean:
229 $(MAKE) -C apps/$* clean
230
231 $(APPS:%=%_dist): %_dist:
232 $(MAKE) -C apps/$* dist
233
234 $(APPS:%=%_install): %_install:
235 $(MAKE) -C apps/$* install
236
237 .PHONY: $(APPS) $(APPS:%=%_implib) $(APPS:%=%_clean) $(APPS:%=%_install) $(APPS:%=%_dist)
238
239
240 #
241 # External ports and subsystem personalities
242 #
243 $(EXTERNALS): %:
244 $(MAKE) -C $(ROOT_PATH)/$*
245
246 $(EXTERNALS:%=%_depends): %_depends:
247 $(MAKE) -C $(ROOT_PATH)/$* depends
248
249 $(EXTERNALS:%=%_implib): %_implib:
250 $(MAKE) -C $(ROOT_PATH)/$* implib
251
252 $(EXTERNALS:%=%_clean): %_clean:
253 $(MAKE) -C $(ROOT_PATH)/$* clean
254
255 $(EXTERNALS:%=%_dist): %_dist:
256 $(MAKE) -C $(ROOT_PATH)/$* dist
257
258 $(EXTERNALS:%=%_install): %_install:
259 $(MAKE) -C $(ROOT_PATH)/$* install
260
261 .PHONY: $(EXTERNALS) $(EXTERNALS:%=%_depends) $(EXTERNALS:%=%_implib) $(EXTERNALS:%=%_clean) $(EXTERNALS:%=%_install) $(EXTERNALS:%=%_dist)
262
263
264 #
265 # Tools
266 #
267 tools:
268 $(MAKE) -C tools
269
270 tools_implib:
271
272 tools_clean:
273 $(MAKE) -C tools clean
274
275 tools_install:
276
277 tools_dist:
278
279 .PHONY: tools tools_implib tools_clean tools_install tools_dist
280
281
282 #
283 # Developer Kits
284 #
285 dk:
286 $(RMKDIR) $(DK_PATH)
287 $(RMKDIR) $(DDK_PATH)
288 $(RMKDIR) $(DDK_PATH_LIB)
289 $(RMKDIR) $(DDK_PATH_INC)
290 $(RMKDIR) $(SDK_PATH)
291 $(RMKDIR) $(SDK_PATH_LIB)
292 $(RMKDIR) $(SDK_PATH_INC)
293 $(RMKDIR) $(XDK_PATH)
294 $(RMKDIR) $(XDK_PATH_LIB)
295 $(RMKDIR) $(XDK_PATH_INC)
296
297 dk_implib:
298
299 # WARNING! Be very sure that there are no important files
300 # in these directories before cleaning them!!!
301 dk_clean:
302 $(RM) $(DDK_PATH_LIB)/*.a
303 # $(RM) $(DDK_PATH_INC)/*.h
304 $(RMDIR) $(DDK_PATH_LIB)
305 # $(RMDIR) $(DDK_PATH_INC)
306 $(RM) $(SDK_PATH_LIB)/*.a
307 # $(RM) $(SDK_PATH_INC)/*.h
308 $(RMDIR) $(SDK_PATH_LIB)
309 # $(RMDIR) $(SDK_PATH_INC)
310 $(RM) $(XDK_PATH_LIB)/*.a
311 # $(RM) $(XDK_PATH_INC)/*.h
312 $(RMDIR) $(XDK_PATH_LIB)
313 # $(RMDIR) $(XDK_PATH_INC)
314
315 dk_install:
316
317 dk_dist:
318
319 .PHONY: dk dk_implib dk_clean dk_install dk_dist
320
321
322 #
323 # Interfaces
324 #
325 iface_native:
326 $(MAKE) -C iface/native
327
328 iface_native_implib:
329
330 iface_native_clean:
331 $(MAKE) -C iface/native clean
332
333 iface_native_install:
334
335 iface_native_dist:
336
337 iface_native_bootcd:
338
339 iface_additional:
340 $(MAKE) -C iface/addsys
341
342 iface_additional_implib:
343
344 iface_additional_clean:
345 $(MAKE) -C iface/addsys clean
346
347 iface_additional_install:
348
349 iface_additional_dist:
350
351 iface_additional_bootcd:
352
353 .PHONY: iface_native iface_native_implib iface_native_clean iface_native_install \
354 iface_native_dist iface_native_bootcd \
355 iface_additional iface_additional_implib iface_additional_clean \
356 iface_additional_install iface_additional_dist iface_additional_bootcd
357
358 #
359 # Bus driver rules
360 #
361 $(BUS): %:
362 $(MAKE) -C drivers/bus/$*
363
364 $(BUS:%=%_implib): %_implib:
365 $(MAKE) -C drivers/bus/$* implib
366
367 $(BUS:%=%_clean): %_clean:
368 $(MAKE) -C drivers/bus/$* clean
369
370 $(BUS:%=%_install): %_install:
371 $(MAKE) -C drivers/bus/$* install
372
373 $(BUS:%=%_dist): %_dist:
374 $(MAKE) -C drivers/bus/$* dist
375
376 $(BUS:%=%_bootcd): %_bootcd:
377 $(MAKE) -C drivers/bus/$* bootcd
378
379 .PHONY: $(BUS) $(BUS:%=%_implib) $(BUS:%=%_clean) \
380 $(BUS:%=%_install) $(BUS:%=%_dist) $(BUS:%=%_bootcd)
381
382 #
383 # Driver support libraries rules
384 #
385 $(DRIVERS_LIB): %:
386 $(MAKE) -C drivers/lib/$*
387
388 $(DRIVERS_LIB:%=%_implib): %_implib:
389 $(MAKE) -C drivers/lib/$* implib
390
391 $(DRIVERS_LIB:%=%_clean): %_clean:
392 $(MAKE) -C drivers/lib/$* clean
393
394 $(DRIVERS_LIB:%=%_install): %_install:
395 $(MAKE) -C drivers/lib/$* install
396
397 $(DRIVERS_LIB:%=%_dist): %_dist:
398 $(MAKE) -C drivers/lib/$* dist
399
400 $(DRIVERS_LIB:%=%_bootcd): %_bootcd:
401 $(MAKE) -C drivers/lib/$* bootcd
402
403 .PHONY: $(DRIVERS_LIB) $(DRIVERS_LIB:%=%_implib) $(DRIVERS_LIB:%=%_clean) \
404 $(DRIVERS_LIB:%=%_install) $(DRIVERS_LIB:%=%_dist) $(DRIVERS_LIB:%=%_bootcd)
405
406 #
407 # Device driver rules
408 #
409 $(DEVICE_DRIVERS): %:
410 $(MAKE) -C drivers/dd/$*
411
412 $(DEVICE_DRIVERS:%=%_implib): %_implib:
413 $(MAKE) -C drivers/dd/$* implib
414
415 $(DEVICE_DRIVERS:%=%_clean): %_clean:
416 $(MAKE) -C drivers/dd/$* clean
417
418 $(DEVICE_DRIVERS:%=%_install): %_install:
419 $(MAKE) -C drivers/dd/$* install
420
421 $(DEVICE_DRIVERS:%=%_dist): %_dist:
422 $(MAKE) -C drivers/dd/$* dist
423
424 $(DEVICE_DRIVERS:%=%_bootcd): %_bootcd:
425 $(MAKE) -C drivers/dd/$* bootcd
426
427 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_implib) $(DEVICE_DRIVERS:%=%_clean) \
428 $(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_dist) $(DEVICE_DRIVERS:%=%_bootcd)
429
430 #
431 # Input driver rules
432 #
433 $(INPUT_DRIVERS): %:
434 $(MAKE) -C drivers/input/$*
435
436 $(INPUT_DRIVERS:%=%_implib): %_implib:
437 $(MAKE) -C drivers/input/$* implib
438
439 $(INPUT_DRIVERS:%=%_clean): %_clean:
440 $(MAKE) -C drivers/input/$* clean
441
442 $(INPUT_DRIVERS:%=%_install): %_install:
443 $(MAKE) -C drivers/input/$* install
444
445 $(INPUT_DRIVERS:%=%_dist): %_dist:
446 $(MAKE) -C drivers/input/$* dist
447
448 $(INPUT_DRIVERS:%=%_bootcd): %_bootcd:
449 $(MAKE) -C drivers/input/$* bootcd
450
451 .PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_implib) $(INPUT_DRIVERS:%=%_clean)\
452 $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_dist) $(INPUT_DRIVERS:%=%_bootcd)
453
454 $(FS_DRIVERS): %:
455 $(MAKE) -C drivers/fs/$*
456
457 $(FS_DRIVERS:%=%_implib): %_implib:
458 $(MAKE) -C drivers/fs/$* implib
459
460 $(FS_DRIVERS:%=%_clean): %_clean:
461 $(MAKE) -C drivers/fs/$* clean
462
463 $(FS_DRIVERS:%=%_install): %_install:
464 $(MAKE) -C drivers/fs/$* install
465
466 $(FS_DRIVERS:%=%_dist): %_dist:
467 $(MAKE) -C drivers/fs/$* dist
468
469 $(FS_DRIVERS:%=%_bootcd): %_bootcd:
470 $(MAKE) -C drivers/fs/$* bootcd
471
472 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_implib) $(FS_DRIVERS:%=%_clean) \
473 $(FS_DRIVERS:%=%_install) $(FS_DRIVERS:%=%_dist) $(FS_DRIVERS:%=%_bootcd)
474
475 #
476 # Network driver rules
477 #
478 $(NET_DRIVERS): %:
479 $(MAKE) -C drivers/net/$*
480
481 $(NET_DRIVERS:%=%_implib): %_implib:
482 $(MAKE) -C drivers/net/$* implib
483
484 $(NET_DRIVERS:%=%_clean): %_clean:
485 $(MAKE) -C drivers/net/$* clean
486
487 $(NET_DRIVERS:%=%_install): %_install:
488 $(MAKE) -C drivers/net/$* install
489
490 $(NET_DRIVERS:%=%_dist): %_dist:
491 $(MAKE) -C drivers/net/$* dist
492
493 $(NET_DRIVERS:%=%_bootcd): %_bootcd:
494 $(MAKE) -C drivers/net/$* bootcd
495
496 .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_implib) $(NET_DRIVERS:%=%_clean) \
497 $(NET_DRIVERS:%=%_install) $(NET_DRIVERS:%=%_dist) $(NET_DRIVERS:%=%_bootcd)
498
499 $(NET_DEVICE_DRIVERS): %:
500 $(MAKE) -C drivers/net/dd/$*
501
502 $(NET_DEVICE_DRIVERS:%=%_implib): %_implib:
503 $(MAKE) -C drivers/net/dd/$* implib
504
505 $(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
506 $(MAKE) -C drivers/net/dd/$* clean
507
508 $(NET_DEVICE_DRIVERS:%=%_install): %_install:
509 $(MAKE) -C drivers/net/dd/$* install
510
511 $(NET_DEVICE_DRIVERS:%=%_dist): %_dist:
512 $(MAKE) -C drivers/net/dd/$* dist
513
514 $(NET_DEVICE_DRIVERS:%=%_bootcd): %_bootcd:
515 $(MAKE) -C drivers/net/dd/$* bootcd
516
517 .PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) $(NET_DEVICE_DRIVERS:%=%_implib) \
518 $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_dist) $(NET_DEVICE_DRIVERS:%=%_bootcd)
519
520 #
521 # storage driver rules
522 #
523 $(STORAGE_DRIVERS): %:
524 $(MAKE) -C drivers/storage/$*
525
526 $(STORAGE_DRIVERS:%=%_implib): %_implib:
527 $(MAKE) -C drivers/storage/$* implib
528
529 $(STORAGE_DRIVERS:%=%_clean): %_clean:
530 $(MAKE) -C drivers/storage/$* clean
531
532 $(STORAGE_DRIVERS:%=%_install): %_install:
533 $(MAKE) -C drivers/storage/$* install
534
535 $(STORAGE_DRIVERS:%=%_dist): %_dist:
536 $(MAKE) -C drivers/storage/$* dist
537
538 $(STORAGE_DRIVERS:%=%_bootcd): %_bootcd:
539 $(MAKE) -C drivers/storage/$* bootcd
540
541 .PHONY: $(STORAGE_DRIVERS) $(STORAGE_DRIVERS:%=%_clean) $(STORAGE_DRIVERS:%=%_implib) \
542 $(STORAGE_DRIVERS:%=%_install) $(STORAGE_DRIVERS:%=%_dist) $(STORAGE_DRIVERS:%=%_bootcd)
543
544 #
545 # Kernel loaders
546 #
547
548 $(LOADERS): %:
549 $(MAKE) -C loaders/$*
550
551 $(LOADERS:%=%_implib): %_implib:
552
553 $(LOADERS:%=%_clean): %_clean:
554 $(MAKE) -C loaders/$* clean
555
556 $(LOADERS:%=%_install): %_install:
557 $(MAKE) -C loaders/$* install
558
559 $(LOADERS:%=%_dist): %_dist:
560 $(MAKE) -C loaders/$* dist
561
562 .PHONY: $(LOADERS) $(LOADERS:%=%_implib) $(LOADERS:%=%_clean) $(LOADERS:%=%_install) \
563 $(LOADERS:%=%_dist)
564
565 #
566 # Required system components
567 #
568
569 ntoskrnl:
570 $(MAKE) -C ntoskrnl
571
572 ntoskrnl_implib:
573 $(MAKE) -C ntoskrnl implib
574
575 ntoskrnl_clean:
576 $(MAKE) -C ntoskrnl clean
577
578 ntoskrnl_install:
579 $(MAKE) -C ntoskrnl install
580
581 ntoskrnl_dist:
582 $(MAKE) -C ntoskrnl dist
583
584 ntoskrnl_bootcd:
585 $(MAKE) -C ntoskrnl bootcd
586
587 .PHONY: ntoskrnl ntoskrnl_implib ntoskrnl_clean ntoskrnl_install ntoskrnl_dist ntoskrnl_bootcd
588
589 #
590 # Hardware Abstraction Layer import library
591 #
592
593 hallib:
594 $(MAKE) -C hal/hal
595
596 hallib_implib:
597 $(MAKE) -C hal/hal implib
598
599 hallib_clean:
600 $(MAKE) -C hal/hal clean
601
602 hallib_install:
603 $(MAKE) -C hal/hal install
604
605 hallib_dist:
606 $(MAKE) -C hal/hal dist
607
608 hallib_bootcd:
609 $(MAKE) -C hal/hal bootcd
610
611 .PHONY: hallib hallib_implib hallib_clean hallib_install hallib_dist hallib_bootcd
612
613 #
614 # Hardware Abstraction Layers
615 #
616
617 $(HALS): %:
618 $(MAKE) -C hal/$*
619
620 $(HALS:%=%_implib): %_implib:
621 $(MAKE) -C hal/$* implib
622
623 $(HALS:%=%_clean): %_clean:
624 $(MAKE) -C hal/$* clean
625
626 $(HALS:%=%_install): %_install:
627 $(MAKE) -C hal/$* install
628
629 $(HALS:%=%_dist): %_dist:
630 $(MAKE) -C hal/$* dist
631
632 $(HALS:%=%_bootcd): %_bootcd:
633 $(MAKE) -C hal/$* bootcd
634
635 .PHONY: $(HALS) $(HALS:%=%_implib) $(HALS:%=%_clean) $(HALS:%=%_install) $(HALS:%=%_dist) $(HALS:%=%_bootcd)
636
637 #
638 # File system libraries
639 #
640
641 $(LIB_FSLIB): %:
642 $(MAKE) -C lib/fslib/$*
643
644 $(LIB_FSLIB:%=%_depends): %_depends:
645 $(MAKE) -C lib/fslib/$* depends
646
647 $(LIB_FSLIB:%=%_implib): %_implib:
648 $(MAKE) -C lib/fslib/$* implib
649
650 $(LIB_FSLIB:%=%_clean): %_clean:
651 $(MAKE) -C lib/fslib/$* clean
652
653 $(LIB_FSLIB:%=%_install): %_install:
654 $(MAKE) -C lib/fslib/$* install
655
656 $(LIB_FSLIB:%=%_dist): %_dist:
657 $(MAKE) -C lib/fslib/$* dist
658
659 $(LIB_FSLIB:%=%_bootcd): %_bootcd:
660 $(MAKE) -C lib/fslib/$* bootcd
661
662 .PHONY: $(LIB_FSLIB) $(LIB_FSLIB:%=%_depends) $(LIB_FSLIB:%=%_implib) $(LIB_FSLIB:%=%_clean) \
663 $(LIB_FSLIB:%=%_install) $(LIB_FSLIB:%=%_dist) $(LIB_FSLIB:%=%_bootcd)
664
665 #
666 # Static libraries
667 #
668
669 $(LIB_STATIC): %:
670 $(MAKE) -C lib/$*
671
672 $(LIB_STATIC:%=%_depends): %_depends:
673 $(MAKE) -C lib/string depends
674
675 $(LIB_STATIC:%=%_implib): %_implib:
676 $(MAKE) -C lib/$* implib
677
678 $(LIB_STATIC:%=%_clean): %_clean:
679 $(MAKE) -C lib/$* clean
680
681 $(LIB_STATIC:%=%_install): %_install:
682 $(MAKE) -C lib/$* install
683
684 $(LIB_STATIC:%=%_dist): %_dist:
685 $(MAKE) -C lib/$* dist
686
687 $(LIB_STATIC:%=%_bootcd): %_bootcd:
688 $(MAKE) -C lib/$* bootcd
689
690 .PHONY: $(LIB_STATIC) $(LIB_STATIC:%=%_depends) $(LIB_STATIC:%=%_implib) $(LIB_STATIC:%=%_clean) \
691 $(LIB_STATIC:%=%_install) $(LIB_STATIC:%=%_dist) $(LIB_STATIC:%=%_bootcd)
692
693 #
694 # Required DLLs
695 #
696
697 $(DLLS): %:
698 $(MAKE) -C lib/$*
699
700 $(DLLS:%=%_depends): %_depends:
701 $(MAKE) -C lib/$* depends
702
703 $(DLLS:%=%_implib): %_implib:
704 $(MAKE) -C lib/$* implib
705
706 $(DLLS:%=%_clean): %_clean:
707 $(MAKE) -C lib/$* clean
708
709 $(DLLS:%=%_install): %_install:
710 $(MAKE) -C lib/$* install
711
712 $(DLLS:%=%_dist): %_dist:
713 $(MAKE) -C lib/$* dist
714
715 $(DLLS:%=%_bootcd): %_bootcd:
716 $(MAKE) -C lib/$* bootcd
717
718 .PHONY: $(DLLS) $(DLLS:%=%_depends) $(DLLS:%=%_implib) $(DLLS:%=%_clean) $(DLLS:%=%_install) $(DLLS:%=%_dist) $(DLLS:%=%_bootcd)
719
720 #
721 # Subsystem support modules
722 #
723
724 $(SUBSYS): %:
725 $(MAKE) -C subsys/$*
726
727 $(SUBSYS:%=%_depends): %_depends:
728 $(MAKE) -C subsys/$* depends
729
730 $(SUBSYS:%=%_implib): %_implib:
731 $(MAKE) -C subsys/$* implib
732
733 $(SUBSYS:%=%_clean): %_clean:
734 $(MAKE) -C subsys/$* clean
735
736 $(SUBSYS:%=%_install): %_install:
737 $(MAKE) -C subsys/$* install
738
739 $(SUBSYS:%=%_dist): %_dist:
740 $(MAKE) -C subsys/$* dist
741
742 $(SUBSYS:%=%_bootcd): %_bootcd:
743 $(MAKE) -C subsys/$* bootcd
744
745 .PHONY: $(SUBSYS) $(SUBSYS:%=%_depends) $(SUBSYS:%=%_implib) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
746 $(SUBSYS:%=%_dist) $(SUBSYS:%=%_bootcd)
747
748 #
749 # Regression testsuite
750 #
751
752 $(REGTESTS): %:
753 $(MAKE) -C regtests
754
755 $(REGTESTS:%=%_clean): %_clean:
756 $(MAKE) -C regtests clean
757
758 $(REGTESTS:%=%_install): %_install:
759 $(MAKE) -C regtests install
760
761 .PHONY: $(REGTESTS) $(REGTESTS:%=%_depends) $(SUBSYS:%=%_clean) $(REGTESTS:%=%_install)
762
763
764 #
765 # Create an installation
766 #
767
768 install_clean:
769 $(RM) $(INSTALL_DIR)/system32/drivers/*.*
770 $(RM) $(INSTALL_DIR)/system32/config/*.*
771 $(RM) $(INSTALL_DIR)/system32/*.*
772 $(RM) $(INSTALL_DIR)/symbols/*.*
773 $(RM) $(INSTALL_DIR)/media/fonts/*.*
774 $(RM) $(INSTALL_DIR)/media/*.*
775 $(RM) $(INSTALL_DIR)/bin/*.*
776 $(RM) $(INSTALL_DIR)/*.com
777 $(RM) $(INSTALL_DIR)/*.bat
778 $(RMDIR) $(INSTALL_DIR)/system32/drivers
779 $(RMDIR) $(INSTALL_DIR)/system32/config
780 $(RMDIR) $(INSTALL_DIR)/system32
781 $(RMDIR) $(INSTALL_DIR)/symbols
782 $(RMDIR) $(INSTALL_DIR)/media/fonts
783 $(RMDIR) $(INSTALL_DIR)/media
784 $(RMDIR) $(INSTALL_DIR)/bin
785 $(RMDIR) $(INSTALL_DIR)
786
787 ifneq ($(BOOTCD_INSTALL),)
788
789 install_dirs:
790 $(RMKDIR) $(INSTALL_DIR)
791
792 install_before:
793 # $(RLINE) bootdata/autorun.inf $(INSTALL_DIR)/../autorun.inf
794 $(RLINE) bootdata/readme.txt $(INSTALL_DIR)/../readme.txt
795 $(RLINE) bootdata/hivecls.inf $(INSTALL_DIR)/hivecls.inf
796 $(RLINE) bootdata/hivedef.inf $(INSTALL_DIR)/hivedef.inf
797 $(RLINE) bootdata/hivesft.inf $(INSTALL_DIR)/hivesft.inf
798 $(RLINE) bootdata/hivesys.inf $(INSTALL_DIR)/hivesys.inf
799 $(RLINE) bootdata/txtsetup.sif $(INSTALL_DIR)/txtsetup.sif
800 $(CP) media/fonts $(INSTALL_DIR)
801 $(CP) media/nls $(INSTALL_DIR)
802
803 else # !BOOTCD_INSTALL
804
805 install_dirs:
806 $(RMKDIR) $(INSTALL_DIR)
807 $(RMKDIR) $(INSTALL_DIR)/bin
808 $(RMKDIR) $(INSTALL_DIR)/media
809 $(RMKDIR) $(INSTALL_DIR)/media/fonts
810 $(RMKDIR) $(INSTALL_DIR)/symbols
811 $(RMKDIR) $(INSTALL_DIR)/system32
812 $(RMKDIR) $(INSTALL_DIR)/system32/config
813 $(RMKDIR) $(INSTALL_DIR)/system32/drivers
814
815 install_before:
816 $(CP) bootc.lst $(INSTALL_DIR)/bootc.lst
817 $(CP) boot.bat $(INSTALL_DIR)/boot.bat
818 $(CP) aboot.bat $(INSTALL_DIR)/aboot.bat
819 $(CP) media/fonts $(INSTALL_DIR)/media/fonts
820 $(CP) media/nls $(INSTALL_DIR)/system32
821 $(CP) media/nls/c_1252.nls $(INSTALL_DIR)/system32/ansi.nls
822 $(CP) media/nls/c_437.nls $(INSTALL_DIR)/system32/oem.nls
823 $(CP) media/nls/l_intl.nls $(INSTALL_DIR)/system32/casemap.nls
824
825 endif # BOOTCD_INSTALL
826
827 .PHONY: install_clean install_dirs install_before
828
829
830 #
831 # Make a distribution saveset
832 #
833
834 dist_clean:
835 $(RM) $(DIST_DIR)/symbols/*.sym
836 $(RM) $(DIST_DIR)/drivers/*.sys
837 $(RM) $(DIST_DIR)/subsys/*.exe
838 $(RM) $(DIST_DIR)/dlls/*.dll
839 $(RM) $(DIST_DIR)/apps/*.exe
840 $(RM) $(DIST_DIR)/*.exe
841 $(RMDIR) $(DIST_DIR)/symbols
842 $(RMDIR) $(DIST_DIR)/subsys
843 $(RMDIR) $(DIST_DIR)/drivers
844 $(RMDIR) $(DIST_DIR)/dlls
845 $(RMDIR) $(DIST_DIR)/apps
846 $(RMDIR) $(DIST_DIR)
847
848 dist_dirs:
849 $(RMKDIR) $(DIST_DIR)
850 $(RMKDIR) $(DIST_DIR)/apps
851 $(RMKDIR) $(DIST_DIR)/dlls
852 $(RMKDIR) $(DIST_DIR)/drivers
853 $(RMKDIR) $(DIST_DIR)/subsys
854 $(RMKDIR) $(DIST_DIR)/symbols
855
856 .PHONY: dist_clean dist_dirs
857
858 etags:
859 find . -name "*.[ch]" -print | etags --language=c -
860
861 # EOF
862