This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
7c44dbefd9d76dfd1020059c42c2ae4ed95c91df
[perl5.git] / README.cygwin32
1 If you read this file _as_is_, just ignore the funny characters you
2 see. It is written in the POD format (see pod/perlpod.pod) which is
3 specially designed to be readable as is.
4
5 =head1 NAME
6
7 README.cygwin32 - notes about porting Perl to Cygwin32
8
9 =head1 SYNOPSIS
10
11 =over
12
13 =item Cygwin32
14
15    The Cygwin tools are ports of the popular GNU development tools for
16 Windows NT, 95, and 98.  They run thanks to the Cygwin library which
17 provides the UNIX system calls and environment these programs expect.
18 More info about this project can be found at it's home page
19 http://sourceware.cygnus.com/cygwin/
20
21 =item libperl.dll
22
23 These instructions and the default cygwin32 hints build a a shared
24 libperl.dll Perl library and enables dynamically loaded extensions.
25
26
27 =back
28
29 =head1 BUILDING
30
31 =head2 Prerequisites
32
33 =over
34
35 =item Cygwin b20.1
36
37 The latest stable Cygwin suite is beta20.1.  It may be
38 downloaded from ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/latest/
39 or many mirror sites around the world.
40
41 =item egcs-1.1.2
42
43 This port was built with egcs-1.1.2 downloaded from
44 ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/cygwin/egcs-1.1.2/
45
46 =item install executable
47
48 To make life easier, you should download
49 ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Humblet_Pierre_A/install-cygwin-b20.sh,
50 and use it as your install "executable." Just follow the instructions
51 that are embedding as comments in the .sh file.
52
53 =item crypt library
54
55 http://miracle.geol.msu.ru/sos/ points to two different crypt
56 libraries ported to cygwin.  This has been tested with the libcrypt.tgz
57 by Andy Piper. His home page can be found at
58 http://www.xemacs.freeserve.co.uk/
59
60 =back
61
62 =head2 Configure
63
64 Check hints/cygwin32.sh for any system specific settings.  In
65 particular change libpth if Cygwin is installed somewhere other
66 than /cygnus.
67
68 run "sh Configure".  
69
70 When confronted with this prompt:
71
72 =begin text
73
74         First time through, eh?  I have some defaults handy for the
75         following systems:
76            .
77            .
78            .
79         Which of these apply, if any?
80
81 =end text
82
83 select "cygwin32".
84
85 Do not use the malloc that comes with perl--using the perl malloc
86 collides with some cygwin startup routines. 
87
88 =head2 make
89
90 Run "make".  After that, run "make test" to see how stable your system is.
91 For me, at io/taint.t you may see several Win32 "Unable To Locate DLL"
92 messages (just click Ok) that requires cygwin1.dll to be present in the
93 build directory or somewhere in system path (/WINNT, /WINNT/System,
94 /WINNT/System32).  And, at lib/io_sock.t you may see several Win32
95 "Application Error" messages (just click Ok) and the test waits for a
96 died child that has to be killed manually.  Other test scripts seem to
97 be more or less harmless.  The result of ./perl harness reads:
98
99 =begin text
100
101 Failed Test  Status Wstat Total Fail  Failed  List of failed
102 -------------------------------------------------------------------------------
103 lib/anydbm.t      2   512    12    8  66.67%  5-12
104 lib/findbin.t                 1    1 100.00%  1
105 lib/io_sock.t     9  2304     5    4  80.00%  2-5
106 lib/sdbm.t        2   512    18   15  83.33%  2, 5-18
107 op/magic.t                   35    2   5.71%  23, 29
108 op/split.t                   25    1   4.00%  11
109 op/stat.t                    58    2   3.45%  9, 26
110 op/taint.t                  149    3   2.01%  1, 3, 31
111 pragma/locale.t  11  2816   102    4   3.92%  99-102
112 9 tests skipped, plus 35 subtests skipped.
113 Failed 9/190 test scripts, 95.26% okay. 40/6452 subtests failed, 99.38% okay.
114
115 =end text
116
117 =head1 BUGS
118
119 A lot of warnings about incompatible pointer types and comparison
120 lacking a cast.  This is because of __declspec(dllimport).
121
122 Upon each start, make warns that a rule for perlmain.o is overrided.
123 Yes, it is.  In order to use libperl.dll, perlmain needs to import
124 symbols from there.  I saw no better solution than adding an explicit
125 define to the rule.
126
127 The lib/io_sock.t failure seems to be a problem with a forked child
128 not having its DLLs remapped.
129
130 make clean does not remove library .def and .exe.core files.
131
132 ld2 script is installed with reference to source directory.  You should
133 change this to /usr/local/bin (or whatever) after install.
134
135 .bat wrappers for installed utility scripts are not made during installation.
136
137 =head1 AUTHOR
138
139 alexander smishlajev <als@turnhere.com>
140
141 =head1 DISCLAIMER
142
143 I am not going to maintain this document or this port.  I only wanted
144 to make perl porting a bit easier.  If failed, I can't be helpful for you.
145
146 =head1 HISTORY
147
148 17..25-apr-1999.  perl 5.005_03.  cygwin b20.1  egcs 1.1.2.
149                   far 1.60.  nescafe classic.
150
151 efifer@sanwaint.com - Wed May 12 17:22:42 BST 1999
152
153     Removed all references to the impure_ptr hack since it is no longer
154     needed.  Some minor cleanup of Alexander's work and a few bug fixes.
155
156 =cut