8 # Define to build WINE modules
10 ifeq ($(ROS_BUILD_WINE
),)
16 include $(PATH_TO_TOP
)/rules.mak
19 # Required to run the system
21 COMPONENTS
= iface_native iface_additional hallib ntoskrnl
24 DLLS
= ntdll kernel32 advapi32 crtdll msvcrt fmifs gdi32 msafd \
25 user32 secur32 ws2_32 version
26 SUBSYS
= smss win32k csrss
29 # Select the server(s) you want to build
31 #SERVERS = posix linux os2
35 # Select the loader(s) you want to build
41 # Select the device drivers and filesystems you want
43 #DEVICE_DRIVERS = beep floppy mouse sound test parallel serial
44 DEVICE_DRIVERS
= vidport vga blue ide null floppy
46 #INPUT_DRIVERS = keyboard
47 INPUT_DRIVERS
= keyboard mouclass psaux
49 #FS_DRIVERS = vfat minix ext2 template
50 FS_DRIVERS
= vfat ms np
52 #NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
53 NET_DRIVERS
= ndis tdi tcpip tditest wshtcpip afd
55 #NET_DEVICE_DRIVERS = ne2000
56 NET_DEVICE_DRIVERS
= ne2000
59 # storage drivers (don't change the order)
61 STORAGE_DRIVERS
= class2 scsiport atapi disk
64 # system applications (required for startup)
66 #SYS_APPS = lsass services shell winlogon
67 SYS_APPS
= services
shell winlogon
69 APPS
= args hello
test cat bench apc shm lpc thread event file gditest \
70 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
71 objdir atomtest winhello partinfo mutex
73 #NET_APPS = ping roshttpd telnet
74 NET_APPS
= ping roshttpd
76 #lzexpand mapi32 (missing imports)
77 #dsound (missing winmm.dll)
78 WINE_DLLS
= rpcrt4 ole32 oleaut32 oledlg olepro32 olecli olesvr \
79 shell32 shlwapi comctl32 shfolder shdocvw commdlg \
80 ddraw dinput dplay dplayx \
81 psapi richedit serialui winspool
83 WINE_PROGS
= clock cmdlgtst control notepad osversioncheck \
84 progman uninstaller view wcmd winemine \
87 ifeq ($(ROS_BUILD_WINE
),yes
)
88 WINE_MODULES
= $(WINE_DLLS
) $(WINE_PROGS
)
93 KERNEL_SERVICES
= $(DEVICE_DRIVERS
) $(INPUT_DRIVERS
) $(FS_DRIVERS
) \
94 $(NET_DRIVERS
) $(NET_DEVICE_DRIVERS
) $(STORAGE_DRIVERS
)
96 all: tools dk implib
$(COMPONENTS
) $(HALS
) $(BUS
) $(DLLS
) $(SUBSYS
) \
97 $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) $(NET_APPS
) \
100 implib
: $(COMPONENTS
:%=%_implib
) $(HALS
:%=%_implib
) $(BUS
:%=%_implib
) \
101 $(DLLS
:%=%_implib
) $(LOADERS
:%=%_implib
) \
102 $(KERNEL_SERVICES
:%=%_implib
) $(SUBSYS
:%=%_implib
) \
103 $(SYS_APPS
:%=%_implib
) $(APPS
:%=%_implib
) \
104 $(WINE_MODULES
:%=%_implib
)
106 clean: dk_clean
$(HALS
:%=%_clean
) \
107 $(COMPONENTS
:%=%_clean
) $(BUS
:%=%_clean
) $(DLLS
:%=%_clean
) \
108 $(LOADERS
:%=%_clean
) $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) \
109 $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
) $(NET_APPS
:%=%_clean
) \
110 $(WINE_MODULES
:%=%_clean
) clean_after tools_clean
113 $(RM
) $(PATH_TO_TOP
)/include/roscfg.h
115 install: tools install_dirs install_before \
116 $(COMPONENTS
:%=%_install
) $(HALS
:%=%_install
) $(BUS
:%=%_install
) \
117 $(DLLS
:%=%_install
) $(LOADERS
:%=%_install
) \
118 $(KERNEL_SERVICES
:%=%_install
) $(SUBSYS
:%=%_install
) \
119 $(SYS_APPS
:%=%_install
) $(APPS
:%=%_install
) \
120 $(WINE_MODULES
:%=%_install
)
122 dist: $(TOOLS_PATH
)/rcopy
$(EXE_POSTFIX
) dist_clean dist_dirs \
123 $(HALS
:%=%_dist
) $(COMPONENTS
:%=%_dist
) $(BUS
:%=%_dist
) $(DLLS
:%=%_dist
) \
124 $(LOADERS
:%=%_dist
) $(KERNEL_SERVICES
:%=%_dist
) $(SUBSYS
:%=%_dist
) \
125 $(SYS_APPS
:%=%_dist
) $(APPS
:%=%_dist
) $(NET_APPS
:%=%_dist
) \
126 $(WINE_MODULES
:%=%_dist
)
128 .PHONY
: all implib
clean clean_before
install dist
131 # System Applications
134 make
-C apps
/system
/$*
136 $(SYS_APPS
:%=%_implib
): %_implib
:
137 make
-C apps
/system
/$* implib
139 $(SYS_APPS
:%=%_clean
): %_clean
:
140 make
-C apps
/system
/$* clean
142 $(SYS_APPS
:%=%_dist
): %_dist
:
143 make
-C apps
/system
/$* dist
145 $(SYS_APPS
:%=%_install
): %_install
:
146 make
-C apps
/system
/$* install
148 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_implib
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
156 $(APPS
:%=%_implib
): %_implib
:
157 make
-C apps
/$* implib
159 $(APPS
:%=%_clean
): %_clean
:
160 make
-C apps
/$* clean
162 $(APPS
:%=%_dist
): %_dist
:
165 $(APPS
:%=%_install
): %_install
:
166 make
-C apps
/$* install
168 .PHONY
: $(APPS
) $(APPS
:%=%_implib
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
171 # Network applications
176 $(NET_APPS
:%=%_implib
): %_implib
:
177 make
-C apps
/net
/$* implib
179 $(NET_APPS
:%=%_clean
): %_clean
:
180 make
-C apps
/net
/$* clean
182 $(NET_APPS
:%=%_dist
): %_dist
:
183 make
-C apps
/net
/$* dist
185 $(NET_APPS
:%=%_install
): %_install
:
186 make
-C apps
/net
/$* install
188 .PHONY
: $(NET_APPS
) $(NET_APPS
:%=%_implib
) $(NET_APPS
:%=%_clean
) $(NET_APPS
:%=%_install
) $(NET_APPS
:%=%_dist
)
195 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$*
197 $(WINE_DLLS
:%=%_implib
): %_implib
:
198 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$* implib
200 $(WINE_DLLS
:%=%_clean
): %_clean
:
201 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$* clean
203 $(WINE_DLLS
:%=%_dist
): %_dist
:
204 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$* dist
206 $(WINE_DLLS
:%=%_install
): %_install
:
207 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$* install
209 .PHONY
: $(WINE_DLLS
) $(WINE_DLLS
:%=%_implib
) $(WINE_DLLS
:%=%_clean
) $(WINE_DLLS
:%=%_install
) $(WINE_DLLS
:%=%_dist
)
216 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$*
218 $(WINE_PROGS
:%=%_implib
): %_implib
:
219 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$* implib
221 $(WINE_PROGS
:%=%_clean
): %_clean
:
222 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$* clean
224 $(WINE_PROGS
:%=%_dist
): %_dist
:
225 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$* dist
227 $(WINE_PROGS
:%=%_install
): %_install
:
228 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$* install
230 .PHONY
: $(WINE_PROGS
) $(WINE_PROGS
:%=%_implib
) $(WINE_PROGS
:%=%_clean
) $(WINE_PROGS
:%=%_install
) $(WINE_PROGS
:%=%_dist
)
248 .PHONY
: tools tools_implib tools_clean tools_install tools_dist
256 $(RMKDIR
) $(DDK_PATH
)
257 $(RMKDIR
) $(DDK_PATH_LIB
)
258 $(RMKDIR
) $(DDK_PATH_INC
)
259 $(RMKDIR
) $(SDK_PATH
)
260 $(RMKDIR
) $(SDK_PATH_LIB
)
261 $(RMKDIR
) $(SDK_PATH_INC
)
262 $(RMKDIR
) $(XDK_PATH
)
263 $(RMKDIR
) $(XDK_PATH_LIB
)
264 $(RMKDIR
) $(XDK_PATH_INC
)
268 # WARNING! Be very sure that there are no important files
269 # in these directories before cleaning them!!!
271 $(RM
) $(DDK_PATH_LIB
)/*.a
272 # $(RM) $(DDK_PATH_INC)/*.h
273 $(RMDIR
) $(DDK_PATH_LIB
)
274 # $(RMDIR) $(DDK_PATH_INC)
275 $(RM
) $(SDK_PATH_LIB
)/*.a
276 # $(RM) $(SDK_PATH_INC)/*.h
277 $(RMDIR
) $(SDK_PATH_LIB
)
278 # $(RMDIR) $(SDK_PATH_INC)
279 $(RM
) $(XDK_PATH_LIB
)/*.a
280 # $(RM) $(XDK_PATH_INC)/*.h
281 $(RMDIR
) $(XDK_PATH_LIB
)
282 # $(RMDIR) $(XDK_PATH_INC)
288 .PHONY
: dk dk_implib dk_clean dk_install dk_dist
300 make
-C iface
/native
clean
302 iface_native_install
:
309 iface_additional_implib
:
311 iface_additional_clean
:
312 make
-C iface
/addsys
clean
314 iface_additional_install
:
316 iface_additional_dist
:
318 .PHONY
: iface_native iface_native_implib iface_native_clean iface_native_install \
320 iface_additional iface_additional_implib iface_additional_clean \
321 iface_additional_install iface_additional_dist
327 make
-C services
/bus
/$*
329 $(BUS
:%=%_implib
): %_implib
:
330 make
-C services
/bus
/$* implib
332 $(BUS
:%=%_clean
): %_clean
:
333 make
-C services
/bus
/$* clean
335 $(BUS
:%=%_install
): %_install
:
336 make
-C services
/bus
/$* install
338 $(BUS
:%=%_dist
): %_dist
:
339 make
-C services
/bus
/$* dist
341 .PHONY
: $(BUS
) $(BUS
:%=%_implib
) $(BUS
:%=%_clean
) \
342 $(BUS
:%=%_install
) $(BUS
:%=%_dist
)
345 # Device driver rules
347 $(DEVICE_DRIVERS
): %:
348 make
-C services
/dd
/$*
350 $(DEVICE_DRIVERS
:%=%_implib
): %_implib
:
351 make
-C services
/dd
/$* implib
353 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
354 make
-C services
/dd
/$* clean
356 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
357 make
-C services
/dd
/$* install
359 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
360 make
-C services
/dd
/$* dist
362 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_implib
) $(DEVICE_DRIVERS
:%=%_clean
) \
363 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
369 make
-C services
/input
/$*
371 $(INPUT_DRIVERS
:%=%_implib
): %_implib
:
372 make
-C services
/input
/$* implib
374 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
375 make
-C services
/input
/$* clean
377 $(INPUT_DRIVERS
:%=%_install
): %_install
:
378 make
-C services
/input
/$* install
380 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
381 make
-C services
/input
/$* dist
383 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_implib
) $(INPUT_DRIVERS
:%=%_clean
)\
384 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
387 make
-C services
/fs
/$*
389 $(FS_DRIVERS
:%=%_implib
): %_implib
:
390 make
-C services
/fs
/$* implib
392 $(FS_DRIVERS
:%=%_clean
): %_clean
:
393 make
-C services
/fs
/$* clean
395 $(FS_DRIVERS
:%=%_install
): %_install
:
396 make
-C services
/fs
/$* install
398 $(FS_DRIVERS
:%=%_dist
): %_dist
:
399 make
-C services
/fs
/$* dist
401 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_implib
) $(FS_DRIVERS
:%=%_clean
) \
402 $(FS_DRIVERS
:%=%_install
) $(FS_DRIVERS
:%=%_dist
)
405 # Network driver rules
408 make
-C services
/net
/$*
410 $(NET_DRIVERS
:%=%_implib
): %_implib
:
411 make
-C services
/net
/$* implib
413 $(NET_DRIVERS
:%=%_clean
): %_clean
:
414 make
-C services
/net
/$* clean
416 $(NET_DRIVERS
:%=%_install
): %_install
:
417 make
-C services
/net
/$* install
419 $(NET_DRIVERS
:%=%_dist
): %_dist
:
420 make
-C services
/net
/$* dist
422 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_implib
) $(NET_DRIVERS
:%=%_clean
) \
423 $(NET_DRIVERS
:%=%_install
) $(NET_DRIVERS
:%=%_dist
)
425 $(NET_DEVICE_DRIVERS
): %:
426 make
-C services
/net
/dd
/$*
428 $(NET_DEVICE_DRIVERS
:%=%_implib
): %_implib
:
429 make
-C services
/net
/dd
/$* implib
431 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
432 make
-C services
/net
/dd
/$* clean
434 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
435 make
-C services
/net
/dd
/$* install
437 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
438 make
-C services
/net
/dd
/$* dist
440 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) $(NET_DEVICE_DRIVERS
:%=%_implib
) \
441 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
444 # storage driver rules
446 $(STORAGE_DRIVERS
): %:
447 make
-C services
/storage
/$*
449 $(STORAGE_DRIVERS
:%=%_implib
): %_implib
:
450 make
-C services
/storage
/$* implib
452 $(STORAGE_DRIVERS
:%=%_clean
): %_clean
:
453 make
-C services
/storage
/$* clean
455 $(STORAGE_DRIVERS
:%=%_install
): %_install
:
456 make
-C services
/storage
/$* install
458 $(STORAGE_DRIVERS
:%=%_dist
): %_dist
:
459 make
-C services
/storage
/$* dist
461 .PHONY
: $(STORAGE_DRIVERS
) $(STORAGE_DRIVERS
:%=%_clean
) \
462 $(STORAGE_DRIVERS
:%=%_install
) $(STORAGE_DRIVERS
:%=%_dist
)
471 $(LOADERS
:%=%_implib
): %_implib
:
473 $(LOADERS
:%=%_clean
): %_clean
:
474 make
-C loaders
/$* clean
476 $(LOADERS
:%=%_install
): %_install
:
477 make
-C loaders
/$* install
479 $(LOADERS
:%=%_dist
): %_dist
:
480 make
-C loaders
/$* dist
482 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_implib
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
486 # Required system components
493 make
-C ntoskrnl implib
496 make
-C ntoskrnl
clean
499 make
-C ntoskrnl
install
502 make
-C ntoskrnl
dist
504 .PHONY
: ntoskrnl ntoskrnl_implib ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
507 # Hardware Abstraction Layer import library
514 make
-C hal
/hal implib
517 make
-C hal
/hal
clean
520 make
-C hal
/hal
install
525 .PHONY
: hallib hallib_implib hallib_clean hallib_install hallib_dist
528 # Hardware Abstraction Layers
534 $(HALS
:%=%_implib
): %_implib
:
535 make
-C hal
/$* implib
537 $(HALS
:%=%_clean
): %_clean
:
540 $(HALS
:%=%_install
): %_install
:
541 make
-C hal
/$* install
543 $(HALS
:%=%_dist
): %_dist
:
546 .PHONY
: $(HALS
) $(HALS
:%=%_implib
) $(HALS
:%=%_clean
) $(HALS
:%=%_install
) $(HALS
:%=%_dist
)
555 $(DLLS
:%=%_implib
): %_implib
:
556 make
-C lib
/$* implib
558 $(DLLS
:%=%_clean
): %_clean
:
561 $(DLLS
:%=%_install
): %_install
:
562 make
-C lib
/$* install
564 $(DLLS
:%=%_dist
): %_dist
:
567 .PHONY
: $(DLLS
) $(DLLS
:%=%_implib
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
576 $(SUBSYS
:%=%_implib
): %_implib
:
577 make
-C subsys
/$* implib
579 $(SUBSYS
:%=%_clean
): %_clean
:
580 make
-C subsys
/$* clean
582 $(SUBSYS
:%=%_install
): %_install
:
583 make
-C subsys
/$* install
585 $(SUBSYS
:%=%_dist
): %_dist
:
586 make
-C subsys
/$* dist
588 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_implib
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
592 # Create an installation
596 $(RM
) $(INSTALL_DIR
)/system32
/drivers
/*.
*
597 $(RM
) $(INSTALL_DIR
)/system32
/config
/*.
*
598 $(RM
) $(INSTALL_DIR
)/system32
/*.
*
599 $(RM
) $(INSTALL_DIR
)/symbols
/*.
*
600 $(RM
) $(INSTALL_DIR
)/media
/fonts
/*.
*
601 $(RM
) $(INSTALL_DIR
)/media
/*.
*
602 $(RM
) $(INSTALL_DIR
)/bin
/*.
*
603 $(RM
) $(INSTALL_DIR
)/*.com
604 $(RM
) $(INSTALL_DIR
)/*.bat
605 $(RMDIR
) $(INSTALL_DIR
)/system32
/drivers
606 $(RMDIR
) $(INSTALL_DIR
)/system32
/config
607 $(RMDIR
) $(INSTALL_DIR
)/system32
608 $(RMDIR
) $(INSTALL_DIR
)/symbols
609 $(RMDIR
) $(INSTALL_DIR
)/media
/fonts
610 $(RMDIR
) $(INSTALL_DIR
)/media
611 $(RMDIR
) $(INSTALL_DIR
)/bin
612 $(RMDIR
) $(INSTALL_DIR
)
615 $(RMKDIR
) $(INSTALL_DIR
)
616 $(RMKDIR
) $(INSTALL_DIR
)/bin
617 $(RMKDIR
) $(INSTALL_DIR
)/media
618 $(RMKDIR
) $(INSTALL_DIR
)/media
/fonts
619 $(RMKDIR
) $(INSTALL_DIR
)/symbols
620 $(RMKDIR
) $(INSTALL_DIR
)/system32
621 $(RMKDIR
) $(INSTALL_DIR
)/system32
/config
622 $(RMKDIR
) $(INSTALL_DIR
)/system32
/drivers
625 $(CP
) boot.bat
$(INSTALL_DIR
)/boot.bat
626 $(CP
) aboot.bat
$(INSTALL_DIR
)/aboot.bat
627 $(CP
) boot.hiv
$(INSTALL_DIR
)/system32
/boot.hiv
628 $(CP
) media
/fonts
/helb____.ttf
$(INSTALL_DIR
)/media
/fonts
/helb____.ttf
629 $(CP
) media
/fonts
/timr____.ttf
$(INSTALL_DIR
)/media
/fonts
/timr____.ttf
631 .PHONY
: install_clean install_dirs install_before
635 # Make a distribution saveset
639 $(RM
) $(DIST_DIR
)/symbols
/*.sym
640 $(RM
) $(DIST_DIR
)/drivers
/*.sys
641 $(RM
) $(DIST_DIR
)/subsys
/*.exe
642 $(RM
) $(DIST_DIR
)/dlls
/*.dll
643 $(RM
) $(DIST_DIR
)/apps
/*.exe
644 $(RM
) $(DIST_DIR
)/*.exe
645 $(RMDIR
) $(DIST_DIR
)/symbols
646 $(RMDIR
) $(DIST_DIR
)/subsys
647 $(RMDIR
) $(DIST_DIR
)/drivers
648 $(RMDIR
) $(DIST_DIR
)/dlls
649 $(RMDIR
) $(DIST_DIR
)/apps
653 $(RMKDIR
) $(DIST_DIR
)
654 $(RMKDIR
) $(DIST_DIR
)/apps
655 $(RMKDIR
) $(DIST_DIR
)/dlls
656 $(RMKDIR
) $(DIST_DIR
)/drivers
657 $(RMKDIR
) $(DIST_DIR
)/subsys
658 $(RMKDIR
) $(DIST_DIR
)/symbols
660 .PHONY
: dist_clean dist_dirs
664 find .
-name
"*.[ch]" -print | etags
--language
=c
-