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