Making Wine Portable
We aim to make Wine portable, running and building on as many systems and configurations as possible. Whether you want to port Wine to a new architecture or OS, build it with a different toolchain, or solve some other platform-specific quirk, we always appreciate the help. These kinds of improvements tend to provide secondary benefits too, maturing our code and making it more robust on any platform.
If you're interested, try Building Wine with your specific configuration, keeping and sharing careful notes of your results. Don't be shy about letting other Developers know about your goals and progress either. There's a good chance that at least one developer has tested the same configuration some; if so, they can give you a headstart and possibly point you towards trial patches or bug reports.
To narrow down problems, try varying as few parameters as possible from our "control" case: vanilla 32-bit Wine, Linux or FreeBSD kernel, x86 or amd64 arch, GCC / GNU build tools, and Wine header files.
The Clang compiler has come a long way; it can build the 32-bit version of Wine without problems and could be considered a control in the near future. However it still lacks a couple features that certain DLLs and 64-bit support depend on (see below for details).
|OS||Compiles?||Runs?||Supports 64-bit Wine?||Notes|
|FreeBSD||✔||✔||✔||FreeBSD wiki's page on Wine|
|MacOSX||✔||✔||✖||Also see MacOSX/Building for a couple idiosyncrasies|
|DragonFlyBSD||✔||✔||✖||Wine should still mostly work as on FreeBSD|
|GNU Hurd||✔||✔||✖||See page for details|
|Android||Cross-compiled||Partially||?||Still in progress; see Alexandre Julliard's slides from FOSDEM2014|
|OpenIndiana||✔||✔||✖||Last packaged in Dec 2013 (in the sfe-encumbered repo)|
|Cygwin||Partially||✖||✖||Hasn't been tested in a while|
|Haiku||✖||✖||✖||See page for details|
|NetBSD||✔||✔||✖||Packaged as recently as Dec 2015|
|OpenBSD||✖||✖||✖||Was packaged before; Wine & OpenBSD code have since drifted apart (irreconcilably for the foreseeable future)|
|AIX||✔||✖||✖||Only DLLs & wineserver were built & it hasn't been tested in a while; see |
|HP/UX||✔||✔||✖||Not all components were built & it hasn't been tested in a while; see |
|PowerPC||✔||✖||Hasn't been tested in a while|
|Compiler||Finishes building?||Runs correctly?||Notes|
|clang||✔||Almost||Just can't build 64-bit Wine (|
|icc||Partially||✖||Hasn't been tested in a while; building required some workarounds|
|pcc||✖||N/A||Hasn't been tested in a while|
|tcc||✖||N/A||Hasn't been tested in a while|
|MS Visual C||?||?|
In theory, 32-bit programs should run exactly the same, whether you're using a vanilla 32-bit build of Wine or a WoW64-capable version. Unfortunately, we still can't guarantee this is always the case. If you come across a program that behaves differently between the two builds, don't hesitate to file a bug mentioning the discrepancy in detail.
The AMD64 page has more ideas about testing for these differences; there are also useful tips for anyone interested in porting Wine to their favorite OS on AMD64 hardware.
The Wine project has been around in one form or another for over 20 years now. In that time, systems have come and gone, but some of them are still used in niche situations or maintained by dedicated users. Here is a list of some systems wine was at least tested on in the past.
- Open64 (it and most of its derivatives have been discontinued; there are still 1 or 2 small forks like OpenUH by universities though)
- MinGW/MSYS (project is still active but struggles to stay up-to-date; consider using mingw-w64 instead)
- SCO OpenServer 5 (based on AT&T SysV Release 3)
- AT&T SysV Release 4
- SCO OpenServer 6 (based on AT&T SysV Release 5)
- Sun Solaris & OpenSolaris (superseded by FOSS OpenIndiana & commercial Oracle Solaris)