added preparations for installing .INF files (for class installers) during setup...
[reactos.git] / reactos / Makefile
1 # $Id: Makefile,v 1.236 2004/07/19 01:33:48 kuehng 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 pseh
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 = acledit advapi32 cabinet cards comctl32 crtdll comdlg32 d3d8thk expat fmifs freetype gdi32 \
48 imm32 iphlpapi kernel32 lzexpand mpr msafd msgina msimg32 msvcrt msvcrt20 msvideo 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 csq
68
69 # Kernel mode device drivers
70 # Obsolete: ide
71 # beep blue floppy null parallel ramdrv serenum serial
72 DEVICE_DRIVERS = beep blue debugout 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 floppy scsiport diskdump
92
93 # System applications
94 # autochk cmd format services setup usetup welcome winlogon
95 SYS_APPS = autochk cmd explorer expand 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 $(CP) media/drivers/etc/services $(BOOTCD_DIR)/reactos/services
191
192 bootcd_basic: bootcd_directory_layout bootcd_bootstrap_files bootcd_install_before
193
194 bootcd_makecd:
195 $(CABMAN) /C bootdata/packages/reactos.dff /L $(BOOTCD_DIR)/reactos /I
196 $(CABMAN) /C bootdata/packages/reactos.dff /RC $(BOOTCD_DIR)/reactos/reactos.inf /L $(BOOTCD_DIR)/reactos /N
197 - $(RM) $(BOOTCD_DIR)/reactos/reactos.inf
198 $(TOOLS_PATH)/cdmake/cdmake -v -m -b $(BOOTCD_DIR)/../isoboot.bin $(BOOTCD_DIR) REACTOS ReactOS.iso
199
200 ubootcd_unattend:
201 $(CP) bootdata/unattend.inf $(BOOTCD_DIR)/reactos/unattend.inf
202
203 livecd_directory_layout:
204 $(RMKDIR) $(LIVECD_DIR)
205 $(RMKDIR) $(LIVECD_DIR)/loader
206 $(RMKDIR) $(LIVECD_DIR)/reactos
207 $(RMKDIR) $(LIVECD_DIR)/Profiles/All\ Users/Desktop
208 $(RMKDIR) $(LIVECD_DIR)/Profiles/Default\ User/Desktop
209 $(RMKDIR) $(LIVECD_DIR)/Profiles/Default\ User/My\ Documents
210 $(CP) ${FREELDR_DIR}/bootsect/isoboot.bin ${LIVECD_DIR}/../isoboot.bin
211 $(CP) ${FREELDR_DIR}/freeldr/obj/i386/freeldr.sys ${LIVECD_DIR}/loader/setupldr.sys
212 $(RLINE) bootdata/livecd.ini $(LIVECD_DIR)/freeldr.ini
213
214 livecd_bootstrap_files:
215 $(MAKE) LIVECD_INSTALL=yes fastinstall
216
217 livecd_install_before:
218 $(TOOLS_PATH)/mkhive/mkhive$(EXE_POSTFIX) bootdata $(LIVECD_DIR)/reactos/system32/config bootdata/livecd.inf bootdata/hiveinst.inf
219
220 livecd_basic: livecd_directory_layout livecd_bootstrap_files livecd_install_before
221
222 livecd_makecd:
223 $(TOOLS_PATH)/cdmake/cdmake -m -j -b $(LIVECD_DIR)/../isoboot.bin $(LIVECD_DIR) REACTOS roslive.iso
224
225 bootcd: bootcd_basic bootcd_makecd
226
227 ubootcd: bootcd_basic ubootcd_unattend bootcd_makecd
228
229 livecd: livecd_basic livecd_makecd
230
231 registry: tools
232 $(TOOLS_PATH)/mkhive/mkhive$(EXE_POSTFIX) bootdata $(INSTALL_DIR)/system32/config bootdata/hiveinst.inf
233
234 .PHONY: all depends implib clean clean_before install freeldr bootcd_directory_layout \
235 bootcd_bootstrap_files bootcd_install_before bootcd_basic bootcd_makecd ubootcd_unattend bootcd
236
237
238 #
239 # System Applications
240 #
241 $(SYS_APPS): %:
242 $(MAKE) -C subsys/system/$*
243
244 $(SYS_APPS:%=%_implib): %_implib:
245 $(MAKE) -C subsys/system/$* implib
246
247 $(SYS_APPS:%=%_clean): %_clean:
248 $(MAKE) -C subsys/system/$* clean
249
250 $(SYS_APPS:%=%_install): %_install:
251 $(MAKE) -C subsys/system/$* install
252
253 $(SYS_APPS:%=%_bootcd): %_bootcd:
254 $(MAKE) -C subsys/system/$* bootcd
255
256 .PHONY: $(SYS_APPS) $(SYS_APPS:%=%_implib) $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_bootcd)
257
258 #
259 # System Services
260 #
261 $(SYS_SVC): %:
262 $(MAKE) -C services/$*
263
264 $(SYS_SVC:%=%_depends): %_depends:
265 $(MAKE) -C services/$* depends
266
267 $(SYS_SVC:%=%_implib): %_implib:
268 $(MAKE) -C services/$* implib
269
270 $(SYS_SVC:%=%_clean): %_clean:
271 $(MAKE) -C services/$* clean
272
273 $(SYS_SVC:%=%_install): %_install:
274 $(MAKE) -C services/$* install
275
276 .PHONY: $(SYS_SVC) $(SYS_SVC:%=%_depends) $(SYS_SVC:%=%_implib) $(SYS_SVC:%=%_clean) $(SYS_SVC:%=%_install)
277
278
279 #
280 # Applications
281 #
282 #
283 # Extra (optional system) Applications
284 #
285 $(APPS): %:
286 $(MAKE) -C apps/$*
287
288 # Not needed
289 # $(APPS:%=%_implib): %_implib:
290 # $(MAKE) -C apps/$* implib
291
292 $(APPS:%=%_clean): %_clean:
293 $(MAKE) -C apps/$* clean
294
295 $(APPS:%=%_install): %_install:
296 $(MAKE) -C apps/$* install
297
298 .PHONY: $(APPS) $(APPS:%=%_implib) $(APPS:%=%_clean) $(APPS:%=%_install)
299
300
301 #
302 # External ports and subsystem personalities
303 #
304 $(EXTERNALS): %:
305 $(MAKE) -C $(ROOT_PATH)/$*
306
307 $(EXTERNALS:%=%_depends): %_depends:
308 $(MAKE) -C $(ROOT_PATH)/$* depends
309
310 $(EXTERNALS:%=%_implib): %_implib:
311 $(MAKE) -C $(ROOT_PATH)/$* implib
312
313 $(EXTERNALS:%=%_clean): %_clean:
314 $(MAKE) -C $(ROOT_PATH)/$* clean
315
316 $(EXTERNALS:%=%_install): %_install:
317 $(MAKE) -C $(ROOT_PATH)/$* install
318
319 .PHONY: $(EXTERNALS) $(EXTERNALS:%=%_depends) $(EXTERNALS:%=%_implib) $(EXTERNALS:%=%_clean) $(EXTERNALS:%=%_install)
320
321
322 #
323 # Tools
324 #
325 tools:
326 $(MAKE) -C tools
327
328 tools_implib:
329
330 tools_clean:
331 $(MAKE) -C tools clean
332
333 tools_install:
334
335 .PHONY: tools tools_implib tools_clean tools_install
336
337
338 #
339 # Developer Kits
340 #
341 dk:
342 $(RMKDIR) $(DK_PATH)
343 $(RMKDIR) $(DDK_PATH)
344 $(RMKDIR) $(DDK_PATH_LIB)
345 $(RMKDIR) $(DDK_PATH_INC)
346 $(RMKDIR) $(SDK_PATH)
347 $(RMKDIR) $(SDK_PATH_LIB)
348 $(RMKDIR) $(SDK_PATH_INC)
349 $(RMKDIR) $(XDK_PATH)
350 $(RMKDIR) $(XDK_PATH_LIB)
351 $(RMKDIR) $(XDK_PATH_INC)
352
353 dk_implib:
354
355 # WARNING! Be very sure that there are no important files
356 # in these directories before cleaning them!!!
357 dk_clean:
358 $(RM) $(DDK_PATH_LIB)/*.a
359 # $(RM) $(DDK_PATH_INC)/*.h
360 $(RMDIR) $(DDK_PATH_LIB)
361 # $(RMDIR) $(DDK_PATH_INC)
362 $(RM) $(SDK_PATH_LIB)/*.a
363 # $(RM) $(SDK_PATH_INC)/*.h
364 $(RMDIR) $(SDK_PATH_LIB)
365 # $(RMDIR) $(SDK_PATH_INC)
366 $(RM) $(XDK_PATH_LIB)/*.a
367 # $(RM) $(XDK_PATH_INC)/*.h
368 $(RMDIR) $(XDK_PATH_LIB)
369 # $(RMDIR) $(XDK_PATH_INC)
370
371 dk_install:
372
373 .PHONY: dk dk_implib dk_clean dk_install
374
375
376 #
377 # Interfaces
378 #
379 iface_native:
380 $(MAKE) -C iface/native
381
382 iface_native_implib:
383
384 iface_native_clean:
385 $(MAKE) -C iface/native clean
386
387 iface_native_install:
388
389 iface_native_bootcd:
390
391 iface_additional:
392 $(MAKE) -C iface/addsys
393
394 iface_additional_implib:
395
396 iface_additional_clean:
397 $(MAKE) -C iface/addsys clean
398
399 iface_additional_install:
400
401 iface_additional_bootcd:
402
403 .PHONY: iface_native iface_native_implib iface_native_clean iface_native_install \
404 iface_native_bootcd \
405 iface_additional iface_additional_implib iface_additional_clean \
406 iface_additional_install iface_additional_bootcd
407
408
409 #
410 # Bus driver rules
411 #
412 $(BUS): %:
413 $(MAKE) -C drivers/bus/$*
414
415 $(BUS:%=%_implib): %_implib:
416 $(MAKE) -C drivers/bus/$* implib
417
418 $(BUS:%=%_clean): %_clean:
419 $(MAKE) -C drivers/bus/$* clean
420
421 $(BUS:%=%_install): %_install:
422 $(MAKE) -C drivers/bus/$* install
423
424 $(BUS:%=%_bootcd): %_bootcd:
425 $(MAKE) -C drivers/bus/$* bootcd
426
427 .PHONY: $(BUS) $(BUS:%=%_implib) $(BUS:%=%_clean) \
428 $(BUS:%=%_install) $(BUS:%=%_bootcd)
429
430
431 #
432 # Driver support libraries rules
433 #
434 $(DRIVERS_LIB): %:
435 $(MAKE) -C drivers/lib/$*
436
437 $(DRIVERS_LIB:%=%_implib): %_implib:
438 $(MAKE) -C drivers/lib/$* implib
439
440 $(DRIVERS_LIB:%=%_clean): %_clean:
441 $(MAKE) -C drivers/lib/$* clean
442
443 $(DRIVERS_LIB:%=%_install): %_install:
444 $(MAKE) -C drivers/lib/$* install
445
446 $(DRIVERS_LIB:%=%_bootcd): %_bootcd:
447 $(MAKE) -C drivers/lib/$* bootcd
448
449 .PHONY: $(DRIVERS_LIB) $(DRIVERS_LIB:%=%_implib) $(DRIVERS_LIB:%=%_clean) \
450 $(DRIVERS_LIB:%=%_install) $(DRIVERS_LIB:%=%_bootcd)
451
452
453 #
454 # Device driver rules
455 #
456 $(DEVICE_DRIVERS): %:
457 $(MAKE) -C drivers/dd/$*
458
459 $(DEVICE_DRIVERS:%=%_implib): %_implib:
460 $(MAKE) -C drivers/dd/$* implib
461
462 $(DEVICE_DRIVERS:%=%_clean): %_clean:
463 $(MAKE) -C drivers/dd/$* clean
464
465 $(DEVICE_DRIVERS:%=%_install): %_install:
466 $(MAKE) -C drivers/dd/$* install
467
468 $(DEVICE_DRIVERS:%=%_bootcd): %_bootcd:
469 $(MAKE) -C drivers/dd/$* bootcd
470
471 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_implib) $(DEVICE_DRIVERS:%=%_clean) \
472 $(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_bootcd)
473
474
475 #
476 # Video device driver rules
477 #
478 VIDEO_DRIVERS:
479 $(MAKE) -C drivers/video
480
481 VIDEO_DRIVERS_implib:
482 $(MAKE) -C drivers/video implib
483
484 VIDEO_DRIVERS_clean:
485 $(MAKE) -C drivers/video clean
486
487 VIDEO_DRIVERS_install:
488 $(MAKE) -C drivers/video install
489
490 VIDEO_DRIVERS_bootcd:
491 $(MAKE) -C drivers/video bootcd
492
493 .PHONY: VIDEO_DRIVERS VIDEO_DRIVERS_implib VIDEO_DRIVERS_clean \
494 VIDEO_DRIVERS_install VIDEO_DRIVERS_bootcd
495
496
497 #
498 # Input driver rules
499 #
500 $(INPUT_DRIVERS): %:
501 $(MAKE) -C drivers/input/$*
502
503 $(INPUT_DRIVERS:%=%_implib): %_implib:
504 $(MAKE) -C drivers/input/$* implib
505
506 $(INPUT_DRIVERS:%=%_clean): %_clean:
507 $(MAKE) -C drivers/input/$* clean
508
509 $(INPUT_DRIVERS:%=%_install): %_install:
510 $(MAKE) -C drivers/input/$* install
511
512 $(INPUT_DRIVERS:%=%_bootcd): %_bootcd:
513 $(MAKE) -C drivers/input/$* bootcd
514
515 .PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_implib) $(INPUT_DRIVERS:%=%_clean)\
516 $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_bootcd)
517
518 #
519 # Filesystem driver rules
520 #
521 $(FS_DRIVERS): %:
522 $(MAKE) -C drivers/fs/$*
523
524 $(FS_DRIVERS:%=%_implib): %_implib:
525 $(MAKE) -C drivers/fs/$* implib
526
527 $(FS_DRIVERS:%=%_clean): %_clean:
528 $(MAKE) -C drivers/fs/$* clean
529
530 $(FS_DRIVERS:%=%_install): %_install:
531 $(MAKE) -C drivers/fs/$* install
532
533 $(FS_DRIVERS:%=%_bootcd): %_bootcd:
534 $(MAKE) -C drivers/fs/$* bootcd
535
536 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_implib) $(FS_DRIVERS:%=%_clean) \
537 $(FS_DRIVERS:%=%_install) $(FS_DRIVERS:%=%_bootcd)
538
539
540 #
541 # Network driver rules
542 #
543 $(NET_DRIVERS): %:
544 $(MAKE) -C drivers/net/$*
545
546 $(NET_DRIVERS:%=%_implib): %_implib:
547 $(MAKE) -C drivers/net/$* implib
548
549 $(NET_DRIVERS:%=%_clean): %_clean:
550 $(MAKE) -C drivers/net/$* clean
551
552 $(NET_DRIVERS:%=%_install): %_install:
553 $(MAKE) -C drivers/net/$* install
554
555 $(NET_DRIVERS:%=%_bootcd): %_bootcd:
556 $(MAKE) -C drivers/net/$* bootcd
557
558 .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_implib) $(NET_DRIVERS:%=%_clean) \
559 $(NET_DRIVERS:%=%_install) $(NET_DRIVERS:%=%_bootcd)
560
561
562 #
563 # Network device driver rules
564 #
565 $(NET_DEVICE_DRIVERS): %:
566 $(MAKE) -C drivers/net/dd/$*
567
568 $(NET_DEVICE_DRIVERS:%=%_implib): %_implib:
569 $(MAKE) -C drivers/net/dd/$* implib
570
571 $(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
572 $(MAKE) -C drivers/net/dd/$* clean
573
574 $(NET_DEVICE_DRIVERS:%=%_install): %_install:
575 $(MAKE) -C drivers/net/dd/$* install
576
577 $(NET_DEVICE_DRIVERS:%=%_bootcd): %_bootcd:
578 $(MAKE) -C drivers/net/dd/$* bootcd
579
580 .PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) $(NET_DEVICE_DRIVERS:%=%_implib) \
581 $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_bootcd)
582
583
584 #
585 # storage driver rules
586 #
587 $(STORAGE_DRIVERS): %:
588 $(MAKE) -C drivers/storage/$*
589
590 $(STORAGE_DRIVERS:%=%_implib): %_implib:
591 $(MAKE) -C drivers/storage/$* implib
592
593 $(STORAGE_DRIVERS:%=%_clean): %_clean:
594 $(MAKE) -C drivers/storage/$* clean
595
596 $(STORAGE_DRIVERS:%=%_install): %_install:
597 $(MAKE) -C drivers/storage/$* install
598
599 $(STORAGE_DRIVERS:%=%_bootcd): %_bootcd:
600 $(MAKE) -C drivers/storage/$* bootcd
601
602 .PHONY: $(STORAGE_DRIVERS) $(STORAGE_DRIVERS:%=%_clean) $(STORAGE_DRIVERS:%=%_implib) \
603 $(STORAGE_DRIVERS:%=%_install) $(STORAGE_DRIVERS:%=%_bootcd)
604
605
606 #
607 # Kernel loaders
608 #
609 $(LOADERS): %:
610 $(MAKE) -C loaders/$*
611
612 $(LOADERS:%=%_implib): %_implib:
613
614 $(LOADERS:%=%_clean): %_clean:
615 $(MAKE) -C loaders/$* clean
616
617 $(LOADERS:%=%_install): %_install:
618 $(MAKE) -C loaders/$* install
619
620 .PHONY: $(LOADERS) $(LOADERS:%=%_implib) $(LOADERS:%=%_clean) $(LOADERS:%=%_install)
621
622
623 #
624 # Required system components
625 #
626 ntoskrnl:
627 $(MAKE) -C ntoskrnl
628
629 ntoskrnl_implib:
630 $(MAKE) -C ntoskrnl implib
631
632 ntoskrnl_clean:
633 $(MAKE) -C ntoskrnl clean
634
635 ntoskrnl_install:
636 $(MAKE) -C ntoskrnl install
637
638 ntoskrnl_bootcd:
639 $(MAKE) -C ntoskrnl bootcd
640
641 .PHONY: ntoskrnl ntoskrnl_implib ntoskrnl_clean ntoskrnl_install ntoskrnl_bootcd
642
643
644 #
645 # Hardware Abstraction Layer import library
646 #
647 hallib:
648 $(MAKE) -C hal/hal
649
650 hallib_implib:
651 $(MAKE) -C hal/hal implib
652
653 hallib_clean:
654 $(MAKE) -C hal/hal clean
655
656 hallib_install:
657 $(MAKE) -C hal/hal install
658
659 hallib_bootcd:
660 $(MAKE) -C hal/hal bootcd
661
662 .PHONY: hallib hallib_implib hallib_clean hallib_install hallib_bootcd
663
664
665 #
666 # Hardware Abstraction Layers
667 #
668 $(HALS): %:
669 $(MAKE) -C hal/$*
670
671 $(HALS:%=%_implib): %_implib:
672 $(MAKE) -C hal/$* implib
673
674 $(HALS:%=%_clean): %_clean:
675 $(MAKE) -C hal/$* clean
676
677 $(HALS:%=%_install): %_install:
678 $(MAKE) -C hal/$* install
679
680 $(HALS:%=%_bootcd): %_bootcd:
681 $(MAKE) -C hal/$* bootcd
682
683 .PHONY: $(HALS) $(HALS:%=%_implib) $(HALS:%=%_clean) $(HALS:%=%_install) $(HALS:%=%_bootcd)
684
685
686 #
687 # File system libraries
688 #
689 $(LIB_FSLIB): %:
690 $(MAKE) -C lib/fslib/$*
691
692 $(LIB_FSLIB:%=%_depends): %_depends:
693 $(MAKE) -C lib/fslib/$* depends
694
695 $(LIB_FSLIB:%=%_implib): %_implib:
696 $(MAKE) -C lib/fslib/$* implib
697
698 $(LIB_FSLIB:%=%_clean): %_clean:
699 $(MAKE) -C lib/fslib/$* clean
700
701 $(LIB_FSLIB:%=%_install): %_install:
702 $(MAKE) -C lib/fslib/$* install
703
704 $(LIB_FSLIB:%=%_bootcd): %_bootcd:
705 $(MAKE) -C lib/fslib/$* bootcd
706
707 .PHONY: $(LIB_FSLIB) $(LIB_FSLIB:%=%_depends) $(LIB_FSLIB:%=%_implib) $(LIB_FSLIB:%=%_clean) \
708 $(LIB_FSLIB:%=%_install) $(LIB_FSLIB:%=%_bootcd)
709
710
711 #
712 # Static libraries
713 #
714 $(LIB_STATIC): %:
715 $(MAKE) -C lib/$*
716
717 $(LIB_STATIC:%=%_depends): %_depends:
718 $(MAKE) -C lib/string depends
719
720 $(LIB_STATIC:%=%_implib): %_implib:
721 $(MAKE) -C lib/$* implib
722
723 $(LIB_STATIC:%=%_clean): %_clean:
724 $(MAKE) -C lib/$* clean
725
726 $(LIB_STATIC:%=%_install): %_install:
727 $(MAKE) -C lib/$* install
728
729 $(LIB_STATIC:%=%_bootcd): %_bootcd:
730 $(MAKE) -C lib/$* bootcd
731
732 .PHONY: $(LIB_STATIC) $(LIB_STATIC:%=%_depends) $(LIB_STATIC:%=%_implib) $(LIB_STATIC:%=%_clean) \
733 $(LIB_STATIC:%=%_install) $(LIB_STATIC:%=%_bootcd)
734
735
736 #
737 # DLLs
738 #
739 $(DLLS): %:
740 $(MAKE) -C lib/$*
741
742 $(DLLS:%=%_depends): %_depends:
743 $(MAKE) -C lib/$* depends
744
745 $(DLLS:%=%_implib): %_implib:
746 $(MAKE) -C lib/$* implib
747
748 $(DLLS:%=%_clean): %_clean:
749 $(MAKE) -C lib/$* clean
750
751 $(DLLS:%=%_install): %_install:
752 $(MAKE) -C lib/$* install
753
754 $(DLLS:%=%_bootcd): %_bootcd:
755 $(MAKE) -C lib/$* bootcd
756
757 .PHONY: $(DLLS) $(DLLS:%=%_depends) $(DLLS:%=%_implib) $(DLLS:%=%_clean) $(DLLS:%=%_install) \
758 $(DLLS:%=%_bootcd)
759
760
761 #
762 # Subsystem support modules
763 #
764 $(SUBSYS): %:
765 $(MAKE) -C subsys/$*
766
767 $(SUBSYS:%=%_depends): %_depends:
768 $(MAKE) -C subsys/$* depends
769
770 $(SUBSYS:%=%_implib): %_implib:
771 $(MAKE) -C subsys/$* implib
772
773 $(SUBSYS:%=%_clean): %_clean:
774 $(MAKE) -C subsys/$* clean
775
776 $(SUBSYS:%=%_install): %_install:
777 $(MAKE) -C subsys/$* install
778
779 $(SUBSYS:%=%_bootcd): %_bootcd:
780 $(MAKE) -C subsys/$* bootcd
781
782 .PHONY: $(SUBSYS) $(SUBSYS:%=%_depends) $(SUBSYS:%=%_implib) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
783 $(SUBSYS:%=%_bootcd)
784
785 #
786 # Regression testsuite
787 #
788
789 $(REGTESTS): %:
790 $(MAKE) -C regtests
791
792 $(REGTESTS:%=%_clean): %_clean:
793 $(MAKE) -C regtests clean
794
795 $(REGTESTS:%=%_install): %_install:
796 $(MAKE) -C regtests install
797
798 .PHONY: $(REGTESTS) $(REGTESTS:%=%_depends) $(SUBSYS:%=%_clean) $(REGTESTS:%=%_install)
799
800
801 #
802 # Create an installation
803 #
804
805 install_clean:
806 $(RM) $(INSTALL_DIR)/system32/drivers/*.*
807 $(RM) $(INSTALL_DIR)/system32/config/*.*
808 $(RM) $(INSTALL_DIR)/system32/*.*
809 $(RM) $(INSTALL_DIR)/symbols/*.*
810 $(RM) $(INSTALL_DIR)/media/fonts/*.*
811 $(RM) $(INSTALL_DIR)/media/*.*
812 $(RM) $(INSTALL_DIR)/inf/*.*
813 $(RM) $(INSTALL_DIR)/bin/*.*
814 $(RM) $(INSTALL_DIR)/*.com
815 $(RM) $(INSTALL_DIR)/*.bat
816 $(RMDIR) $(INSTALL_DIR)/system32/drivers
817 $(RMDIR) $(INSTALL_DIR)/system32/config
818 $(RMDIR) $(INSTALL_DIR)/system32
819 $(RMDIR) $(INSTALL_DIR)/symbols
820 $(RMDIR) $(INSTALL_DIR)/media/fonts
821 $(RMDIR) $(INSTALL_DIR)/media
822 $(RMDIR) $(INSTALL_DIR)/inf
823 $(RMDIR) $(INSTALL_DIR)/bin
824 $(RMDIR) $(INSTALL_DIR)
825
826 install_dirs:
827 $(RMKDIR) $(INSTALL_DIR)
828 $(RMKDIR) $(INSTALL_DIR)/bin
829 $(RMKDIR) $(INSTALL_DIR)/inf
830 $(RMKDIR) $(INSTALL_DIR)/media
831 $(RMKDIR) $(INSTALL_DIR)/media/fonts
832 $(RMKDIR) $(INSTALL_DIR)/symbols
833 $(RMKDIR) $(INSTALL_DIR)/system32
834 $(RMKDIR) $(INSTALL_DIR)/system32/config
835 $(RMKDIR) $(INSTALL_DIR)/system32/drivers
836 $(RMKDIR) $(INSTALL_DIR)/system32/drivers/etc
837
838 install_before:
839 $(CP) bootc.lst $(INSTALL_DIR)/bootc.lst
840 $(CP) boot.bat $(INSTALL_DIR)/boot.bat
841 $(CP) aboot.bat $(INSTALL_DIR)/aboot.bat
842 $(CP) media/inf $(INSTALL_DIR)/inf
843 $(CP) media/fonts $(INSTALL_DIR)/media/fonts
844 $(CP) media/nls $(INSTALL_DIR)/system32
845 $(CP) media/nls/c_1252.nls $(INSTALL_DIR)/system32/ansi.nls
846 $(CP) media/nls/c_437.nls $(INSTALL_DIR)/system32/oem.nls
847 $(CP) media/nls/l_intl.nls $(INSTALL_DIR)/system32/casemap.nls
848 $(CP) media/drivers/etc/services \
849 $(INSTALL_DIR)/system32/drivers/etc/services
850
851 .PHONY: install_clean install_dirs install_before
852
853
854 etags:
855 find . -name "*.[ch]" -print | etags --language=c -
856
857
858 docu:
859 echo generating ReactOS NTOSKRNL documentation ...
860 $(MAKE) -C ntoskrnl docu
861
862 echo generating ReactOS drivers documentation ...
863 $(MAKE) -C drivers docu
864
865 echo generating ReactOS NTDLL documentation ...
866 $(MAKE) -C lib/ntdll docu
867
868 echo generating ReactOS Freetype documentation ...
869 $(MAKE) -C lib/freetype docu
870
871 echo generating ReactOS libs documentation ...
872 $(MAKE) -C lib docu
873
874 echo generating ReactOS WIN32K documentation ...
875 $(MAKE) -C subsys/win32k docu
876
877 echo generating ReactOS apps+tools documentation ...
878 $(MAKE) -C apps docu
879
880 echo generating ReactOS explorer documentation ...
881 $(MAKE) -C subsys/system/explorer full-docu
882
883 echo generating remaining ReactOS documentation ...
884 doxygen Doxyfile
885
886 .PHONY: docu
887
888
889 # EOF
890