|
25.2 Installing GNU Autotools on Cygwin
With all of the above infrastructure in place, each of the GNU Autotools
can be built natively and installed from source right out of the box.
It is worth taking care with the installation directories, as there is
no package management under Cygwin, and it is easy to let everything get
thrown into a big pile in `/usr/local', which makes it relatively
difficult to upgrade and remove packages.
Support for Cygwin has been in Autoconf for several years, as far back
as version 2.0 as best as I can tell. Building it has never been a
problem as long as GNU M4 and a Bourne Shell are available, it is
the macros themselves which offer this support. Of course, any Autoconf
macros you write yourself must be designed carefully to not make any
assumptions about being executed on Unix if the Cygwin compatibility is
to remain. A binary package of Autoconf for Cygwin version 1.1.1 is
available from the CygUtils website(62).
Automake joined the fray much later than the Cygwin support code was
added to Autoconf, and has consequently always supported Cygwin. Until
the last release of Cygwin, the stumbling block has always been finding
(or building) a Cygwin compatible Perl interpreter for Automake to use.
Thanks to the work of Eric Fifer, Perl 5.6.0 builds right out of the box
on Cygwin, removing this problem entirely. Ready built packages of Perl
and Automake are available from the CygUtils website.
The initial Libtool support for Windows was written by Ian Lance Taylor
of Cygnus Solutions, when Cygwin was at release b18, See section Microsoft Windows. More recent releases of
Cygwin in general, and GCC in particular have much better
facilities for building and linking with Windows DLLs, to the
extent that with a little perseverance it is possible to build DLLs
with GCC from C++ sources, and to have those DLLs interoperate with
DLLs built with Windows development environments. In time,
automation of these facilities will make their way into Libtool. The
method that Libtool currently uses to build DLLs works with Cygwin
releases at least as far back as b18, and at least as far forward as the
version I am now using, Cygwin-1.1.1. The same code will also build
DLLs correctly with Mingw32. There are certainly simpler ways to
assemble a DLL, but Libtool aims to combine two goals which are
somewhat in contention with Windows' treatment of DLLs; Libtool is
aiming for maximum portability across the various flavours of
DLL-using Windows build environments; not forgetting Libtool's
raison d'être
which is to abstract the many and varied ways of building libraries on
different targets behind a single unified interface. To meet these two
goals, Libtool must only use tools which exist across the range of
versions it supports, and must at the same time try to make DLLs
appear to have the same characteristics as a modern ELF shared
library, such as the shared libraries under GNU/Linux. This is no
mean feat, and in fact Libtool still has some way to go in order to be
able to do this convincingly. It turns out that Windows DLLs lack
many, many features that packages developed on Unix are likely to take
for granted. Emulation of these missing features are making their way
into Libtool. Although support for DLLs is improving steadily with
every release, there are some severe technical problems with the Windows
library architecture that will prevent Libtool from ever being able to
build DLLs completely transparently. The details are extremely
technical and beyond the scope of this book.
As noted in A.3 Installing the tools, things will only work correctly
if each of Autoconf, Automake and Libtool are installed with the same
`--prefix' argument, since they all share a macro directory in
`$prefix/share/aclocal'.
|