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 
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@16
        wvsnprintfW@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

Reply via email to