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 cdfs
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 cdrom
64 # system applications (required for startup)
67 SYS_APPS
= services
shell winlogon
70 APPS
= args hello
test cat bench apc shm lpc thread event file gditest \
71 pteb consume dump_shared_data vmtest regtest alive mstest nptest \
72 objdir atomtest winhello partinfo mutex stats pice isotest sectest
76 # Wine userspace win32 subsystem plus other stuff. This will all be moved
77 # to helper makefile down the road and there will be peace on earth.
82 WINE_TOOLS
= wrc winebuild
84 WINE_DLLS
= rpcrt4 mapi32 ole32 oleaut32 oledlg olepro32 olecli olesvr \
85 shell32 shlwapi comctl32 shfolder shdocvw commdlg \
86 ddraw dinput dplay dplayx \
87 psapi richedit serialui tapi32 urlmon winspool wintrust
88 #lzexpand (missing imports)
89 #dsound (missing winmm.dll)
92 WINE_PROGS
= clock cmdlgtst control notepad osversioncheck \
93 progman uninstaller view wcmd winefile winemine \
96 ifeq ($(ROS_BUILD_WINE
),yes
)
97 WINE_MODULES
= $(WINE_OTHER
) $(WINE_TOOLS
) $(WINE_DLLS
) $(WINE_PROGS
)
102 KERNEL_SERVICES
= $(DEVICE_DRIVERS
) $(INPUT_DRIVERS
) $(FS_DRIVERS
) \
103 $(NET_DRIVERS
) $(NET_DEVICE_DRIVERS
) $(STORAGE_DRIVERS
)
105 all: tools dk implib
$(COMPONENTS
) $(HALS
) $(BUS
) $(DLLS
) $(SUBSYS
) \
106 $(LOADERS
) $(KERNEL_SERVICES
) $(SYS_APPS
) $(APPS
) \
109 implib
: $(COMPONENTS
:%=%_implib
) $(HALS
:%=%_implib
) $(BUS
:%=%_implib
) \
110 $(DLLS
:%=%_implib
) $(LOADERS
:%=%_implib
) \
111 $(KERNEL_SERVICES
:%=%_implib
) $(SUBSYS
:%=%_implib
) \
112 $(SYS_APPS
:%=%_implib
) $(APPS
:%=%_implib
) \
113 $(WINE_MODULES
:%=%_implib
)
115 clean: dk_clean
$(HALS
:%=%_clean
) \
116 $(COMPONENTS
:%=%_clean
) $(BUS
:%=%_clean
) $(DLLS
:%=%_clean
) \
117 $(LOADERS
:%=%_clean
) $(KERNEL_SERVICES
:%=%_clean
) $(SUBSYS
:%=%_clean
) \
118 $(SYS_APPS
:%=%_clean
) $(APPS
:%=%_clean
) $(NET_APPS
:%=%_clean
) \
119 $(WINE_MODULES
:%=%_clean
) clean_after tools_clean
122 $(RM
) $(PATH_TO_TOP
)/include/roscfg.h
124 install: tools install_dirs install_before \
125 $(COMPONENTS
:%=%_install
) $(HALS
:%=%_install
) $(BUS
:%=%_install
) \
126 $(DLLS
:%=%_install
) $(LOADERS
:%=%_install
) \
127 $(KERNEL_SERVICES
:%=%_install
) $(SUBSYS
:%=%_install
) \
128 $(SYS_APPS
:%=%_install
) $(APPS
:%=%_install
) \
129 $(WINE_MODULES
:%=%_install
)
131 dist: $(TOOLS_PATH
)/rcopy
$(EXE_POSTFIX
) dist_clean dist_dirs \
132 $(HALS
:%=%_dist
) $(COMPONENTS
:%=%_dist
) $(BUS
:%=%_dist
) $(DLLS
:%=%_dist
) \
133 $(LOADERS
:%=%_dist
) $(KERNEL_SERVICES
:%=%_dist
) $(SUBSYS
:%=%_dist
) \
134 $(SYS_APPS
:%=%_dist
) $(APPS
:%=%_dist
) $(NET_APPS
:%=%_dist
) \
135 $(WINE_MODULES
:%=%_dist
)
137 .PHONY
: all implib
clean clean_before
install dist
140 # System Applications
143 make
-C apps
/system
/$*
145 $(SYS_APPS
:%=%_implib
): %_implib
:
146 make
-C apps
/system
/$* implib
148 $(SYS_APPS
:%=%_clean
): %_clean
:
149 make
-C apps
/system
/$* clean
151 $(SYS_APPS
:%=%_dist
): %_dist
:
152 make
-C apps
/system
/$* dist
154 $(SYS_APPS
:%=%_install
): %_install
:
155 make
-C apps
/system
/$* install
157 .PHONY
: $(SYS_APPS
) $(SYS_APPS
:%=%_implib
) $(SYS_APPS
:%=%_clean
) $(SYS_APPS
:%=%_install
) $(SYS_APPS
:%=%_dist
)
165 $(APPS
:%=%_implib
): %_implib
:
166 make
-C apps
/$* implib
168 $(APPS
:%=%_clean
): %_clean
:
169 make
-C apps
/$* clean
171 $(APPS
:%=%_dist
): %_dist
:
174 $(APPS
:%=%_install
): %_install
:
175 make
-C apps
/$* install
177 .PHONY
: $(APPS
) $(APPS
:%=%_implib
) $(APPS
:%=%_clean
) $(APPS
:%=%_install
) $(APPS
:%=%_dist
)
183 make
-f makefile.ros
-C
$(WINE_PATH
)/$*
185 $(WINE_OTHER
:%=%_implib
): %_implib
:
186 make
-f makefile.ros
-C
$(WINE_PATH
)/$* implib
188 $(WINE_OTHER
:%=%_clean
): %_clean
:
189 make
-f makefile.ros
-C
$(WINE_PATH
)/$* clean
191 $(WINE_OTHER
:%=%_dist
): %_dist
:
192 make
-f makefile.ros
-C
$(WINE_PATH
)/$* dist
194 $(WINE_OTHER
:%=%_install
): %_install
:
195 make
-f makefile.ros
-C
$(WINE_PATH
)/$* install
197 .PHONY
: $(WINE_OTHER
) $(WINE_OTHER
:%=%_implib
) $(WINE_OTHER
:%=%_clean
) $(WINE_OTHER
:%=%_install
) $(WINE_OTHER
:%=%_dist
)
203 make
-f makefile.ros
-C
$(WINE_PATH
)/tools
/$*
205 $(WINE_TOOLS
:%=%_implib
): %_implib
:
206 make
-f makefile.ros
-C
$(WINE_PATH
)/tools
/$* implib
208 $(WINE_TOOLS
:%=%_clean
): %_clean
:
209 make
-f makefile.ros
-C
$(WINE_PATH
)/tools
/$* clean
211 $(WINE_TOOLS
:%=%_dist
): %_dist
:
212 make
-f makefile.ros
-C
$(WINE_PATH
)/tools
/$* dist
214 $(WINE_TOOLS
:%=%_install
): %_install
:
215 make
-f makefile.ros
-C
$(WINE_PATH
)/tools
/$* install
217 .PHONY
: $(WINE_DLLS
) $(WINE_DLLS
:%=%_implib
) $(WINE_DLLS
:%=%_clean
) $(WINE_DLLS
:%=%_install
) $(WINE_DLLS
:%=%_dist
)
224 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$*
226 $(WINE_DLLS
:%=%_implib
): %_implib
:
227 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$* implib
229 $(WINE_DLLS
:%=%_clean
): %_clean
:
230 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$* clean
232 $(WINE_DLLS
:%=%_dist
): %_dist
:
233 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$* dist
235 $(WINE_DLLS
:%=%_install
): %_install
:
236 make
-f makefile.ros
-C
$(WINE_PATH
)/dlls
/$* install
238 .PHONY
: $(WINE_DLLS
) $(WINE_DLLS
:%=%_implib
) $(WINE_DLLS
:%=%_clean
) $(WINE_DLLS
:%=%_install
) $(WINE_DLLS
:%=%_dist
)
245 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$*
247 $(WINE_PROGS
:%=%_implib
): %_implib
:
248 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$* implib
250 $(WINE_PROGS
:%=%_clean
): %_clean
:
251 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$* clean
253 $(WINE_PROGS
:%=%_dist
): %_dist
:
254 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$* dist
256 $(WINE_PROGS
:%=%_install
): %_install
:
257 make
-f makefile.ros
-C
$(WINE_PATH
)/programs
/$* install
259 .PHONY
: $(WINE_PROGS
) $(WINE_PROGS
:%=%_implib
) $(WINE_PROGS
:%=%_clean
) $(WINE_PROGS
:%=%_install
) $(WINE_PROGS
:%=%_dist
)
277 .PHONY
: tools tools_implib tools_clean tools_install tools_dist
285 $(RMKDIR
) $(DDK_PATH
)
286 $(RMKDIR
) $(DDK_PATH_LIB
)
287 $(RMKDIR
) $(DDK_PATH_INC
)
288 $(RMKDIR
) $(SDK_PATH
)
289 $(RMKDIR
) $(SDK_PATH_LIB
)
290 $(RMKDIR
) $(SDK_PATH_INC
)
291 $(RMKDIR
) $(XDK_PATH
)
292 $(RMKDIR
) $(XDK_PATH_LIB
)
293 $(RMKDIR
) $(XDK_PATH_INC
)
297 # WARNING! Be very sure that there are no important files
298 # in these directories before cleaning them!!!
300 $(RM
) $(DDK_PATH_LIB
)/*.a
301 # $(RM) $(DDK_PATH_INC)/*.h
302 $(RMDIR
) $(DDK_PATH_LIB
)
303 # $(RMDIR) $(DDK_PATH_INC)
304 $(RM
) $(SDK_PATH_LIB
)/*.a
305 # $(RM) $(SDK_PATH_INC)/*.h
306 $(RMDIR
) $(SDK_PATH_LIB
)
307 # $(RMDIR) $(SDK_PATH_INC)
308 $(RM
) $(XDK_PATH_LIB
)/*.a
309 # $(RM) $(XDK_PATH_INC)/*.h
310 $(RMDIR
) $(XDK_PATH_LIB
)
311 # $(RMDIR) $(XDK_PATH_INC)
317 .PHONY
: dk dk_implib dk_clean dk_install dk_dist
329 make
-C iface
/native
clean
331 iface_native_install
:
338 iface_additional_implib
:
340 iface_additional_clean
:
341 make
-C iface
/addsys
clean
343 iface_additional_install
:
345 iface_additional_dist
:
347 .PHONY
: iface_native iface_native_implib iface_native_clean iface_native_install \
349 iface_additional iface_additional_implib iface_additional_clean \
350 iface_additional_install iface_additional_dist
356 make
-C services
/bus
/$*
358 $(BUS
:%=%_implib
): %_implib
:
359 make
-C services
/bus
/$* implib
361 $(BUS
:%=%_clean
): %_clean
:
362 make
-C services
/bus
/$* clean
364 $(BUS
:%=%_install
): %_install
:
365 make
-C services
/bus
/$* install
367 $(BUS
:%=%_dist
): %_dist
:
368 make
-C services
/bus
/$* dist
370 .PHONY
: $(BUS
) $(BUS
:%=%_implib
) $(BUS
:%=%_clean
) \
371 $(BUS
:%=%_install
) $(BUS
:%=%_dist
)
374 # Device driver rules
376 $(DEVICE_DRIVERS
): %:
377 make
-C services
/dd
/$*
379 $(DEVICE_DRIVERS
:%=%_implib
): %_implib
:
380 make
-C services
/dd
/$* implib
382 $(DEVICE_DRIVERS
:%=%_clean
): %_clean
:
383 make
-C services
/dd
/$* clean
385 $(DEVICE_DRIVERS
:%=%_install
): %_install
:
386 make
-C services
/dd
/$* install
388 $(DEVICE_DRIVERS
:%=%_dist
): %_dist
:
389 make
-C services
/dd
/$* dist
391 .PHONY
: $(DEVICE_DRIVERS
) $(DEVICE_DRIVERS
:%=%_implib
) $(DEVICE_DRIVERS
:%=%_clean
) \
392 $(DEVICE_DRIVERS
:%=%_install
) $(DEVICE_DRIVERS
:%=%_dist
)
398 make
-C services
/input
/$*
400 $(INPUT_DRIVERS
:%=%_implib
): %_implib
:
401 make
-C services
/input
/$* implib
403 $(INPUT_DRIVERS
:%=%_clean
): %_clean
:
404 make
-C services
/input
/$* clean
406 $(INPUT_DRIVERS
:%=%_install
): %_install
:
407 make
-C services
/input
/$* install
409 $(INPUT_DRIVERS
:%=%_dist
): %_dist
:
410 make
-C services
/input
/$* dist
412 .PHONY
: $(INPUT_DRIVERS
) $(INPUT_DRIVERS
:%=%_implib
) $(INPUT_DRIVERS
:%=%_clean
)\
413 $(INPUT_DRIVERS
:%=%_install
) $(INPUT_DRIVERS
:%=%_dist
)
416 make
-C services
/fs
/$*
418 $(FS_DRIVERS
:%=%_implib
): %_implib
:
419 make
-C services
/fs
/$* implib
421 $(FS_DRIVERS
:%=%_clean
): %_clean
:
422 make
-C services
/fs
/$* clean
424 $(FS_DRIVERS
:%=%_install
): %_install
:
425 make
-C services
/fs
/$* install
427 $(FS_DRIVERS
:%=%_dist
): %_dist
:
428 make
-C services
/fs
/$* dist
430 .PHONY
: $(FS_DRIVERS
) $(FS_DRIVERS
:%=%_implib
) $(FS_DRIVERS
:%=%_clean
) \
431 $(FS_DRIVERS
:%=%_install
) $(FS_DRIVERS
:%=%_dist
)
434 # Network driver rules
437 make
-C services
/net
/$*
439 $(NET_DRIVERS
:%=%_implib
): %_implib
:
440 make
-C services
/net
/$* implib
442 $(NET_DRIVERS
:%=%_clean
): %_clean
:
443 make
-C services
/net
/$* clean
445 $(NET_DRIVERS
:%=%_install
): %_install
:
446 make
-C services
/net
/$* install
448 $(NET_DRIVERS
:%=%_dist
): %_dist
:
449 make
-C services
/net
/$* dist
451 .PHONY
: $(NET_DRIVERS
) $(NET_DRIVERS
:%=%_implib
) $(NET_DRIVERS
:%=%_clean
) \
452 $(NET_DRIVERS
:%=%_install
) $(NET_DRIVERS
:%=%_dist
)
454 $(NET_DEVICE_DRIVERS
): %:
455 make
-C services
/net
/dd
/$*
457 $(NET_DEVICE_DRIVERS
:%=%_implib
): %_implib
:
458 make
-C services
/net
/dd
/$* implib
460 $(NET_DEVICE_DRIVERS
:%=%_clean
): %_clean
:
461 make
-C services
/net
/dd
/$* clean
463 $(NET_DEVICE_DRIVERS
:%=%_install
): %_install
:
464 make
-C services
/net
/dd
/$* install
466 $(NET_DEVICE_DRIVERS
:%=%_dist
): %_dist
:
467 make
-C services
/net
/dd
/$* dist
469 .PHONY
: $(NET_DEVICE_DRIVERS
) $(NET_DEVICE_DRIVERS
:%=%_clean
) $(NET_DEVICE_DRIVERS
:%=%_implib
) \
470 $(NET_DEVICE_DRIVERS
:%=%_install
) $(NET_DEVICE_DRIVERS
:%=%_dist
)
473 # storage driver rules
475 $(STORAGE_DRIVERS
): %:
476 make
-C services
/storage
/$*
478 $(STORAGE_DRIVERS
:%=%_implib
): %_implib
:
479 make
-C services
/storage
/$* implib
481 $(STORAGE_DRIVERS
:%=%_clean
): %_clean
:
482 make
-C services
/storage
/$* clean
484 $(STORAGE_DRIVERS
:%=%_install
): %_install
:
485 make
-C services
/storage
/$* install
487 $(STORAGE_DRIVERS
:%=%_dist
): %_dist
:
488 make
-C services
/storage
/$* dist
490 .PHONY
: $(STORAGE_DRIVERS
) $(STORAGE_DRIVERS
:%=%_clean
) \
491 $(STORAGE_DRIVERS
:%=%_install
) $(STORAGE_DRIVERS
:%=%_dist
)
500 $(LOADERS
:%=%_implib
): %_implib
:
502 $(LOADERS
:%=%_clean
): %_clean
:
503 make
-C loaders
/$* clean
505 $(LOADERS
:%=%_install
): %_install
:
506 make
-C loaders
/$* install
508 $(LOADERS
:%=%_dist
): %_dist
:
509 make
-C loaders
/$* dist
511 .PHONY
: $(LOADERS
) $(LOADERS
:%=%_implib
) $(LOADERS
:%=%_clean
) $(LOADERS
:%=%_install
) \
515 # Required system components
522 make
-C ntoskrnl implib
525 make
-C ntoskrnl
clean
528 make
-C ntoskrnl
install
531 make
-C ntoskrnl
dist
533 .PHONY
: ntoskrnl ntoskrnl_implib ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
536 # Hardware Abstraction Layer import library
543 make
-C hal
/hal implib
546 make
-C hal
/hal
clean
549 make
-C hal
/hal
install
554 .PHONY
: hallib hallib_implib hallib_clean hallib_install hallib_dist
557 # Hardware Abstraction Layers
563 $(HALS
:%=%_implib
): %_implib
:
564 make
-C hal
/$* implib
566 $(HALS
:%=%_clean
): %_clean
:
569 $(HALS
:%=%_install
): %_install
:
570 make
-C hal
/$* install
572 $(HALS
:%=%_dist
): %_dist
:
575 .PHONY
: $(HALS
) $(HALS
:%=%_implib
) $(HALS
:%=%_clean
) $(HALS
:%=%_install
) $(HALS
:%=%_dist
)
584 $(DLLS
:%=%_implib
): %_implib
:
585 make
-C lib
/$* implib
587 $(DLLS
:%=%_clean
): %_clean
:
590 $(DLLS
:%=%_install
): %_install
:
591 make
-C lib
/$* install
593 $(DLLS
:%=%_dist
): %_dist
:
596 .PHONY
: $(DLLS
) $(DLLS
:%=%_implib
) $(DLLS
:%=%_clean
) $(DLLS
:%=%_install
) $(DLLS
:%=%_dist
)
605 $(SUBSYS
:%=%_implib
): %_implib
:
606 make
-C subsys
/$* implib
608 $(SUBSYS
:%=%_clean
): %_clean
:
609 make
-C subsys
/$* clean
611 $(SUBSYS
:%=%_install
): %_install
:
612 make
-C subsys
/$* install
614 $(SUBSYS
:%=%_dist
): %_dist
:
615 make
-C subsys
/$* dist
617 .PHONY
: $(SUBSYS
) $(SUBSYS
:%=%_implib
) $(SUBSYS
:%=%_clean
) $(SUBSYS
:%=%_install
) \
621 # Create an installation
625 $(RM
) $(INSTALL_DIR
)/system32
/drivers
/*.
*
626 $(RM
) $(INSTALL_DIR
)/system32
/config
/*.
*
627 $(RM
) $(INSTALL_DIR
)/system32
/*.
*
628 $(RM
) $(INSTALL_DIR
)/symbols
/*.
*
629 $(RM
) $(INSTALL_DIR
)/media
/fonts
/*.
*
630 $(RM
) $(INSTALL_DIR
)/media
/*.
*
631 $(RM
) $(INSTALL_DIR
)/bin
/*.
*
632 $(RM
) $(INSTALL_DIR
)/*.com
633 $(RM
) $(INSTALL_DIR
)/*.bat
634 $(RMDIR
) $(INSTALL_DIR
)/system32
/drivers
635 $(RMDIR
) $(INSTALL_DIR
)/system32
/config
636 $(RMDIR
) $(INSTALL_DIR
)/system32
637 $(RMDIR
) $(INSTALL_DIR
)/symbols
638 $(RMDIR
) $(INSTALL_DIR
)/media
/fonts
639 $(RMDIR
) $(INSTALL_DIR
)/media
640 $(RMDIR
) $(INSTALL_DIR
)/bin
641 $(RMDIR
) $(INSTALL_DIR
)
644 $(RMKDIR
) $(INSTALL_DIR
)
645 $(RMKDIR
) $(INSTALL_DIR
)/bin
646 $(RMKDIR
) $(INSTALL_DIR
)/media
647 $(RMKDIR
) $(INSTALL_DIR
)/media
/fonts
648 $(RMKDIR
) $(INSTALL_DIR
)/symbols
649 $(RMKDIR
) $(INSTALL_DIR
)/system32
650 $(RMKDIR
) $(INSTALL_DIR
)/system32
/config
651 $(RMKDIR
) $(INSTALL_DIR
)/system32
/drivers
654 $(CP
) boot.bat
$(INSTALL_DIR
)/boot.bat
655 $(CP
) aboot.bat
$(INSTALL_DIR
)/aboot.bat
656 $(CP
) boot.hiv
$(INSTALL_DIR
)/system32
/boot.hiv
657 $(CP
) media
/fonts
/helb____.ttf
$(INSTALL_DIR
)/media
/fonts
/helb____.ttf
658 $(CP
) media
/fonts
/timr____.ttf
$(INSTALL_DIR
)/media
/fonts
/timr____.ttf
660 .PHONY
: install_clean install_dirs install_before
664 # Make a distribution saveset
668 $(RM
) $(DIST_DIR
)/symbols
/*.sym
669 $(RM
) $(DIST_DIR
)/drivers
/*.sys
670 $(RM
) $(DIST_DIR
)/subsys
/*.exe
671 $(RM
) $(DIST_DIR
)/dlls
/*.dll
672 $(RM
) $(DIST_DIR
)/apps
/*.exe
673 $(RM
) $(DIST_DIR
)/*.exe
674 $(RMDIR
) $(DIST_DIR
)/symbols
675 $(RMDIR
) $(DIST_DIR
)/subsys
676 $(RMDIR
) $(DIST_DIR
)/drivers
677 $(RMDIR
) $(DIST_DIR
)/dlls
678 $(RMDIR
) $(DIST_DIR
)/apps
682 $(RMKDIR
) $(DIST_DIR
)
683 $(RMKDIR
) $(DIST_DIR
)/apps
684 $(RMKDIR
) $(DIST_DIR
)/dlls
685 $(RMKDIR
) $(DIST_DIR
)/drivers
686 $(RMKDIR
) $(DIST_DIR
)/subsys
687 $(RMKDIR
) $(DIST_DIR
)/symbols
689 .PHONY
: dist_clean dist_dirs
693 find .
-name
"*.[ch]" -print | etags
--language
=c
-