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