2004-07-23 Casper S. Hornstrup <chorns@users.sourceforge.net>
[reactos.git] / reactos / Makefile
1 # $Id: Makefile,v 1.238 2004/07/23 20:03:24 chorns 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 # libpcap packet epsapi
45 DLLS = acledit advapi32 cabinet cards comctl32 crtdll comdlg32 d3d8thk expat fmifs freetype \
46 gdi32 imagehlp imm32 iphlpapi kernel32 lzexpand mpr msacm msafd msgina msimg32 msvcrt \
47 msvcrt20 msvideo mswsock netapi32 ntdll ole32 oleaut32 oledlg packet psapi richedit \
48 rpcrt4 samlib secur32 setupapi shell32 shlwapi snmpapi syssetup twain unicode user32 \
49 userenv version wininet winmm winspool ws2help ws2_32 wsock32 wshirda \
50 $(DLLS_KBD) $(DLLS_CPL)
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 oskittcp
66 DRIVERS_LIB = bzip2 oskittcp csq
67
68 # Kernel mode device drivers
69 # Obsolete: ide
70 # beep blue floppy null parallel ramdrv serenum serial
71 DEVICE_DRIVERS = beep blue debugout null serial 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 floppy scsiport diskdump
91
92 # System applications
93 # autochk cmd format services setup usetup welcome winlogon
94 SYS_APPS = autochk cmd explorer expand format services setup taskmgr userinit usetup welcome vmwinst winlogon regedit
95
96 # System services
97 # rpcss eventlog
98 SYS_SVC = rpcss eventlog
99
100 APPS = tests testsets utils
101
102
103 # External modules and (sub)systems for ReactOS
104 # rosapps posix os2 (requires c++) java (non-existant)
105 EXTERNALS = rosapps
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) VIDEO_DRIVERS
115
116 # Regression tests
117 REGTESTS = regtests
118
119 all: tools dk implib $(LIB_STATIC) $(COMPONENTS) $(REGTESTS) $(HALS) $(BUS) $(LIB_FSLIB) $(DLLS) $(SUBSYS) \
120 $(LOADERS) $(KERNEL_DRIVERS) $(SYS_APPS) $(SYS_SVC) \
121 $(APPS) $(EXT_MODULES)
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_SVC:%=%_implib) $(EXT_MODULES:%=%_implib)
132
133 test: $(COMPONENTS:%=%_test) $(HALS:%=%_test) $(BUS:%=%_test) \
134 $(LIB_STATIC:%=%_test) $(LIB_FSLIB:%=%_test) $(DLLS:%=%_test) $(LOADERS:%=%_test) \
135 $(KERNEL_DRIVERS:%=%_test) $(SUBSYS:%=%_test) \
136 $(SYS_SVC:%=%_test) $(EXT_MODULES:%=%_test)
137
138 clean: tools dk_clean $(HALS:%=%_clean) \
139 $(COMPONENTS:%=%_clean) $(BUS:%=%_clean) $(LIB_STATIC:%=%_clean) $(LIB_FSLIB:%=%_clean) $(DLLS:%=%_clean) \
140 $(LOADERS:%=%_clean) $(KERNEL_DRIVERS:%=%_clean) $(SUBSYS:%=%_clean) \
141 $(SYS_APPS:%=%_clean) $(SYS_SVC:%=%_clean) \
142 $(NET_APPS:%=%_clean) \
143 $(APPS:%=%_clean) $(EXT_MODULES:%=%_clean) $(REGTESTS:%=%_clean) \
144 clean_after tools_clean
145
146 clean_after:
147 $(RM) $(PATH_TO_TOP)/include/roscfg.h
148
149 fastinstall: tools install_dirs install_before \
150 $(COMPONENTS:%=%_install) $(HALS:%=%_install) $(BUS:%=%_install) \
151 $(LIB_STATIC:%=%_install) $(LIB_FSLIB:%=%_install) $(DLLS:%=%_install) $(LOADERS:%=%_install) \
152 $(KERNEL_DRIVERS:%=%_install) $(SUBSYS:%=%_install) \
153 $(SYS_APPS:%=%_install) $(SYS_SVC:%=%_install) \
154 $(APPS:%=%_install) $(EXT_MODULES:%=%_install) $(REGTESTS:%=%_install)
155 install: fastinstall registry
156
157 FREELDR_DIR = ../freeldr
158
159 freeldr:
160 $(MAKE) -C $(FREELDR_DIR)
161
162 bootcd_directory_layout:
163 $(RMKDIR) $(BOOTCD_DIR)
164 $(RMKDIR) $(BOOTCD_DIR)/bootdisk
165 $(RMKDIR) $(BOOTCD_DIR)/loader
166 $(RMKDIR) $(BOOTCD_DIR)/reactos
167 $(RMKDIR) $(BOOTCD_DIR)/reactos/system32
168 $(CP) ${FREELDR_DIR}/bootsect/isoboot.bin ${BOOTCD_DIR}/../isoboot.bin
169 $(CP) ${FREELDR_DIR}/bootsect/dosmbr.bin ${BOOTCD_DIR}/loader/dosmbr.bin
170 $(CP) ${FREELDR_DIR}/bootsect/ext2.bin ${BOOTCD_DIR}/loader/ext2.bin
171 $(CP) ${FREELDR_DIR}/bootsect/fat.bin ${BOOTCD_DIR}/loader/fat.bin
172 $(CP) ${FREELDR_DIR}/bootsect/fat32.bin ${BOOTCD_DIR}/loader/fat32.bin
173 $(CP) ${FREELDR_DIR}/bootsect/isoboot.bin ${BOOTCD_DIR}/loader/isoboot.bin
174 $(CP) ${FREELDR_DIR}/freeldr/obj/i386/freeldr.sys ${BOOTCD_DIR}/loader/freeldr.sys
175 $(CP) ${FREELDR_DIR}/freeldr/obj/i386/setupldr.sys ${BOOTCD_DIR}/loader/setupldr.sys
176
177 bootcd_bootstrap_files: $(COMPONENTS:%=%_bootcd) $(HALS:%=%_bootcd) $(BUS:%=%_bootcd) \
178 $(LIB_STATIC:%=%_bootcd) $(LIB_FSLIB:%=%_bootcd) $(DLLS:%=%_bootcd) $(KERNEL_DRIVERS:%=%_bootcd) \
179 $(SUBSYS:%=%_bootcd) $(SYS_APPS:%=%_bootcd)
180
181 bootcd_install_before:
182 $(RLINE) bootdata/autorun.inf $(BOOTCD_DIR)/autorun.inf
183 $(RLINE) bootdata/readme.txt $(BOOTCD_DIR)/readme.txt
184 $(RLINE) bootdata/hivecls.inf $(BOOTCD_DIR)/reactos/hivecls.inf
185 $(RLINE) bootdata/hivedef.inf $(BOOTCD_DIR)/reactos/hivedef.inf
186 $(RLINE) bootdata/hivesft.inf $(BOOTCD_DIR)/reactos/hivesft.inf
187 $(RLINE) bootdata/hivesys.inf $(BOOTCD_DIR)/reactos/hivesys.inf
188 $(RLINE) bootdata/txtsetup.sif $(BOOTCD_DIR)/reactos/txtsetup.sif
189 $(CP) bootdata/icon.ico $(BOOTCD_DIR)/icon.ico
190 $(CP) subsys/system/welcome/welcome.exe $(BOOTCD_DIR)/reactos/welcome.exe
191 $(CP) media/nls/c_1252.nls $(BOOTCD_DIR)/reactos/c_1252.nls
192 $(CP) media/nls/c_437.nls $(BOOTCD_DIR)/reactos/c_437.nls
193 $(CP) media/nls/l_intl.nls $(BOOTCD_DIR)/reactos/l_intl.nls
194 $(CP) media/drivers/etc/services $(BOOTCD_DIR)/reactos/services
195
196 bootcd_basic: bootcd_directory_layout bootcd_bootstrap_files bootcd_install_before
197
198 bootcd_makecd:
199 $(CABMAN) /C bootdata/packages/reactos.dff /L $(BOOTCD_DIR)/reactos /I
200 $(CABMAN) /C bootdata/packages/reactos.dff /RC $(BOOTCD_DIR)/reactos/reactos.inf /L $(BOOTCD_DIR)/reactos /N
201 - $(RM) $(BOOTCD_DIR)/reactos/reactos.inf
202 $(CDMAKE) -v -m -b $(BOOTCD_DIR)/../isoboot.bin $(BOOTCD_DIR) REACTOS ReactOS.iso
203
204 ubootcd_unattend:
205 $(CP) bootdata/unattend.inf $(BOOTCD_DIR)/reactos/unattend.inf
206
207 livecd_directory_layout:
208 $(RMKDIR) $(LIVECD_DIR)
209 $(RMKDIR) $(LIVECD_DIR)/loader
210 $(RMKDIR) $(LIVECD_DIR)/reactos
211 $(RMKDIR) $(LIVECD_DIR)/Profiles/All\ Users/Desktop
212 $(RMKDIR) $(LIVECD_DIR)/Profiles/Default\ User/Desktop
213 $(RMKDIR) $(LIVECD_DIR)/Profiles/Default\ User/My\ Documents
214 $(CP) ${FREELDR_DIR}/bootsect/isoboot.bin ${LIVECD_DIR}/../isoboot.bin
215 $(CP) ${FREELDR_DIR}/freeldr/obj/i386/freeldr.sys ${LIVECD_DIR}/loader/setupldr.sys
216 $(RLINE) bootdata/livecd.ini $(LIVECD_DIR)/freeldr.ini
217
218 livecd_bootstrap_files:
219 $(MAKE) LIVECD_INSTALL=yes fastinstall
220
221 livecd_install_before:
222 $(MKHIVE) bootdata $(LIVECD_DIR)/reactos/system32/config bootdata/livecd.inf bootdata/hiveinst.inf
223
224 livecd_basic: livecd_directory_layout livecd_bootstrap_files livecd_install_before
225
226 livecd_makecd:
227 $(CDMAKE) -m -j -b $(LIVECD_DIR)/../isoboot.bin $(LIVECD_DIR) REACTOS roslive.iso
228
229 bootcd: bootcd_basic bootcd_makecd
230
231 ubootcd: bootcd_basic ubootcd_unattend bootcd_makecd
232
233 livecd: livecd_basic livecd_makecd
234
235 registry: tools
236 $(MKHIVE) bootdata $(INSTALL_DIR)/system32/config bootdata/hiveinst.inf
237
238 .PHONY: all depends implib test clean clean_before install freeldr bootcd_directory_layout \
239 bootcd_bootstrap_files bootcd_install_before bootcd_basic bootcd_makecd ubootcd_unattend bootcd
240
241
242 #
243 # System Applications
244 #
245 $(SYS_APPS): %:
246 $(MAKE) -C subsys/system/$*
247
248 $(SYS_APPS:%=%_implib): %_implib:
249 $(MAKE) -C subsys/system/$* implib
250
251 $(SYS_APPS:%=%_test): %_test:
252 $(MAKE) -C subsys/system/$* test
253
254 $(SYS_APPS:%=%_clean): %_clean:
255 $(MAKE) -C subsys/system/$* clean
256
257 $(SYS_APPS:%=%_install): %_install:
258 $(MAKE) -C subsys/system/$* install
259
260 $(SYS_APPS:%=%_bootcd): %_bootcd:
261 $(MAKE) -C subsys/system/$* bootcd
262
263 .PHONY: $(SYS_APPS) $(SYS_APPS:%=%_implib) $(SYS_APPS:%=%_test) \
264 $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_bootcd)
265
266 #
267 # System Services
268 #
269 $(SYS_SVC): %:
270 $(MAKE) -C services/$*
271
272 $(SYS_SVC:%=%_depends): %_depends:
273 $(MAKE) -C services/$* depends
274
275 $(SYS_SVC:%=%_implib): %_implib:
276 $(MAKE) -C services/$* implib
277
278 $(SYS_SVC:%=%_test): %_test:
279 $(MAKE) -C services/$* test
280
281 $(SYS_SVC:%=%_clean): %_clean:
282 $(MAKE) -C services/$* clean
283
284 $(SYS_SVC:%=%_install): %_install:
285 $(MAKE) -C services/$* install
286
287 .PHONY: $(SYS_SVC) $(SYS_SVC:%=%_depends) $(SYS_SVC:%=%_implib) \
288 $(SYS_SVC:%=%_test) $(SYS_SVC:%=%_clean) $(SYS_SVC:%=%_install)
289
290
291 #
292 # Applications
293 #
294 #
295 # Extra (optional system) Applications
296 #
297 $(APPS): %:
298 $(MAKE) -C apps/$*
299
300 # Not needed
301 # $(APPS:%=%_implib): %_implib:
302 # $(MAKE) -C apps/$* implib
303
304 $(APPS:%=%_test): %_test:
305 $(MAKE) -C apps/$* test
306
307 $(APPS:%=%_clean): %_clean:
308 $(MAKE) -C apps/$* clean
309
310 $(APPS:%=%_install): %_install:
311 $(MAKE) -C apps/$* install
312
313 .PHONY: $(APPS) $(APPS:%=%_test) $(APPS:%=%_clean) $(APPS:%=%_install)
314
315
316 #
317 # External ports and subsystem personalities
318 #
319 $(EXTERNALS): %:
320 $(MAKE) -C $(ROOT_PATH)/$*
321
322 $(EXTERNALS:%=%_depends): %_depends:
323 $(MAKE) -C $(ROOT_PATH)/$* depends
324
325 $(EXTERNALS:%=%_implib): %_implib:
326 $(MAKE) -C $(ROOT_PATH)/$* implib
327
328 $(EXTERNALS:%=%_clean): %_clean:
329 $(MAKE) -C $(ROOT_PATH)/$* clean
330
331 $(EXTERNALS:%=%_install): %_install:
332 $(MAKE) -C $(ROOT_PATH)/$* install
333
334 .PHONY: $(EXTERNALS) $(EXTERNALS:%=%_depends) $(EXTERNALS:%=%_implib) $(EXTERNALS:%=%_clean) $(EXTERNALS:%=%_install)
335
336
337 #
338 # Tools
339 #
340 tools:
341 $(MAKE) -C tools
342
343 tools_implib:
344
345
346 tools_test:
347
348
349 tools_clean:
350 $(MAKE) -C tools clean
351
352 tools_install:
353
354 .PHONY: tools tools_implib tools_test tools_clean tools_install
355
356
357 #
358 # Developer Kits
359 #
360 dk:
361 $(RMKDIR) $(DK_PATH)
362 $(RMKDIR) $(DDK_PATH)
363 $(RMKDIR) $(DDK_PATH_LIB)
364 $(RMKDIR) $(DDK_PATH_INC)
365 $(RMKDIR) $(SDK_PATH)
366 $(RMKDIR) $(SDK_PATH_LIB)
367 $(RMKDIR) $(SDK_PATH_INC)
368 $(RMKDIR) $(XDK_PATH)
369 $(RMKDIR) $(XDK_PATH_LIB)
370 $(RMKDIR) $(XDK_PATH_INC)
371
372 dk_implib:
373
374 # WARNING! Be very sure that there are no important files
375 # in these directories before cleaning them!!!
376 dk_clean:
377 $(RM) $(DDK_PATH_LIB)/*.a
378 # $(RM) $(DDK_PATH_INC)/*.h
379 $(RMDIR) $(DDK_PATH_LIB)
380 # $(RMDIR) $(DDK_PATH_INC)
381 $(RM) $(SDK_PATH_LIB)/*.a
382 # $(RM) $(SDK_PATH_INC)/*.h
383 $(RMDIR) $(SDK_PATH_LIB)
384 # $(RMDIR) $(SDK_PATH_INC)
385 $(RM) $(XDK_PATH_LIB)/*.a
386 # $(RM) $(XDK_PATH_INC)/*.h
387 $(RMDIR) $(XDK_PATH_LIB)
388 # $(RMDIR) $(XDK_PATH_INC)
389
390 dk_install:
391
392 .PHONY: dk dk_implib dk_clean dk_install
393
394
395 #
396 # Interfaces
397 #
398 iface_native:
399 $(MAKE) -C iface/native
400
401 iface_native_implib:
402
403 iface_native_test:
404
405 iface_native_clean:
406 $(MAKE) -C iface/native clean
407
408 iface_native_install:
409
410 iface_native_bootcd:
411
412 iface_additional:
413 $(MAKE) -C iface/addsys
414
415 iface_additional_implib:
416
417 iface_additional_test:
418
419 iface_additional_clean:
420 $(MAKE) -C iface/addsys clean
421
422 iface_additional_install:
423
424 iface_additional_bootcd:
425
426 .PHONY: iface_native iface_native_implib iface_native_test iface_native_clean \
427 iface_native_install iface_native_bootcd iface_additional \
428 iface_additional_implib iface_additional_test iface_additional_clean \
429 iface_additional_install iface_additional_bootcd
430
431
432 #
433 # Bus driver rules
434 #
435 $(BUS): %:
436 $(MAKE) -C drivers/bus/$*
437
438 $(BUS:%=%_implib): %_implib:
439 $(MAKE) -C drivers/bus/$* implib
440
441 $(BUS:%=%_test): %_test:
442 $(MAKE) -C drivers/bus/$* test
443
444 $(BUS:%=%_clean): %_clean:
445 $(MAKE) -C drivers/bus/$* clean
446
447 $(BUS:%=%_install): %_install:
448 $(MAKE) -C drivers/bus/$* install
449
450 $(BUS:%=%_bootcd): %_bootcd:
451 $(MAKE) -C drivers/bus/$* bootcd
452
453 .PHONY: $(BUS) $(BUS:%=%_implib) $(BUS:%=%_clean) \
454 $(BUS:%=%_install) $(BUS:%=%_bootcd)
455
456
457 #
458 # Driver support libraries rules
459 #
460 $(DRIVERS_LIB): %:
461 $(MAKE) -C drivers/lib/$*
462
463 $(DRIVERS_LIB:%=%_implib): %_implib:
464 $(MAKE) -C drivers/lib/$* implib
465
466 $(DRIVERS_LIB:%=%_test): %_test:
467 $(MAKE) -C drivers/lib/$* test
468
469 $(DRIVERS_LIB:%=%_clean): %_clean:
470 $(MAKE) -C drivers/lib/$* clean
471
472 $(DRIVERS_LIB:%=%_install): %_install:
473 $(MAKE) -C drivers/lib/$* install
474
475 $(DRIVERS_LIB:%=%_bootcd): %_bootcd:
476 $(MAKE) -C drivers/lib/$* bootcd
477
478 .PHONY: $(DRIVERS_LIB) $(DRIVERS_LIB:%=%_implib) $(DRIVERS_LIB:%=%_test) \
479 $(DRIVERS_LIB:%=%_clean) $(DRIVERS_LIB:%=%_install) $(DRIVERS_LIB:%=%_bootcd)
480
481
482 #
483 # Device driver rules
484 #
485 $(DEVICE_DRIVERS): %:
486 $(MAKE) -C drivers/dd/$*
487
488 $(DEVICE_DRIVERS:%=%_implib): %_implib:
489 $(MAKE) -C drivers/dd/$* implib
490
491 $(DEVICE_DRIVERS:%=%_test): %_test:
492 $(MAKE) -C drivers/dd/$* test
493
494 $(DEVICE_DRIVERS:%=%_clean): %_clean:
495 $(MAKE) -C drivers/dd/$* clean
496
497 $(DEVICE_DRIVERS:%=%_install): %_install:
498 $(MAKE) -C drivers/dd/$* install
499
500 $(DEVICE_DRIVERS:%=%_bootcd): %_bootcd:
501 $(MAKE) -C drivers/dd/$* bootcd
502
503 .PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_implib) $(DEVICE_DRIVERS:%=%_test) \
504 $(DEVICE_DRIVERS:%=%_clean) $(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_bootcd)
505
506
507 #
508 # Video device driver rules
509 #
510 VIDEO_DRIVERS:
511 $(MAKE) -C drivers/video
512
513 VIDEO_DRIVERS_implib:
514 $(MAKE) -C drivers/video implib
515
516 VIDEO_DRIVERS_test:
517 $(MAKE) -C drivers/video test
518
519 VIDEO_DRIVERS_clean:
520 $(MAKE) -C drivers/video clean
521
522 VIDEO_DRIVERS_install:
523 $(MAKE) -C drivers/video install
524
525 VIDEO_DRIVERS_bootcd:
526 $(MAKE) -C drivers/video bootcd
527
528 .PHONY: VIDEO_DRIVERS VIDEO_DRIVERS_implib VIDEO_DRIVERS_test\
529 VIDEO_DRIVERS_clean VIDEO_DRIVERS_install VIDEO_DRIVERS_bootcd
530
531
532 #
533 # Input driver rules
534 #
535 $(INPUT_DRIVERS): %:
536 $(MAKE) -C drivers/input/$*
537
538 $(INPUT_DRIVERS:%=%_implib): %_implib:
539 $(MAKE) -C drivers/input/$* implib
540
541 $(INPUT_DRIVERS:%=%_test): %_test:
542 $(MAKE) -C drivers/input/$* test
543
544 $(INPUT_DRIVERS:%=%_clean): %_clean:
545 $(MAKE) -C drivers/input/$* clean
546
547 $(INPUT_DRIVERS:%=%_install): %_install:
548 $(MAKE) -C drivers/input/$* install
549
550 $(INPUT_DRIVERS:%=%_bootcd): %_bootcd:
551 $(MAKE) -C drivers/input/$* bootcd
552
553 .PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_implib) $(INPUT_DRIVERS:%=%_test) \
554 $(INPUT_DRIVERS:%=%_clean) $(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_bootcd)
555
556 #
557 # Filesystem driver rules
558 #
559 $(FS_DRIVERS): %:
560 $(MAKE) -C drivers/fs/$*
561
562 $(FS_DRIVERS:%=%_implib): %_implib:
563 $(MAKE) -C drivers/fs/$* implib
564
565 $(FS_DRIVERS:%=%_test): %_test:
566 $(MAKE) -C drivers/fs/$* test
567
568 $(FS_DRIVERS:%=%_clean): %_clean:
569 $(MAKE) -C drivers/fs/$* clean
570
571 $(FS_DRIVERS:%=%_install): %_install:
572 $(MAKE) -C drivers/fs/$* install
573
574 $(FS_DRIVERS:%=%_bootcd): %_bootcd:
575 $(MAKE) -C drivers/fs/$* bootcd
576
577 .PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_implib) $(FS_DRIVERS:%=%_test) \
578 $(FS_DRIVERS:%=%_clean) $(FS_DRIVERS:%=%_install) $(FS_DRIVERS:%=%_bootcd)
579
580
581 #
582 # Network driver rules
583 #
584 $(NET_DRIVERS): %:
585 $(MAKE) -C drivers/net/$*
586
587 $(NET_DRIVERS:%=%_implib): %_implib:
588 $(MAKE) -C drivers/net/$* implib
589
590 $(NET_DRIVERS:%=%_test): %_test:
591 $(MAKE) -C drivers/net/$* test
592
593 $(NET_DRIVERS:%=%_clean): %_clean:
594 $(MAKE) -C drivers/net/$* clean
595
596 $(NET_DRIVERS:%=%_install): %_install:
597 $(MAKE) -C drivers/net/$* install
598
599 $(NET_DRIVERS:%=%_bootcd): %_bootcd:
600 $(MAKE) -C drivers/net/$* bootcd
601
602 .PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_implib) $(NET_DRIVERS:%=%_test) \
603 $(NET_DRIVERS:%=%_clean) $(NET_DRIVERS:%=%_install) $(NET_DRIVERS:%=%_bootcd)
604
605
606 #
607 # Network device driver rules
608 #
609 $(NET_DEVICE_DRIVERS): %:
610 $(MAKE) -C drivers/net/dd/$*
611
612 $(NET_DEVICE_DRIVERS:%=%_implib): %_implib:
613 $(MAKE) -C drivers/net/dd/$* implib
614
615 $(NET_DEVICE_DRIVERS:%=%_test): %_test:
616 $(MAKE) -C drivers/net/dd/$* test
617
618 $(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
619 $(MAKE) -C drivers/net/dd/$* clean
620
621 $(NET_DEVICE_DRIVERS:%=%_install): %_install:
622 $(MAKE) -C drivers/net/dd/$* install
623
624 $(NET_DEVICE_DRIVERS:%=%_bootcd): %_bootcd:
625 $(MAKE) -C drivers/net/dd/$* bootcd
626
627 .PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) \
628 $(NET_DEVICE_DRIVERS:%=%_implib) $(NET_DEVICE_DRIVERS:%=%_test) \
629 $(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_bootcd)
630
631
632 #
633 # storage driver rules
634 #
635 $(STORAGE_DRIVERS): %:
636 $(MAKE) -C drivers/storage/$*
637
638 $(STORAGE_DRIVERS:%=%_implib): %_implib:
639 $(MAKE) -C drivers/storage/$* implib
640
641 $(STORAGE_DRIVERS:%=%_test): %_test:
642 $(MAKE) -C drivers/storage/$* test
643
644 $(STORAGE_DRIVERS:%=%_clean): %_clean:
645 $(MAKE) -C drivers/storage/$* clean
646
647 $(STORAGE_DRIVERS:%=%_install): %_install:
648 $(MAKE) -C drivers/storage/$* install
649
650 $(STORAGE_DRIVERS:%=%_bootcd): %_bootcd:
651 $(MAKE) -C drivers/storage/$* bootcd
652
653 .PHONY: $(STORAGE_DRIVERS) $(STORAGE_DRIVERS:%=%_clean) \
654 $(STORAGE_DRIVERS:%=%_implib) $(STORAGE_DRIVERS:%=%_test) \
655 $(STORAGE_DRIVERS:%=%_install) $(STORAGE_DRIVERS:%=%_bootcd)
656
657
658 #
659 # Kernel loaders
660 #
661 $(LOADERS): %:
662 $(MAKE) -C loaders/$*
663
664 $(LOADERS:%=%_implib): %_implib:
665
666 $(LOADERS:%=%_test): %_test:
667
668 $(LOADERS:%=%_clean): %_clean:
669 $(MAKE) -C loaders/$* clean
670
671 $(LOADERS:%=%_install): %_install:
672 $(MAKE) -C loaders/$* install
673
674 .PHONY: $(LOADERS) $(LOADERS:%=%_implib) $(LOADERS:%=%_test) \
675 $(LOADERS:%=%_clean) $(LOADERS:%=%_install)
676
677
678 #
679 # Required system components
680 #
681 ntoskrnl:
682 $(MAKE) -C ntoskrnl
683
684 ntoskrnl_implib:
685 $(MAKE) -C ntoskrnl implib
686
687 ntoskrnl_test:
688 $(MAKE) -C ntoskrnl test
689
690 ntoskrnl_clean:
691 $(MAKE) -C ntoskrnl clean
692
693 ntoskrnl_install:
694 $(MAKE) -C ntoskrnl install
695
696 ntoskrnl_bootcd:
697 $(MAKE) -C ntoskrnl bootcd
698
699 .PHONY: ntoskrnl ntoskrnl_implib ntoskrnl_test \
700 ntoskrnl_clean ntoskrnl_install ntoskrnl_bootcd
701
702
703 #
704 # Hardware Abstraction Layer import library
705 #
706 hallib:
707 $(MAKE) -C hal/hal
708
709 hallib_implib:
710 $(MAKE) -C hal/hal implib
711
712 hallib_test:
713 $(MAKE) -C hal/hal test
714
715 hallib_clean:
716 $(MAKE) -C hal/hal clean
717
718 hallib_install:
719 $(MAKE) -C hal/hal install
720
721 hallib_bootcd:
722 $(MAKE) -C hal/hal bootcd
723
724 .PHONY: hallib hallib_implib hallib_test hallib_clean \
725 hallib_install hallib_bootcd
726
727
728 #
729 # Hardware Abstraction Layers
730 #
731 $(HALS): %:
732 $(MAKE) -C hal/$*
733
734 $(HALS:%=%_implib): %_implib:
735 $(MAKE) -C hal/$* implib
736
737 $(HALS:%=%_test): %_test:
738 $(MAKE) -C hal/$* test
739
740 $(HALS:%=%_clean): %_clean:
741 $(MAKE) -C hal/$* clean
742
743 $(HALS:%=%_install): %_install:
744 $(MAKE) -C hal/$* install
745
746 $(HALS:%=%_bootcd): %_bootcd:
747 $(MAKE) -C hal/$* bootcd
748
749 .PHONY: $(HALS) $(HALS:%=%_implib) $(HALS:%=%_test) \
750 $(HALS:%=%_clean) $(HALS:%=%_install) $(HALS:%=%_bootcd)
751
752
753 #
754 # File system libraries
755 #
756 $(LIB_FSLIB): %:
757 $(MAKE) -C lib/fslib/$*
758
759 $(LIB_FSLIB:%=%_depends): %_depends:
760 $(MAKE) -C lib/fslib/$* depends
761
762 $(LIB_FSLIB:%=%_implib): %_implib:
763 $(MAKE) -C lib/fslib/$* implib
764
765 $(LIB_FSLIB:%=%_test): %_test:
766 $(MAKE) -C lib/fslib/$* test
767
768 $(LIB_FSLIB:%=%_clean): %_clean:
769 $(MAKE) -C lib/fslib/$* clean
770
771 $(LIB_FSLIB:%=%_install): %_install:
772 $(MAKE) -C lib/fslib/$* install
773
774 $(LIB_FSLIB:%=%_bootcd): %_bootcd:
775 $(MAKE) -C lib/fslib/$* bootcd
776
777 .PHONY: $(LIB_FSLIB) $(LIB_FSLIB:%=%_depends) $(LIB_FSLIB:%=%_implib) \
778 $(LIB_FSLIB:%=%_test) $(LIB_FSLIB:%=%_clean) \
779 $(LIB_FSLIB:%=%_install) $(LIB_FSLIB:%=%_bootcd)
780
781
782 #
783 # Static libraries
784 #
785 $(LIB_STATIC): %:
786 $(MAKE) -C lib/$*
787
788 $(LIB_STATIC:%=%_depends): %_depends:
789 $(MAKE) -C lib/string depends
790
791 $(LIB_STATIC:%=%_implib): %_implib:
792 $(MAKE) -C lib/$* implib
793
794 $(LIB_STATIC:%=%_test): %_test:
795 $(MAKE) -C lib/$* test
796
797 $(LIB_STATIC:%=%_clean): %_clean:
798 $(MAKE) -C lib/$* clean
799
800 $(LIB_STATIC:%=%_install): %_install:
801 $(MAKE) -C lib/$* install
802
803 $(LIB_STATIC:%=%_bootcd): %_bootcd:
804 $(MAKE) -C lib/$* bootcd
805
806 .PHONY: $(LIB_STATIC) $(LIB_STATIC:%=%_depends) $(LIB_STATIC:%=%_implib) \
807 $(LIB_STATIC:%=%_test) $(LIB_STATIC:%=%_clean) \
808 $(LIB_STATIC:%=%_install) $(LIB_STATIC:%=%_bootcd)
809
810
811 #
812 # DLLs
813 #
814 $(DLLS): %:
815 $(MAKE) -C lib/$*
816
817 $(DLLS:%=%_depends): %_depends:
818 $(MAKE) -C lib/$* depends
819
820 $(DLLS:%=%_implib): %_implib:
821 $(MAKE) -C lib/$* implib
822
823 $(DLLS:%=%_test): %_test:
824 $(MAKE) -C lib/$* test
825
826 $(DLLS:%=%_clean): %_clean:
827 $(MAKE) -C lib/$* clean
828
829 $(DLLS:%=%_install): %_install:
830 $(MAKE) -C lib/$* install
831
832 $(DLLS:%=%_bootcd): %_bootcd:
833 $(MAKE) -C lib/$* bootcd
834
835 .PHONY: $(DLLS) $(DLLS:%=%_depends) $(DLLS:%=%_implib) $(DLLS:%=%_test) \
836 $(DLLS:%=%_clean) $(DLLS:%=%_install) $(DLLS:%=%_bootcd)
837
838
839 #
840 # Subsystem support modules
841 #
842 $(SUBSYS): %:
843 $(MAKE) -C subsys/$*
844
845 $(SUBSYS:%=%_depends): %_depends:
846 $(MAKE) -C subsys/$* depends
847
848 $(SUBSYS:%=%_implib): %_implib:
849 $(MAKE) -C subsys/$* implib
850
851 $(SUBSYS:%=%_test): %_test:
852 $(MAKE) -C subsys/$* test
853
854 $(SUBSYS:%=%_clean): %_clean:
855 $(MAKE) -C subsys/$* clean
856
857 $(SUBSYS:%=%_install): %_install:
858 $(MAKE) -C subsys/$* install
859
860 $(SUBSYS:%=%_bootcd): %_bootcd:
861 $(MAKE) -C subsys/$* bootcd
862
863 .PHONY: $(SUBSYS) $(SUBSYS:%=%_depends) $(SUBSYS:%=%_implib) $(SUBSYS:%=%_test) \
864 $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) $(SUBSYS:%=%_bootcd)
865
866 #
867 # Regression testsuite
868 #
869
870 $(REGTESTS): %:
871 $(MAKE) -C regtests
872
873 $(REGTESTS:%=%_clean): %_clean:
874 $(MAKE) -C regtests clean
875
876 $(REGTESTS:%=%_install): %_install:
877 $(MAKE) -C regtests install
878
879 .PHONY: $(REGTESTS) $(REGTESTS:%=%_depends) $(SUBSYS:%=%_clean) $(REGTESTS:%=%_install)
880
881
882 #
883 # Create an installation
884 #
885
886 install_clean:
887 $(RM) $(INSTALL_DIR)/system32/drivers/*.*
888 $(RM) $(INSTALL_DIR)/system32/config/*.*
889 $(RM) $(INSTALL_DIR)/system32/*.*
890 $(RM) $(INSTALL_DIR)/symbols/*.*
891 $(RM) $(INSTALL_DIR)/media/fonts/*.*
892 $(RM) $(INSTALL_DIR)/media/*.*
893 $(RM) $(INSTALL_DIR)/inf/*.*
894 $(RM) $(INSTALL_DIR)/bin/*.*
895 $(RM) $(INSTALL_DIR)/*.com
896 $(RM) $(INSTALL_DIR)/*.bat
897 $(RMDIR) $(INSTALL_DIR)/system32/drivers
898 $(RMDIR) $(INSTALL_DIR)/system32/config
899 $(RMDIR) $(INSTALL_DIR)/system32
900 $(RMDIR) $(INSTALL_DIR)/symbols
901 $(RMDIR) $(INSTALL_DIR)/media/fonts
902 $(RMDIR) $(INSTALL_DIR)/media
903 $(RMDIR) $(INSTALL_DIR)/inf
904 $(RMDIR) $(INSTALL_DIR)/bin
905 $(RMDIR) $(INSTALL_DIR)
906
907 install_dirs:
908 $(RMKDIR) $(INSTALL_DIR)
909 $(RMKDIR) $(INSTALL_DIR)/bin
910 $(RMKDIR) $(INSTALL_DIR)/inf
911 $(RMKDIR) $(INSTALL_DIR)/media
912 $(RMKDIR) $(INSTALL_DIR)/media/fonts
913 $(RMKDIR) $(INSTALL_DIR)/symbols
914 $(RMKDIR) $(INSTALL_DIR)/system32
915 $(RMKDIR) $(INSTALL_DIR)/system32/config
916 $(RMKDIR) $(INSTALL_DIR)/system32/drivers
917 $(RMKDIR) $(INSTALL_DIR)/system32/drivers/etc
918
919 install_before:
920 $(CP) bootc.lst $(INSTALL_DIR)/bootc.lst
921 $(CP) boot.bat $(INSTALL_DIR)/boot.bat
922 $(CP) aboot.bat $(INSTALL_DIR)/aboot.bat
923 $(CP) media/inf $(INSTALL_DIR)/inf
924 $(CP) media/fonts $(INSTALL_DIR)/media/fonts
925 $(CP) media/nls $(INSTALL_DIR)/system32
926 $(CP) media/nls/c_1252.nls $(INSTALL_DIR)/system32/ansi.nls
927 $(CP) media/nls/c_437.nls $(INSTALL_DIR)/system32/oem.nls
928 $(CP) media/nls/l_intl.nls $(INSTALL_DIR)/system32/casemap.nls
929 $(CP) media/drivers/etc/services \
930 $(INSTALL_DIR)/system32/drivers/etc/services
931
932 .PHONY: install_clean install_dirs install_before
933
934
935 etags:
936 find . -name "*.[ch]" -print | etags --language=c -
937
938
939 docu:
940 echo generating ReactOS NTOSKRNL documentation ...
941 $(MAKE) -C ntoskrnl docu
942
943 echo generating ReactOS drivers documentation ...
944 $(MAKE) -C drivers docu
945
946 echo generating ReactOS NTDLL documentation ...
947 $(MAKE) -C lib/ntdll docu
948
949 echo generating ReactOS Freetype documentation ...
950 $(MAKE) -C lib/freetype docu
951
952 echo generating ReactOS libs documentation ...
953 $(MAKE) -C lib docu
954
955 echo generating ReactOS WIN32K documentation ...
956 $(MAKE) -C subsys/win32k docu
957
958 echo generating ReactOS apps+tools documentation ...
959 $(MAKE) -C apps docu
960
961 echo generating ReactOS explorer documentation ...
962 $(MAKE) -C subsys/system/explorer full-docu
963
964 echo generating remaining ReactOS documentation ...
965 doxygen Doxyfile
966
967 .PHONY: docu