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