V0.1 WINE Mingw and ReactOS porting and status guide.

Steven Edwards Steven_Ed4153 at yahoo.com
Sun May 26 04:15:06 CDT 2002


I am out of town untill Monday evening but I've been trying to get my
documentation work done while on the road. 

If anyone is interested here it is. It has a list of some of my current
bugs plus room for people to test and play. 

All flames will be dumped in /dev/null on my return =P

Thanks
Steven

"Every revolution was once a thought in one man's mind"
- Ralph Waldo Emerson 
-------------- next part --------------
This document should contain all of the information needed for you to start 
developing wine on the Mingw platform. Almost all information in this guide
applys to both the Mingw on Cygwin and Mingw for ReactOS ports.

This document assumes you are using cygwin to configure and build WINE for 
a Mingw Target. Cygwin is enviroment used due to a set of bugs within the 
Mingw Unix Enviroment MSYS. Msys may work however it, the ReactOS build 
system and and any other configurations are not supported by the WINE project.

DEVELOPING WINE USING MINGW ON CYGWIN.

PREREQUISITS:
p1) Make sure you have the latest cygwin with win32api package.
p2) Be sure you are using mingw-extra-2.95.3.tar.gz with cygwin. (Fix for some libiberty.a issues) 
	Read http://www.colomsat.net.co/freehost/ngiraldo/cppcygwin.html for the 
	directions on building mingw C++ applications on cygwin.


DIRECTIONS:
To start hacking on Wine for Mingw, follow the directions at www.winehq.com
to download the most current WINE sources. 

(1) ./configure --host=mingw32 --target=mingw32 --build=mingw32 CFLAGS="-D__MINGW__ -D_WINDOWS -DWINE_NOWINSOCK" CC="gcc -mno-cygwin -fnative-struct" CXX="gcc -mno-cygwin -fnative-struct"
	
	Note: you may also be able to add --disable-debug --disable-trace flags to this command line.

(2) make depend

(3) make implib
	
	FIXME: Make implib doesnt exist yet.

(4) make tools

	MAKE TOOLS BUGS:
	BUG: winedump uses mmap and munmap which Windows Lacks
	QUICKFIX: Remove winedump from wine/tools/makefile
	 
	BUG: wmc and wrc need to be linked to libberty.a (getopt, optarg, optan)
	QUICKFIX: add -liberty to wrc and wmc Makefiles

	BUG: Cygwins libberty.a is buggy 
	QUICKFIX: use the one from normal mingw

(5) cd programs && make

	MAKE PROGRAMS BUGS:
	BUG: regsrv and wineconsole fail
	QUICKFIX: Remove them

	BUG: uninstaller is buggy on the mingw port

(6) Make dlls
	MAKE DLLS BUGS: To many others to name right now. DO NOT BUILD MSVCRT, NTDLL, KERNEL32 OR USER/GDI 
	Build each dll manualy.
	shlwapi needs imports from user32 that are not part of the win32api.
	wvsnprintfA at 16
	wvsnprintfW at 16
	?
	?
	?
	?
	?


(7) Make tests
	?
	?

TODO:
- Wine Tree
	Make Implib rule
	Fix programs/uninstaller
	Debugging and testing of Mingw port
	Winehq Mingw develoepr HOWTO

- Cygwin
	Email Cygwin developers about cygwin1.dll issues.
	
- Mingw
	Email Mingw Developers about warnings in basetsd.h and stdlib.h
	Send patch to Mingw Project about missing exports in libkernel32.a






REACTOS DEVELOPERS: 
The ReactOS Project will try to do quarterly imports of the WINE tree after
each ReactOS release. These directions ONLY apply to the ReactOS build system.

If you need to import the WINE sources in to the ReactOS build system or 
want to build ReactOS with a newer copy of the WINE sources follow 
these directions

(1) Run importwineros.sh on the most current wine sources
(2) set the enviomental varible ROS_BUILD_WINE=1
(3) Rebuild ReactOS sources as normal  

If you are adding funcationality to WINE, such as implementing a function in 
a WINE dll that is currently a stub, you MUST use the Cygwin on Mingw enviroment 
with the most current WINE sources. Any patches that add funcationalty to the 
WINE dlls MUST first be accepted by the WINE project and follow the WINE projects 
coding standards.

DO NOT SEND REACTOS SPICIFC CHANGES TO THE WINE PROJECT. 
YOU HAVE BEEN WARNED. =P

Any ReactOS Spicific changes in the REACTOS fork must be clearly marked and 
should not be used unless there is no other way to work around the problem.

Example:
#ifdef __REACTOS__
ReactOS Spacific code
#endif

TODO 
- ReactOS fork
	Write importwineros.sh script to convert wine Makefiles to ReactOS makefile's when doing a import.
	Write a better ReactOS Wine developer HOWTO


More information about the wine-devel mailing list