7 include $(PATH_TO_TOP
)/rules.mak
10 # Required to run the system
12 COMPONENTS
= iface_native iface_additional hallib ntoskrnl
15 DLLS
= ntdll kernel32 advapi32 crtdll msvcrt fmifs gdi32 msafd \
16 ole32 oleaut32 secur32 shell32 user32 ws2_32 version
17 SUBSYS
= smss win32k csrss
20 # Select the server(s) you want to build
22 #SERVERS = posix linux os2
26 # Select the loader(s) you want to build
32 # Select the device drivers and filesystems you want
34 #DEVICE_DRIVERS = beep floppy mouse sound test parallel serial
35 DEVICE_DRIVERS
= vidport vga blue ide null floppy
37 #INPUT_DRIVERS = keyboard
38 INPUT_DRIVERS
= keyboard mouclass psaux
40 #FS_DRIVERS = vfat minix ext2 template
41 FS_DRIVERS
= vfat ms np
43 #NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
44 NET_DRIVERS
= ndis tdi tcpip tditest wshtcpip afd
46 #NET_DEVICE_DRIVERS = ne2000
47 NET_DEVICE_DRIVERS
= ne2000
50 # storage drivers (don't change the order)
52 STORAGE_DRIVERS
= class2 scsiport disk
55 # system applications (required for startup)
57 #SYS_APPS = lsass services shell winlogon
58 SYS_APPS
= services
shell winlogon
60 APPS
= args hello
test cat bench apc shm lpc thread event file gditest \
61 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
64 #NET_APPS = ping roshttpd telnet
65 NET_APPS
= ping roshttpd
68 KERNEL_SERVICES
= $(DEVICE_DRIVERS
) $(INPUT_DRIVERS
) $(FS_DRIVERS
) \
69 $(NET_DRIVERS
) $(NET_DEVICE_DRIVERS
) $(STORAGE_DRIVERS
)
71 all: tools buildno dk
$(COMPONENTS
) $(HALS
) $(BUS
) $(DLLS
) $(SUBSYS
) \
72 $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) $(NET_APPS
)
74 clean: buildno_clean dk_clean
$(HALS
:%=%_clean
) \
75 $(COMPONENTS
:%=%_clean
) $(BUS
:%=%_clean
) $(DLLS
:%=%_clean
) \
76 $(LOADERS
:%=%_clean
) $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) \
77 $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
) $(NET_APPS
:%=%_clean
) clean_after tools_clean
80 $(RM
) $(PATH_TO_TOP
)/include/roscfg.h
82 install: tools buildno install_dirs install_before \
83 $(COMPONENTS
:%=%_install
) $(HALS
:%=%_install
) $(BUS
:%=%_install
) \
84 $(DLLS
:%=%_install
) $(LOADERS
:%=%_install
) \
85 $(KERNEL_SERVICES
:%=%_install
) $(SUBSYS
:%=%_install
) \
86 $(SYS_APPS
:%=%_install
) $(APPS
:%=%_install
)
88 dist: $(TOOLS_PATH
)/rcopy
$(EXE_POSTFIX
) dist_clean dist_dirs \
89 $(HALS
:%=%_dist
) $(COMPONENTS
:%=%_dist
) $(BUS
:%=%_dist
) $(DLLS
:%=%_dist
) \
90 $(LOADERS
:%=%_dist
) $(KERNEL_SERVICES
:%=%_dist
) $(SUBSYS
:%=%_dist
) \
91 $(SYS_APPS
:%=%_dist
) $(APPS
:%=%_dist
) $(NET_APPS
:%=%_dist
)
93 .PHONY
: all clean clean_before
install dist
96 # Build number generator
98 buildno
: include/reactos
/version.h
102 make
-C apps
/buildno
clean
108 .PHONY
: buildno buildno_clean buildno_dist buildno_install
111 # System Applications
114 make
-C apps
/system
/$*
116 $(SYS_APPS
:%=%_clean
): %_clean
:
117 make
-C apps
/system
/$* clean
119 $(SYS_APPS
:%=%_dist
): %_dist
:
120 make
-C apps
/system
/$* dist
122 $(SYS_APPS
:%=%_install
): %_install
:
123 make
-C apps
/system
/$* install
125 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
133 $(APPS
:%=%_clean
): %_clean
:
134 make
-C apps
/$* clean
136 $(APPS
:%=%_dist
): %_dist
:
139 $(APPS
:%=%_install
): %_install
:
140 make
-C apps
/$* install
142 .PHONY
: $(APPS
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
145 # Network applications
150 $(NET_APPS
:%=%_clean
): %_clean
:
151 make
-C apps
/net
/$* clean
153 $(NET_APPS
:%=%_dist
): %_dist
:
154 make
-C apps
/net
/$* dist
156 $(NET_APPS
:%=%_install
): %_install
:
157 make
-C apps
/net
/$* install
159 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
175 .PHONY
: tools tools_clean tools_install tools_dist
183 $(RMKDIR
) $(DDK_PATH
)
184 $(RMKDIR
) $(DDK_PATH_LIB
)
185 $(RMKDIR
) $(DDK_PATH_INC
)
186 $(RMKDIR
) $(SDK_PATH
)
187 $(RMKDIR
) $(SDK_PATH_LIB
)
188 $(RMKDIR
) $(SDK_PATH_INC
)
189 $(RMKDIR
) $(XDK_PATH
)
190 $(RMKDIR
) $(XDK_PATH_LIB
)
191 $(RMKDIR
) $(XDK_PATH_INC
)
193 # WARNING! Be very sure that there are no important files
194 # in these directories before cleaning them!!!
196 $(RM
) $(DDK_PATH_LIB
)/*.a
197 # $(RM) $(DDK_PATH_INC)/*.h
198 $(RMDIR
) $(DDK_PATH_LIB
)
199 # $(RMDIR) $(DDK_PATH_INC)
200 $(RM
) $(SDK_PATH_LIB
)/*.a
201 # $(RM) $(SDK_PATH_INC)/*.h
202 $(RMDIR
) $(SDK_PATH_LIB
)
203 # $(RMDIR) $(SDK_PATH_INC)
204 $(RM
) $(XDK_PATH_LIB
)/*.a
205 # $(RM) $(XDK_PATH_INC)/*.h
206 $(RMDIR
) $(XDK_PATH_LIB
)
207 # $(RMDIR) $(XDK_PATH_INC)
213 .PHONY
: dk dk_clean dk_install dk_dist
223 make
-C iface
/native
clean
225 iface_native_install
:
232 iface_additional_clean
:
233 make
-C iface
/addsys
clean
235 iface_additional_install
:
237 iface_additional_dist
:
239 .PHONY
: iface_native iface_native_clean iface_native_install \
241 iface_additional iface_additional_clean iface_additional_install \
242 iface_additional_dist
248 make
-C services
/bus
/$*
250 $(BUS
:%=%_clean
): %_clean
:
251 make
-C services
/bus
/$* clean
253 $(BUS
:%=%_install
): %_install
:
254 make
-C services
/bus
/$* install
256 $(BUS
:%=%_dist
): %_dist
:
257 make
-C services
/bus
/$* dist
259 .PHONY
: $(BUS
) $(BUS
:%=%_clean
) \
260 $(BUS
:%=%_install
) $(BUS
:%=%_dist
)
263 # Device driver rules
265 $(DEVICE_DRIVERS
): %:
266 make
-C services
/dd
/$*
268 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
269 make
-C services
/dd
/$* clean
271 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
272 make
-C services
/dd
/$* install
274 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
275 make
-C services
/dd
/$* dist
277 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_clean
) \
278 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
284 make
-C services
/input
/$*
286 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
287 make
-C services
/input
/$* clean
289 $(INPUT_DRIVERS
:%=%_install
): %_install
:
290 make
-C services
/input
/$* install
292 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
293 make
-C services
/input
/$* dist
295 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_clean
) \
296 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
299 make
-C services
/fs
/$*
301 $(FS_DRIVERS
:%=%_clean
): %_clean
:
302 make
-C services
/fs
/$* clean
304 $(FS_DRIVERS
:%=%_install
): %_install
:
305 make
-C services
/fs
/$* install
307 $(FS_DRIVERS
:%=%_dist
): %_dist
:
308 make
-C services
/fs
/$* dist
310 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_clean
) \
311 $(FS_DRIVERS
:%=%_install
) $(FS_DRIVERS
:%=%_dist
)
314 # Network driver rules
317 make
-C services
/net
/$*
319 $(NET_DRIVERS
:%=%_clean
): %_clean
:
320 make
-C services
/net
/$* clean
322 $(NET_DRIVERS
:%=%_install
): %_install
:
323 make
-C services
/net
/$* install
325 $(NET_DRIVERS
:%=%_dist
): %_dist
:
326 make
-C services
/net
/$* dist
328 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_clean
) \
329 $(NET_DRIVERS
:%=%_install
) $(NET_DRIVERS
:%=%_dist
)
331 $(NET_DEVICE_DRIVERS
): %:
332 make
-C services
/net
/dd
/$*
334 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
335 make
-C services
/net
/dd
/$* clean
337 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
338 make
-C services
/net
/dd
/$* install
340 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
341 make
-C services
/net
/dd
/$* dist
343 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) \
344 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
347 # storage driver rules
349 $(STORAGE_DRIVERS
): %:
350 make
-C services
/storage
/$*
352 $(STORAGE_DRIVERS
:%=%_clean
): %_clean
:
353 make
-C services
/storage
/$* clean
355 $(STORAGE_DRIVERS
:%=%_install
): %_install
:
356 make
-C services
/storage
/$* install
358 $(STORAGE_DRIVERS
:%=%_dist
): %_dist
:
359 make
-C services
/storage
/$* dist
361 .PHONY
: $(STORAGE_DRIVERS
) $(STORAGE_DRIVERS
:%=%_clean
) \
362 $(STORAGE_DRIVERS
:%=%_install
) $(STORAGE_DRIVERS
:%=%_dist
)
371 $(LOADERS
:%=%_clean
): %_clean
:
372 make
-C loaders
/$* clean
374 $(LOADERS
:%=%_install
): %_install
:
375 make
-C loaders
/$* install
377 $(LOADERS
:%=%_dist
): %_dist
:
378 make
-C loaders
/$* dist
380 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
384 # Required system components
391 make
-C ntoskrnl
clean
394 make
-C ntoskrnl
install
397 make
-C ntoskrnl
dist
399 .PHONY
: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
402 # Hardware Abstraction Layer import library
409 make
-C hal
/hal
clean
412 make
-C hal
/hal
install
417 .PHONY
: hallib hallib_clean hallib_install hallib_dist
420 # Hardware Abstraction Layers
426 $(HALS
:%=%_clean
): %_clean
:
429 $(HALS
:%=%_install
): %_install
:
430 make
-C hal
/$* install
432 $(HALS
:%=%_dist
): %_dist
:
435 .PHONY
: $(HALS
) $(HALS
:%=%_clean
) $(HALS
:%=%_install
) $(HALS
:%=%_dist
)
444 $(DLLS
:%=%_clean
): %_clean
:
447 $(DLLS
:%=%_install
): %_install
:
448 make
-C lib
/$* install
450 $(DLLS
:%=%_dist
): %_dist
:
453 .PHONY
: $(DLLS
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
462 $(SUBSYS
:%=%_clean
): %_clean
:
463 make
-C subsys
/$* clean
465 $(SUBSYS
:%=%_install
): %_install
:
466 make
-C subsys
/$* install
468 $(SUBSYS
:%=%_dist
): %_dist
:
469 make
-C subsys
/$* dist
471 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
475 # Create an installation
479 $(RM
) $(INSTALL_DIR
)/system32
/drivers
/*.
*
480 $(RM
) $(INSTALL_DIR
)/system32
/config
/*.
*
481 $(RM
) $(INSTALL_DIR
)/system32
/*.
*
482 $(RM
) $(INSTALL_DIR
)/symbols
/*.
*
483 $(RM
) $(INSTALL_DIR
)/media
/fonts
/*.
*
484 $(RM
) $(INSTALL_DIR
)/media
/*.
*
485 $(RM
) $(INSTALL_DIR
)/bin
/*.
*
486 $(RM
) $(INSTALL_DIR
)/*.com
487 $(RM
) $(INSTALL_DIR
)/*.bat
488 $(RMDIR
) $(INSTALL_DIR
)/system32
/drivers
489 $(RMDIR
) $(INSTALL_DIR
)/system32
/config
490 $(RMDIR
) $(INSTALL_DIR
)/system32
491 $(RMDIR
) $(INSTALL_DIR
)/symbols
492 $(RMDIR
) $(INSTALL_DIR
)/media
/fonts
493 $(RMDIR
) $(INSTALL_DIR
)/media
494 $(RMDIR
) $(INSTALL_DIR
)/bin
495 $(RMDIR
) $(INSTALL_DIR
)
498 $(RMKDIR
) $(INSTALL_DIR
)
499 $(RMKDIR
) $(INSTALL_DIR
)/bin
500 $(RMKDIR
) $(INSTALL_DIR
)/media
501 $(RMKDIR
) $(INSTALL_DIR
)/media
/fonts
502 $(RMKDIR
) $(INSTALL_DIR
)/symbols
503 $(RMKDIR
) $(INSTALL_DIR
)/system32
504 $(RMKDIR
) $(INSTALL_DIR
)/system32
/config
505 $(RMKDIR
) $(INSTALL_DIR
)/system32
/drivers
508 $(CP
) boot.bat
$(INSTALL_DIR
)/boot.bat
509 $(CP
) media
/fonts
/helb____.ttf
$(INSTALL_DIR
)/media
/fonts
/helb____.ttf
510 $(CP
) media
/fonts
/timr____.ttf
$(INSTALL_DIR
)/media
/fonts
/timr____.ttf
512 .PHONY
: install_clean install_dirs install_before
516 # Make a distribution saveset
520 $(RM
) $(DIST_DIR
)/symbols
/*.sym
521 $(RM
) $(DIST_DIR
)/drivers
/*.sys
522 $(RM
) $(DIST_DIR
)/subsys
/*.exe
523 $(RM
) $(DIST_DIR
)/dlls
/*.dll
524 $(RM
) $(DIST_DIR
)/apps
/*.exe
525 $(RM
) $(DIST_DIR
)/*.exe
526 $(RMDIR
) $(DIST_DIR
)/symbols
527 $(RMDIR
) $(DIST_DIR
)/subsys
528 $(RMDIR
) $(DIST_DIR
)/drivers
529 $(RMDIR
) $(DIST_DIR
)/dlls
530 $(RMDIR
) $(DIST_DIR
)/apps
534 $(RMKDIR
) $(DIST_DIR
)
535 $(RMKDIR
) $(DIST_DIR
)/apps
536 $(RMKDIR
) $(DIST_DIR
)/dlls
537 $(RMKDIR
) $(DIST_DIR
)/drivers
538 $(RMKDIR
) $(DIST_DIR
)/subsys
539 $(RMKDIR
) $(DIST_DIR
)/symbols
541 .PHONY
: dist_clean dist_dirs
545 find .
-name
"*.[ch]" -print | etags
--language
=c
-