added control panel template
[reactos.git] / reactos / Makefile
1 # $Id: Makefile,v 1.209 2004/02/05 19:17:11 weiden 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
36
37 # Keyboard layout libraries
38 DLLS_KBD = kbdus kbdgr kbdfr kbduk
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 fmifs freetype gdi32 \
48 imm32 iphlpapi kernel32 lzexpand mpr msafd msgina msimg32 msvcrt msvcrt20 mswsock \
49 ntdll ole32 oledlg packet psapi richedit rpcrt4 samlib secur32 shell32 shlwapi \
50 snmpapi syssetup twain unicode user32 userenv version wininet winmm winspool \
51 ws2help ws2_32 wsock32 wshirda $(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
67 DRIVERS_LIB = bzip2
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 winlogon regedit
96
97 # System services
98 # rpcss eventlog
99 SYS_SVC = rpcss eventlog
100
101 APPS = tests testsets utils
102
103
104 # External (sub)systems for ReactOS
105 # rosapps wine posix os2 (requires c++) java (non-existant)
106 EXTERNALS = rosapps wine posix os2
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) $(HALS) $(BUS) $(LIB_FSLIB) $(DLLS) $(SUBSYS) \
121 $(LOADERS) $(KERNEL_DRIVERS) $(SYS_APPS) $(SYS_SVC) \
122 $(APPS) $(EXT_MODULES) $(REGTESTS)
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 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 # Not needed
263 # $(APPS:%=%_implib): %_implib:
264 # $(MAKE) -C apps/$* implib
265
266 $(APPS:%=%_clean): %_clean:
267 $(MAKE) -C apps/$* clean
268
269 $(APPS:%=%_install): %_install:
270 $(MAKE) -C apps/$* install
271
272 .PHONY: $(APPS) $(APPS:%=%_implib) $(APPS:%=%_clean) $(APPS:%=%_install)
273
274
275 #
276 # External ports and subsystem personalities
277 #
278 $(EXTERNALS): %:
279 $(MAKE) -C $(ROOT_PATH)/$*
280
281 $(EXTERNALS:%=%_depends): %_depends:
282 $(MAKE) -C $(ROOT_PATH)/$* depends
283
284 $(EXTERNALS:%=%_implib): %_implib:
285 $(MAKE) -C $(ROOT_PATH)/$* implib
286
287 $(EXTERNALS:%=%_clean): %_clean:
288 $(MAKE) -C $(ROOT_PATH)/$* clean
289
290 $(EXTERNALS:%=%_install): %_install:
291 $(MAKE) -C $(ROOT_PATH)/$* install
292
293 .PHONY: $(EXTERNALS) $(EXTERNALS:%=%_depends) $(EXTERNALS:%=%_implib) $(EXTERNALS:%=%_clean) $(EXTERNALS:%=%_install)
294
295
296 #
297 # Tools
298 #
299 tools:
300 $(MAKE) -C tools
301
302 tools_implib:
303
304 tools_clean:
305 $(MAKE) -C tools clean
306
307 tools_install:
308
309 .PHONY: tools tools_implib tools_clean tools_install
310
311
312 #
313 # Developer Kits
314 #
315 dk:
316 $(RMKDIR) $(DK_PATH)
317 $(RMKDIR) $(DDK_PATH)
318 $(RMKDIR) $(DDK_PATH_LIB)
319 $(RMKDIR) $(DDK_PATH_INC)
320 $(RMKDIR) $(SDK_PATH)
321 $(RMKDIR) $(SDK_PATH_LIB)
322 $(RMKDIR) $(SDK_PATH_INC)
323 $(RMKDIR) $(XDK_PATH)
324 $(RMKDIR) $(XDK_PATH_LIB)
325 $(RMKDIR) $(XDK_PATH_INC)
326
327 dk_implib:
328
329 # WARNING! Be very sure that there are no important files
330 # in these directories before cleaning them!!!
331 dk_clean:
332 $(RM) $(DDK_PATH_LIB)/*.a
333 # $(RM) $(DDK_PATH_INC)/*.h
334 $(RMDIR) $(DDK_PATH_LIB)
335 # $(RMDIR) $(DDK_PATH_INC)
336 $(RM) $(SDK_PATH_LIB)/*.a
337 # $(RM) $(SDK_PATH_INC)/*.h
338 $(RMDIR) $(SDK_PATH_LIB)
339 # $(RMDIR) $(SDK_PATH_INC)
340 $(RM) $(XDK_PATH_LIB)/*.a
341 # $(RM) $(XDK_PATH_INC)/*.h
342 $(RMDIR) $(XDK_PATH_LIB)
343 # $(RMDIR) $(XDK_PATH_INC)
344
345 dk_install:
346
347 .PHONY: dk dk_implib dk_clean dk_install
348
349
350 #
351 # Interfaces
352 #
353 iface_native:
354 $(MAKE) -C iface/native
355
356 iface_native_implib:
357
358 iface_native_clean:
359 $(MAKE) -C iface/native clean
360
361 iface_native_install:
362
363 iface_native_bootcd:
364
365 iface_additional:
366 $(MAKE) -C iface/addsys
367
368 iface_additional_implib:
369
370 iface_additional_clean:
371 $(MAKE) -C iface/addsys clean
372
373 iface_additional_install:
374
375 iface_additional_bootcd:
376
377 .PHONY: iface_native iface_native_implib iface_native_clean iface_native_install \
378 iface_native_bootcd \
379 iface_additional iface_additional_implib iface_additional_clean \
380 iface_additional_install iface_additional_bootcd
381
382
383 #
384 # Bus driver rules
385 #
386 $(BUS): %:
387 $(MAKE) -C drivers/bus/$*
388
389 $(BUS:%=%_implib): %_implib:
390 $(MAKE) -C drivers/bus/$* implib
391
392 $(BUS:%=%_clean): %_clean:
393 $(MAKE) -C drivers/bus/$* clean
394
395 $(BUS:%=%_install): %_install:
396 $(MAKE) -C drivers/bus/$* install
397
398 $(BUS:%=%_bootcd): %_bootcd:
399 $(MAKE) -C drivers/bus/$* bootcd
400
401 .PHONY: $(BUS) $(BUS:%=%_implib) $(BUS:%=%_clean) \
402 $(BUS:%=%_install) $(BUS:%=%_bootcd)
403
404
405 #
406 # Driver support libraries rules
407 #
408 $(DRIVERS_LIB): %:
409 $(MAKE) -C drivers/lib/$*
410
411 $(DRIVERS_LIB:%=%_implib): %_implib:
412 $(MAKE) -C drivers/lib/$* implib
413
414 $(DRIVERS_LIB:%=%_clean): %_clean:
415 $(MAKE) -C drivers/lib/$* clean
416
417 $(DRIVERS_LIB:%=%_install): %_install:
418 $(MAKE) -C drivers/lib/$* install
419
420 $(DRIVERS_LIB:%=%_bootcd): %_bootcd:
421 $(MAKE) -C drivers/lib/$* bootcd
422
423 .PHONY: $(DRIVERS_LIB) $(DRIVERS_LIB:%=%_implib) $(DRIVERS_LIB:%=%_clean) \
424 $(DRIVERS_LIB:%=%_install) $(DRIVERS_LIB:%=%_bootcd)
425
426
427 #
428 # Device driver rules
429 #
430 $(DEVICE_DRIVERS): %:
431 $(MAKE) -C drivers/dd/$*
432
433 $(DEVICE_DRIVERS:%=%_implib): %_implib:
434 $(MAKE) -C drivers/dd/$* implib
435
436 $(DEVICE_DRIVERS:%=%_clean): %_clean:
437 $(MAKE) -C drivers/dd/$* clean
438
439 $(DEVICE_DRIVERS:%=%_install): %_install:
440 $(MAKE) -C drivers/dd/$* install
441
442 $(DEVICE_DRIVERS:%=%_bootcd): %_bootcd:
443 $(MAKE) -C drivers/dd/$* bootcd
444
445 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_implib) $(DEVICE_DRIVERS:%=%_clean) \
446 $(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_bootcd)
447
448
449 #
450 # Video device driver rules
451 #
452 VIDEO_DRIVERS:
453 $(MAKE) -C drivers/video
454
455 VIDEO_DRIVERS_implib:
456 $(MAKE) -C drivers/video implib
457
458 VIDEO_DRIVERS_clean:
459 $(MAKE) -C drivers/video clean
460
461 VIDEO_DRIVERS_install:
462 $(MAKE) -C drivers/video install
463
464 VIDEO_DRIVERS_bootcd:
465 $(MAKE) -C drivers/video bootcd
466
467 .PHONY: VIDEO_DRIVERS VIDEO_DRIVERS_implib VIDEO_DRIVERS_clean \
468 VIDEO_DRIVERS_install VIDEO_DRIVERS_bootcd
469
470
471 #
472 # Input driver rules
473 #
474 $(INPUT_DRIVERS): %:
475 $(MAKE) -C drivers/input/$*
476
477 $(INPUT_DRIVERS:%=%_implib): %_implib:
478 $(MAKE) -C drivers/input/$* implib
479
480 $(INPUT_DRIVERS:%=%_clean): %_clean:
481 $(MAKE) -C drivers/input/$* clean
482
483 $(INPUT_DRIVERS:%=%_install): %_install:
484 $(MAKE) -C drivers/input/$* install
485
486 $(INPUT_DRIVERS:%=%_bootcd): %_bootcd:
487 $(MAKE) -C drivers/input/$* bootcd
488
489 .PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_implib) $(INPUT_DRIVERS:%=%_clean)\
490 $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_bootcd)
491
492 #
493 # Filesystem driver rules
494 #
495 $(FS_DRIVERS): %:
496 $(MAKE) -C drivers/fs/$*
497
498 $(FS_DRIVERS:%=%_implib): %_implib:
499 $(MAKE) -C drivers/fs/$* implib
500
501 $(FS_DRIVERS:%=%_clean): %_clean:
502 $(MAKE) -C drivers/fs/$* clean
503
504 $(FS_DRIVERS:%=%_install): %_install:
505 $(MAKE) -C drivers/fs/$* install
506
507 $(FS_DRIVERS:%=%_bootcd): %_bootcd:
508 $(MAKE) -C drivers/fs/$* bootcd
509
510 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_implib) $(FS_DRIVERS:%=%_clean) \
511 $(FS_DRIVERS:%=%_install) $(FS_DRIVERS:%=%_bootcd)
512
513
514 #
515 # Network driver rules
516 #
517 $(NET_DRIVERS): %:
518 $(MAKE) -C drivers/net/$*
519
520 $(NET_DRIVERS:%=%_implib): %_implib:
521 $(MAKE) -C drivers/net/$* implib
522
523 $(NET_DRIVERS:%=%_clean): %_clean:
524 $(MAKE) -C drivers/net/$* clean
525
526 $(NET_DRIVERS:%=%_install): %_install:
527 $(MAKE) -C drivers/net/$* install
528
529 $(NET_DRIVERS:%=%_bootcd): %_bootcd:
530 $(MAKE) -C drivers/net/$* bootcd
531
532 .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_implib) $(NET_DRIVERS:%=%_clean) \
533 $(NET_DRIVERS:%=%_install) $(NET_DRIVERS:%=%_bootcd)
534
535
536 #
537 # Network device driver rules
538 #
539 $(NET_DEVICE_DRIVERS): %:
540 $(MAKE) -C drivers/net/dd/$*
541
542 $(NET_DEVICE_DRIVERS:%=%_implib): %_implib:
543 $(MAKE) -C drivers/net/dd/$* implib
544
545 $(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
546 $(MAKE) -C drivers/net/dd/$* clean
547
548 $(NET_DEVICE_DRIVERS:%=%_install): %_install:
549 $(MAKE) -C drivers/net/dd/$* install
550
551 $(NET_DEVICE_DRIVERS:%=%_bootcd): %_bootcd:
552 $(MAKE) -C drivers/net/dd/$* bootcd
553
554 .PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) $(NET_DEVICE_DRIVERS:%=%_implib) \
555 $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_bootcd)
556
557
558 #
559 # storage driver rules
560 #
561 $(STORAGE_DRIVERS): %:
562 $(MAKE) -C drivers/storage/$*
563
564 $(STORAGE_DRIVERS:%=%_implib): %_implib:
565 $(MAKE) -C drivers/storage/$* implib
566
567 $(STORAGE_DRIVERS:%=%_clean): %_clean:
568 $(MAKE) -C drivers/storage/$* clean
569
570 $(STORAGE_DRIVERS:%=%_install): %_install:
571 $(MAKE) -C drivers/storage/$* install
572
573 $(STORAGE_DRIVERS:%=%_bootcd): %_bootcd:
574 $(MAKE) -C drivers/storage/$* bootcd
575
576 .PHONY: $(STORAGE_DRIVERS) $(STORAGE_DRIVERS:%=%_clean) $(STORAGE_DRIVERS:%=%_implib) \
577 $(STORAGE_DRIVERS:%=%_install) $(STORAGE_DRIVERS:%=%_bootcd)
578
579
580 #
581 # Kernel loaders
582 #
583 $(LOADERS): %:
584 $(MAKE) -C loaders/$*
585
586 $(LOADERS:%=%_implib): %_implib:
587
588 $(LOADERS:%=%_clean): %_clean:
589 $(MAKE) -C loaders/$* clean
590
591 $(LOADERS:%=%_install): %_install:
592 $(MAKE) -C loaders/$* install
593
594 .PHONY: $(LOADERS) $(LOADERS:%=%_implib) $(LOADERS:%=%_clean) $(LOADERS:%=%_install)
595
596
597 #
598 # Required system components
599 #
600 ntoskrnl:
601 $(MAKE) -C ntoskrnl
602
603 ntoskrnl_implib:
604 $(MAKE) -C ntoskrnl implib
605
606 ntoskrnl_clean:
607 $(MAKE) -C ntoskrnl clean
608
609 ntoskrnl_install:
610 $(MAKE) -C ntoskrnl install
611
612 ntoskrnl_bootcd:
613 $(MAKE) -C ntoskrnl bootcd
614
615 .PHONY: ntoskrnl ntoskrnl_implib ntoskrnl_clean ntoskrnl_install ntoskrnl_bootcd
616
617
618 #
619 # Hardware Abstraction Layer import library
620 #
621 hallib:
622 $(MAKE) -C hal/hal
623
624 hallib_implib:
625 $(MAKE) -C hal/hal implib
626
627 hallib_clean:
628 $(MAKE) -C hal/hal clean
629
630 hallib_install:
631 $(MAKE) -C hal/hal install
632
633 hallib_bootcd:
634 $(MAKE) -C hal/hal bootcd
635
636 .PHONY: hallib hallib_implib hallib_clean hallib_install hallib_bootcd
637
638
639 #
640 # Hardware Abstraction Layers
641 #
642 $(HALS): %:
643 $(MAKE) -C hal/$*
644
645 $(HALS:%=%_implib): %_implib:
646 $(MAKE) -C hal/$* implib
647
648 $(HALS:%=%_clean): %_clean:
649 $(MAKE) -C hal/$* clean
650
651 $(HALS:%=%_install): %_install:
652 $(MAKE) -C hal/$* install
653
654 $(HALS:%=%_bootcd): %_bootcd:
655 $(MAKE) -C hal/$* bootcd
656
657 .PHONY: $(HALS) $(HALS:%=%_implib) $(HALS:%=%_clean) $(HALS:%=%_install) $(HALS:%=%_bootcd)
658
659
660 #
661 # File system libraries
662 #
663 $(LIB_FSLIB): %:
664 $(MAKE) -C lib/fslib/$*
665
666 $(LIB_FSLIB:%=%_depends): %_depends:
667 $(MAKE) -C lib/fslib/$* depends
668
669 $(LIB_FSLIB:%=%_implib): %_implib:
670 $(MAKE) -C lib/fslib/$* implib
671
672 $(LIB_FSLIB:%=%_clean): %_clean:
673 $(MAKE) -C lib/fslib/$* clean
674
675 $(LIB_FSLIB:%=%_install): %_install:
676 $(MAKE) -C lib/fslib/$* install
677
678 $(LIB_FSLIB:%=%_bootcd): %_bootcd:
679 $(MAKE) -C lib/fslib/$* bootcd
680
681 .PHONY: $(LIB_FSLIB) $(LIB_FSLIB:%=%_depends) $(LIB_FSLIB:%=%_implib) $(LIB_FSLIB:%=%_clean) \
682 $(LIB_FSLIB:%=%_install) $(LIB_FSLIB:%=%_bootcd)
683
684
685 #
686 # Static libraries
687 #
688 $(LIB_STATIC): %:
689 $(MAKE) -C lib/$*
690
691 $(LIB_STATIC:%=%_depends): %_depends:
692 $(MAKE) -C lib/string depends
693
694 $(LIB_STATIC:%=%_implib): %_implib:
695 $(MAKE) -C lib/$* implib
696
697 $(LIB_STATIC:%=%_clean): %_clean:
698 $(MAKE) -C lib/$* clean
699
700 $(LIB_STATIC:%=%_install): %_install:
701 $(MAKE) -C lib/$* install
702
703 $(LIB_STATIC:%=%_bootcd): %_bootcd:
704 $(MAKE) -C lib/$* bootcd
705
706 .PHONY: $(LIB_STATIC) $(LIB_STATIC:%=%_depends) $(LIB_STATIC:%=%_implib) $(LIB_STATIC:%=%_clean) \
707 $(LIB_STATIC:%=%_install) $(LIB_STATIC:%=%_bootcd)
708
709
710 #
711 # DLLs
712 #
713 $(DLLS): %:
714 $(MAKE) -C lib/$*
715
716 $(DLLS:%=%_depends): %_depends:
717 $(MAKE) -C lib/$* depends
718
719 $(DLLS:%=%_implib): %_implib:
720 $(MAKE) -C lib/$* implib
721
722 $(DLLS:%=%_clean): %_clean:
723 $(MAKE) -C lib/$* clean
724
725 $(DLLS:%=%_install): %_install:
726 $(MAKE) -C lib/$* install
727
728 $(DLLS:%=%_bootcd): %_bootcd:
729 $(MAKE) -C lib/$* bootcd
730
731 .PHONY: $(DLLS) $(DLLS:%=%_depends) $(DLLS:%=%_implib) $(DLLS:%=%_clean) $(DLLS:%=%_install) \
732 $(DLLS:%=%_bootcd)
733
734
735 #
736 # Subsystem support modules
737 #
738 $(SUBSYS): %:
739 $(MAKE) -C subsys/$*
740
741 $(SUBSYS:%=%_depends): %_depends:
742 $(MAKE) -C subsys/$* depends
743
744 $(SUBSYS:%=%_implib): %_implib:
745 $(MAKE) -C subsys/$* implib
746
747 $(SUBSYS:%=%_clean): %_clean:
748 $(MAKE) -C subsys/$* clean
749
750 $(SUBSYS:%=%_install): %_install:
751 $(MAKE) -C subsys/$* install
752
753 $(SUBSYS:%=%_bootcd): %_bootcd:
754 $(MAKE) -C subsys/$* bootcd
755
756 .PHONY: $(SUBSYS) $(SUBSYS:%=%_depends) $(SUBSYS:%=%_implib) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
757 $(SUBSYS:%=%_bootcd)
758
759 #
760 # Regression testsuite
761 #
762
763 $(REGTESTS): %:
764 $(MAKE) -C regtests
765
766 $(REGTESTS:%=%_clean): %_clean:
767 $(MAKE) -C regtests clean
768
769 $(REGTESTS:%=%_install): %_install:
770 $(MAKE) -C regtests install
771
772 .PHONY: $(REGTESTS) $(REGTESTS:%=%_depends) $(SUBSYS:%=%_clean) $(REGTESTS:%=%_install)
773
774
775 #
776 # Create an installation
777 #
778
779 install_clean:
780 $(RM) $(INSTALL_DIR)/system32/drivers/*.*
781 $(RM) $(INSTALL_DIR)/system32/config/*.*
782 $(RM) $(INSTALL_DIR)/system32/*.*
783 $(RM) $(INSTALL_DIR)/symbols/*.*
784 $(RM) $(INSTALL_DIR)/media/fonts/*.*
785 $(RM) $(INSTALL_DIR)/media/*.*
786 $(RM) $(INSTALL_DIR)/bin/*.*
787 $(RM) $(INSTALL_DIR)/*.com
788 $(RM) $(INSTALL_DIR)/*.bat
789 $(RMDIR) $(INSTALL_DIR)/system32/drivers
790 $(RMDIR) $(INSTALL_DIR)/system32/config
791 $(RMDIR) $(INSTALL_DIR)/system32
792 $(RMDIR) $(INSTALL_DIR)/symbols
793 $(RMDIR) $(INSTALL_DIR)/media/fonts
794 $(RMDIR) $(INSTALL_DIR)/media
795 $(RMDIR) $(INSTALL_DIR)/bin
796 $(RMDIR) $(INSTALL_DIR)
797
798 install_dirs:
799 $(RMKDIR) $(INSTALL_DIR)
800 $(RMKDIR) $(INSTALL_DIR)/bin
801 $(RMKDIR) $(INSTALL_DIR)/media
802 $(RMKDIR) $(INSTALL_DIR)/media/fonts
803 $(RMKDIR) $(INSTALL_DIR)/symbols
804 $(RMKDIR) $(INSTALL_DIR)/system32
805 $(RMKDIR) $(INSTALL_DIR)/system32/config
806 $(RMKDIR) $(INSTALL_DIR)/system32/drivers
807
808 install_before:
809 $(CP) bootc.lst $(INSTALL_DIR)/bootc.lst
810 $(CP) boot.bat $(INSTALL_DIR)/boot.bat
811 $(CP) aboot.bat $(INSTALL_DIR)/aboot.bat
812 $(CP) media/fonts $(INSTALL_DIR)/media/fonts
813 $(CP) media/nls $(INSTALL_DIR)/system32
814 $(CP) media/nls/c_1252.nls $(INSTALL_DIR)/system32/ansi.nls
815 $(CP) media/nls/c_437.nls $(INSTALL_DIR)/system32/oem.nls
816 $(CP) media/nls/l_intl.nls $(INSTALL_DIR)/system32/casemap.nls
817
818 .PHONY: install_clean install_dirs install_before
819
820
821 etags:
822 find . -name "*.[ch]" -print | etags --language=c -
823
824
825 docu:
826 echo generating ReactOS NTOSKRNL documentation ...
827 $(MAKE) -C ntoskrnl docu
828
829 echo generating ReactOS drivers documentation ...
830 $(MAKE) -C drivers docu
831
832 echo generating ReactOS NTDLL documentation ...
833 $(MAKE) -C lib/ntdll docu
834
835 echo generating ReactOS Freetype documentation ...
836 $(MAKE) -C lib/freetype docu
837
838 echo generating ReactOS libs documentation ...
839 $(MAKE) -C lib docu
840
841 echo generating ReactOS WIN32K documentation ...
842 $(MAKE) -C subsys/win32k docu
843
844 echo generating ReactOS apps+tools documentation ...
845 $(MAKE) -C apps docu
846
847 echo generating ReactOS explorer documentation ...
848 $(MAKE) -C subsys/system/explorer full-docu
849
850 echo generating remaining ReactOS documentation ...
851 doxygen Doxyfile
852
853 .PHONY: docu
854
855
856 # EOF