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