From: Duft Markus (Markus.Duft_at_[hidden])
Date: 2006-09-19 05:05:25
For all interested in native Windows binaries built with Autotools and
mnay other interesting things:
wgcc is a cross-compiler tool primarily written for Microsoft's Interix.
Its primary purpose is to produce native Windows binaries (internally
using the Microsoft Tool chain), and to mimic the behaviour of the GNU
compiler collection. This means that wgcc understands many of GCC's
command line arguments, and in most cases delivers the same results as
expected, sometimes manipulating the underlying tool's input and output.
Even though wgcc was written for Interix only, it can be used on native
Windows (without Interix), and other Systems, like Cygwin. The only
restriction is that on Platforms other than Interix, only Windows style
paths are understood. This will change in the future for Cygwin, and/or
others. On Interix wgcc automatically converts UNIX style paths to
Windows style ones (i.e. /wgcc to C:\SFU\wgcc).
wgcc abstracts away lots of inconveniences that are introduced by
building static libraries, shared libraries (DLL's) and executables with
any possible combination of those three. When using wgcc both static and
shared libraries behave exactly the same on Windows, and this makes tons
of defines unnecessary. The only thing that still has to be done is to
give all Data symbols (i.e. Variables) an import attribute
(__declspec(dllimport)) when using them (i.e. in the library header
files) in an executable. For a simple example take a look at the file
tests/shared.test inside the wgcc distribution.
The Release Candidate 1 of wgcc has a completely rewritten Configuration
File parser, which allows for faster and safer parsing; now adding the
ability to include empty directives in configuration files. This could
be something like "paths.c++ =" to unset all C++ search directories.
Also the ability to automatically generate export definitions and import
trampolines for mixing static and shared libraries with executables has
been reviewed and improved. This did not change the behaviour of wgcc
regarding the 2.0-pre.x versions, but only speeded it up a little.
pxwc, the accompanying library for wgcc allows further abstraction for C
code, allowing use of the ANSI function names (i.e. without the leading
"_"). pxwc currently includes only a small set of functions, so your
help is needed to find out which others to include. Just open a Feature
Request at http://sourceforge.net/tracker/?group_id=158081&atid=806407
and we will try to add functionality as soon as possible.
Using the patch provided for GNU Libtool, wgcc can be used with many
Open Source packages. After patching and installing Libtool, simply
bootstrap the package in question, configure (set CC, CXX and LD to
"wgcc") and build. The configure Script should tell that the linker in
use is the "Interix to Win32 cross linker (wgcc)".
Since the version jump to 2.x wgcc now resides in the Sourceforge
Subversion Repository. The CVS Repository still continues to contain
previous wgcc versions (0.x).
To continue improving wgcc and pxwc packages, we now need your help in
testing them. Please download wgcc and try to compile you software using
it. If something goes wrong please contact mduft or open an issue using
the Sourceforge Tracker at
http://sourceforge.net/tracker/?group_id=158081&atid=806404, or ask your
questions at the forums at
You can browse the Subversion Repository here:
Documentation can be found here:
Source Packages can be found here:
The Patch for Libtool can be found here:
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk