If you read this file _as_is_, just ignore the funny characters you
see. It is written in the POD format (see pod/perlpod.pod) which is
specially designed to be readable as is.
=head1 NAME
README.cygwin - Perl for Cygwin
=head1 SYNOPSIS
This document will help you configure, make, test and install Perl
on Cygwin. This document also describes features of Cygwin that will
affect how Perl behaves at runtime.
B There are pre-built Perl packages available for Cygwin and a
version of Perl is provided in the normal Cygwin install. If you do
not need to customize the configuration, consider using one of those
packages.
=head1 PREREQUISITES FOR COMPILING PERL ON CYGWIN
=head2 Cygwin = GNU+Cygnus+Windows (Don't leave UNIX without it)
The Cygwin tools are ports of the popular GNU development tools for Win32
platforms. They run thanks to the Cygwin library which provides the UNIX
system calls and environment these programs expect. More information
about this project can be found at:
F
A recent net or commercial release of Cygwin is required.
At the time this document was last updated, Cygwin 1.5.24 was current.
=head2 Cygwin Configuration
While building Perl some changes may be necessary to your Cygwin setup so
that Perl builds cleanly. These changes are B required for normal
Perl usage.
B The binaries that are built will run on all Win32 versions.
They do not depend on your host system (Win9x/WinME, WinNT/Win2K)
or your Cygwin configuration (I, I, binary/text mounts).
The only dependencies come from hard-coded pathnames like C.
However, your host system and Cygwin configuration will affect Perl's
runtime behavior (see L"TEST">).
=over 4
=item * C
Set the C environment variable so that Configure finds the Cygwin
versions of programs. Any Windows directories should be removed or
moved to the end of your C.
=item * I
If you do not have I (which is part of the I package),
Configure will B prompt you to install I pages.
=item * Permissions
On WinNT with either the I or I C settings, directory
and file permissions may not be set correctly. Since the build process
creates directories and files, to be safe you may want to run a
C on the entire Perl source tree.
Also, it is a well known WinNT "feature" that files created by a login
that is a member of the I group will be owned by the
I group. Depending on your umask, you may find that you
can not write to files that you just created (because you are no longer
the owner). When using the I C setting, this is not an
issue because it "corrects" the ownership to what you would expect on
a UNIX system.
=back
=head1 CONFIGURE PERL ON CYGWIN
The default options gathered by Configure with the assistance of
F will build a Perl that supports dynamic loading
(which requires a shared F).
This will run Configure and keep a record:
./Configure 2>&1 | tee log.configure
If you are willing to accept all the defaults run Configure with B<-de>.
However, several useful customizations are available.
=head2 Stripping Perl Binaries on Cygwin
It is possible to strip the EXEs and DLLs created by the build process.
The resulting binaries will be significantly smaller. If you want the
binaries to be stripped, you can either add a B<-s> option when Configure
prompts you,
Any additional ld flags (NOT including libraries)? [none] -s
Any special flags to pass to g++ to create a dynamically loaded library?
[none] -s
Any special flags to pass to gcc to use dynamic linking? [none] -s
or you can edit F and uncomment the relevant variables
near the end of the file.
=head2 Optional Libraries for Perl on Cygwin
Several Perl functions and modules depend on the existence of
some optional libraries. Configure will find them if they are
installed in one of the directories listed as being used for library
searches. Pre-built packages for most of these are available from
the Cygwin installer.
=over 4
=item * C<-lcrypt>
The crypt package distributed with Cygwin is a Linux compatible 56-bit
DES crypt port by Corinna Vinschen.
Alternatively, the crypt libraries in GNU libc have been ported to Cygwin.
The DES based Ultra Fast Crypt port was done by Alexey Truhan:
ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/porters/Okhapkin_Sergey/cw32crypt-dist-0.tgz
NOTE: There are various export restrictions on DES implementations,
see the glibc README for more details.
The MD5 port was done by Andy Piper:
ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/porters/Okhapkin_Sergey/libcrypt.tgz
=item * C<-lgdbm_compat> (C