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 user32 oleaut32 secur32 shell32 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 \
62 objdir atomtest winhello partinfo
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 dk
$(COMPONENTS
) $(HALS
) $(BUS
) $(DLLS
) $(SUBSYS
) \
72 $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) $(NET_APPS
)
74 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 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
99 make
-C apps
/system
/$*
101 $(SYS_APPS
:%=%_clean
): %_clean
:
102 make
-C apps
/system
/$* clean
104 $(SYS_APPS
:%=%_dist
): %_dist
:
105 make
-C apps
/system
/$* dist
107 $(SYS_APPS
:%=%_install
): %_install
:
108 make
-C apps
/system
/$* install
110 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
118 $(APPS
:%=%_clean
): %_clean
:
119 make
-C apps
/$* clean
121 $(APPS
:%=%_dist
): %_dist
:
124 $(APPS
:%=%_install
): %_install
:
125 make
-C apps
/$* install
127 .PHONY
: $(APPS
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
130 # Network applications
135 $(NET_APPS
:%=%_clean
): %_clean
:
136 make
-C apps
/net
/$* clean
138 $(NET_APPS
:%=%_dist
): %_dist
:
139 make
-C apps
/net
/$* dist
141 $(NET_APPS
:%=%_install
): %_install
:
142 make
-C apps
/net
/$* install
144 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
160 .PHONY
: tools tools_clean tools_install tools_dist
168 $(RMKDIR
) $(DDK_PATH
)
169 $(RMKDIR
) $(DDK_PATH_LIB
)
170 $(RMKDIR
) $(DDK_PATH_INC
)
171 $(RMKDIR
) $(SDK_PATH
)
172 $(RMKDIR
) $(SDK_PATH_LIB
)
173 $(RMKDIR
) $(SDK_PATH_INC
)
174 $(RMKDIR
) $(XDK_PATH
)
175 $(RMKDIR
) $(XDK_PATH_LIB
)
176 $(RMKDIR
) $(XDK_PATH_INC
)
178 # WARNING! Be very sure that there are no important files
179 # in these directories before cleaning them!!!
181 $(RM
) $(DDK_PATH_LIB
)/*.a
182 # $(RM) $(DDK_PATH_INC)/*.h
183 $(RMDIR
) $(DDK_PATH_LIB
)
184 # $(RMDIR) $(DDK_PATH_INC)
185 $(RM
) $(SDK_PATH_LIB
)/*.a
186 # $(RM) $(SDK_PATH_INC)/*.h
187 $(RMDIR
) $(SDK_PATH_LIB
)
188 # $(RMDIR) $(SDK_PATH_INC)
189 $(RM
) $(XDK_PATH_LIB
)/*.a
190 # $(RM) $(XDK_PATH_INC)/*.h
191 $(RMDIR
) $(XDK_PATH_LIB
)
192 # $(RMDIR) $(XDK_PATH_INC)
198 .PHONY
: dk dk_clean dk_install dk_dist
208 make
-C iface
/native
clean
210 iface_native_install
:
217 iface_additional_clean
:
218 make
-C iface
/addsys
clean
220 iface_additional_install
:
222 iface_additional_dist
:
224 .PHONY
: iface_native iface_native_clean iface_native_install \
226 iface_additional iface_additional_clean iface_additional_install \
227 iface_additional_dist
233 make
-C services
/bus
/$*
235 $(BUS
:%=%_clean
): %_clean
:
236 make
-C services
/bus
/$* clean
238 $(BUS
:%=%_install
): %_install
:
239 make
-C services
/bus
/$* install
241 $(BUS
:%=%_dist
): %_dist
:
242 make
-C services
/bus
/$* dist
244 .PHONY
: $(BUS
) $(BUS
:%=%_clean
) \
245 $(BUS
:%=%_install
) $(BUS
:%=%_dist
)
248 # Device driver rules
250 $(DEVICE_DRIVERS
): %:
251 make
-C services
/dd
/$*
253 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
254 make
-C services
/dd
/$* clean
256 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
257 make
-C services
/dd
/$* install
259 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
260 make
-C services
/dd
/$* dist
262 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_clean
) \
263 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
269 make
-C services
/input
/$*
271 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
272 make
-C services
/input
/$* clean
274 $(INPUT_DRIVERS
:%=%_install
): %_install
:
275 make
-C services
/input
/$* install
277 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
278 make
-C services
/input
/$* dist
280 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_clean
) \
281 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
284 make
-C services
/fs
/$*
286 $(FS_DRIVERS
:%=%_clean
): %_clean
:
287 make
-C services
/fs
/$* clean
289 $(FS_DRIVERS
:%=%_install
): %_install
:
290 make
-C services
/fs
/$* install
292 $(FS_DRIVERS
:%=%_dist
): %_dist
:
293 make
-C services
/fs
/$* dist
295 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_clean
) \
296 $(FS_DRIVERS
:%=%_install
) $(FS_DRIVERS
:%=%_dist
)
299 # Network driver rules
302 make
-C services
/net
/$*
304 $(NET_DRIVERS
:%=%_clean
): %_clean
:
305 make
-C services
/net
/$* clean
307 $(NET_DRIVERS
:%=%_install
): %_install
:
308 make
-C services
/net
/$* install
310 $(NET_DRIVERS
:%=%_dist
): %_dist
:
311 make
-C services
/net
/$* dist
313 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_clean
) \
314 $(NET_DRIVERS
:%=%_install
) $(NET_DRIVERS
:%=%_dist
)
316 $(NET_DEVICE_DRIVERS
): %:
317 make
-C services
/net
/dd
/$*
319 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
320 make
-C services
/net
/dd
/$* clean
322 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
323 make
-C services
/net
/dd
/$* install
325 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
326 make
-C services
/net
/dd
/$* dist
328 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) \
329 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
332 # storage driver rules
334 $(STORAGE_DRIVERS
): %:
335 make
-C services
/storage
/$*
337 $(STORAGE_DRIVERS
:%=%_clean
): %_clean
:
338 make
-C services
/storage
/$* clean
340 $(STORAGE_DRIVERS
:%=%_install
): %_install
:
341 make
-C services
/storage
/$* install
343 $(STORAGE_DRIVERS
:%=%_dist
): %_dist
:
344 make
-C services
/storage
/$* dist
346 .PHONY
: $(STORAGE_DRIVERS
) $(STORAGE_DRIVERS
:%=%_clean
) \
347 $(STORAGE_DRIVERS
:%=%_install
) $(STORAGE_DRIVERS
:%=%_dist
)
356 $(LOADERS
:%=%_clean
): %_clean
:
357 make
-C loaders
/$* clean
359 $(LOADERS
:%=%_install
): %_install
:
360 make
-C loaders
/$* install
362 $(LOADERS
:%=%_dist
): %_dist
:
363 make
-C loaders
/$* dist
365 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
369 # Required system components
376 make
-C ntoskrnl
clean
379 make
-C ntoskrnl
install
382 make
-C ntoskrnl
dist
384 .PHONY
: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
387 # Hardware Abstraction Layer import library
394 make
-C hal
/hal
clean
397 make
-C hal
/hal
install
402 .PHONY
: hallib hallib_clean hallib_install hallib_dist
405 # Hardware Abstraction Layers
411 $(HALS
:%=%_clean
): %_clean
:
414 $(HALS
:%=%_install
): %_install
:
415 make
-C hal
/$* install
417 $(HALS
:%=%_dist
): %_dist
:
420 .PHONY
: $(HALS
) $(HALS
:%=%_clean
) $(HALS
:%=%_install
) $(HALS
:%=%_dist
)
429 $(DLLS
:%=%_clean
): %_clean
:
432 $(DLLS
:%=%_install
): %_install
:
433 make
-C lib
/$* install
435 $(DLLS
:%=%_dist
): %_dist
:
438 .PHONY
: $(DLLS
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
447 $(SUBSYS
:%=%_clean
): %_clean
:
448 make
-C subsys
/$* clean
450 $(SUBSYS
:%=%_install
): %_install
:
451 make
-C subsys
/$* install
453 $(SUBSYS
:%=%_dist
): %_dist
:
454 make
-C subsys
/$* dist
456 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
460 # Create an installation
464 $(RM
) $(INSTALL_DIR
)/system32
/drivers
/*.
*
465 $(RM
) $(INSTALL_DIR
)/system32
/config
/*.
*
466 $(RM
) $(INSTALL_DIR
)/system32
/*.
*
467 $(RM
) $(INSTALL_DIR
)/symbols
/*.
*
468 $(RM
) $(INSTALL_DIR
)/media
/fonts
/*.
*
469 $(RM
) $(INSTALL_DIR
)/media
/*.
*
470 $(RM
) $(INSTALL_DIR
)/bin
/*.
*
471 $(RM
) $(INSTALL_DIR
)/*.com
472 $(RM
) $(INSTALL_DIR
)/*.bat
473 $(RMDIR
) $(INSTALL_DIR
)/system32
/drivers
474 $(RMDIR
) $(INSTALL_DIR
)/system32
/config
475 $(RMDIR
) $(INSTALL_DIR
)/system32
476 $(RMDIR
) $(INSTALL_DIR
)/symbols
477 $(RMDIR
) $(INSTALL_DIR
)/media
/fonts
478 $(RMDIR
) $(INSTALL_DIR
)/media
479 $(RMDIR
) $(INSTALL_DIR
)/bin
480 $(RMDIR
) $(INSTALL_DIR
)
483 $(RMKDIR
) $(INSTALL_DIR
)
484 $(RMKDIR
) $(INSTALL_DIR
)/bin
485 $(RMKDIR
) $(INSTALL_DIR
)/media
486 $(RMKDIR
) $(INSTALL_DIR
)/media
/fonts
487 $(RMKDIR
) $(INSTALL_DIR
)/symbols
488 $(RMKDIR
) $(INSTALL_DIR
)/system32
489 $(RMKDIR
) $(INSTALL_DIR
)/system32
/config
490 $(RMKDIR
) $(INSTALL_DIR
)/system32
/drivers
493 $(CP
) boot.bat
$(INSTALL_DIR
)/boot.bat
494 $(CP
) aboot.bat
$(INSTALL_DIR
)/aboot.bat
495 $(CP
) boot.hiv
$(INSTALL_DIR
)/system32
/boot.hiv
496 $(CP
) media
/fonts
/helb____.ttf
$(INSTALL_DIR
)/media
/fonts
/helb____.ttf
497 $(CP
) media
/fonts
/timr____.ttf
$(INSTALL_DIR
)/media
/fonts
/timr____.ttf
499 .PHONY
: install_clean install_dirs install_before
503 # Make a distribution saveset
507 $(RM
) $(DIST_DIR
)/symbols
/*.sym
508 $(RM
) $(DIST_DIR
)/drivers
/*.sys
509 $(RM
) $(DIST_DIR
)/subsys
/*.exe
510 $(RM
) $(DIST_DIR
)/dlls
/*.dll
511 $(RM
) $(DIST_DIR
)/apps
/*.exe
512 $(RM
) $(DIST_DIR
)/*.exe
513 $(RMDIR
) $(DIST_DIR
)/symbols
514 $(RMDIR
) $(DIST_DIR
)/subsys
515 $(RMDIR
) $(DIST_DIR
)/drivers
516 $(RMDIR
) $(DIST_DIR
)/dlls
517 $(RMDIR
) $(DIST_DIR
)/apps
521 $(RMKDIR
) $(DIST_DIR
)
522 $(RMKDIR
) $(DIST_DIR
)/apps
523 $(RMKDIR
) $(DIST_DIR
)/dlls
524 $(RMKDIR
) $(DIST_DIR
)/drivers
525 $(RMKDIR
) $(DIST_DIR
)/subsys
526 $(RMKDIR
) $(DIST_DIR
)/symbols
528 .PHONY
: dist_clean dist_dirs
532 find .
-name
"*.[ch]" -print | etags
--language
=c
-