Features/Windows cross compiler

= Windows cross-compiler =

Summary
Build and test full-featured Windows programs, from the comfort of the Fedora system, without needing to use Windows.

Owner

 * Name: RichardJones

Please send any email correspondence about this feature to the fedora-mingw mailing list (you do not need to be subscribed).

Current status

 * Targeted release: Fedora 11
 * Last updated: 2009-03-11
 * Percentage of completion: 100% ! (38/38 packages reviewed)

We would like to get the following package reviews completed (although they are not strictly necessary for F11, just nice to have):


 * Jasper (done)
 * GnuTLS (done)
 * expat (done)
 * Pango (done)
 * Fontconfig (done)

Detailed Description
The Fedora MinGW project's mission is to provide an excellent development environment for Fedora users who wish to cross-compile their programs to run on Windows, minimizing the need to use Windows at all. In the past developers have had to port and compile all of the libraries and tools they have needed, and this huge effort has happened independently many times over. We aim to eliminate duplication of work for application developers by providing a range of libraries and development tools which have already been ported to the cross-compiler environment. This means that developers will not need to recompile the application stack themselves, but can concentrate just on the changes needed to their own application.

Benefit to Fedora
There are two primary benefits for Fedora users.

Firstly, developers who are asked to write software for Windows will no longer need to deal with Windows and all the proprietary compilers/software on top of Windows. Instead they can throw a "configure switch" and build (and test) the software without leaving Fedora.

Secondly &mdash; and this is the long term goal &mdash; it should mean that Windows users can have a greater choice of higher quality open source applications available to them. (Developers who are primarily Linux users will actually be able to produce daily builds for Windows and respond to bug reports from Windows users, so the quality will generally improve). Windows users can use these applications instead of the usual choice of closed, proprietary, expensive apps, giving them at least some freedom. Once they are used to the high quality free applications available, it will be much easier for them to switch to a fully open platform.

The GNU project started out in much the same way by providing much better quality command-line tools for proprietary platforms such as SunOS, and eventually SunOS users liked them so much they switched over to GNU on Linux.

Scope
Requires importing the libraries and development tools from our repository.

How To Test
0. What special hardware / data / etc. is needed (if any)?

No special hardware is needed: it should be possible to test using a standard Fedora installation.

1. How do I prepare my system to test this feature? What packages need to be installed, config files edited, etc.?

The tester should install the mingw32-* packages and wine from Fedora 11. Wine then needs an extra configuration step described in MinGW/Configure wine.

2. What specific actions do I perform to check that the feature is working like it's supposed to?

hg clone http://hg.et.redhat.com/misc/fedora-mingw--devel/ cd fedora-mingw--devel ls */NOT-FOR-FEDORA

Look for some application packages. These are marked by having the file  in the subdirectory, meaning the package is not a development tool or library and so cannot be added to Fedora, but is kept as an example or for testing purposes. (An example is Inkscape). In these directories you will find a spec file which will try to cross-compile the application and produce a binary RPM.

Test by attempting to build these applications, then running them under Wine and comparing them to the native Fedora application.

3. What are the expected results of those actions?

The cross-compiled applications, running under Wine, should behave more or less similarly to the same Fedora application running natively.

User Experience
A user won't see any visible changes, for example in menus. However we would like to make a comps.xml "Windows cross-compiler" group available. This will allow them to install the basic packages and a useful subset of the libraries and development tools through PackageKit.

Dependencies
None.

Contingency Plan
No contingency plan is necessary.

Documentation

 * http://fedoraproject.org/wiki/MinGW

Release Notes
Fedora 11 implements a complete Windows cross-compiler along with prebuilt libraries and development tools. This allows developers to target their software at Windows users. We currently support C, C++, FORTRAN, OCaml, Objective C and Objective C++ cross-compilation. Developers can do this using entirely open source software for building and testing (through Wine), and the development environment is integrated with normal Fedora build and test tools.

Comments and Discussion

 * See Talk:Features/Windows_cross_compiler