summaryrefslogtreecommitdiff
path: root/cygwin32/build-instructions.steven-morlock2
blob: 82ff38727929ab08b191451e937e8c9ba06b9537 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
This document is obsolete. Refer to README.cygwin32.

This is an addendum to Steven Morlock's original post.  
perl5.005_03-static-patch, contains the USEMYBINMODE correction described 
below.

*****************************
Subject:  Re: HOWTO: Builiding Perl under Win95/98 using Cygwin32  
Author:   Steven Morlock <newspost@morlock.net>
Date:     1998/12/22
Forum:    comp.lang.perl.misc 

I realized that in my original post I left out a couple important
details.  I'd like to correct that here.

There is a need to address the issue of end of lines being CR/NL or
NL on the Windows platform.  Cygwin32 by default converts NL to CR/NL
during file I/O by non Cygwin32-savvy applications.  This means that
Perl, since it does not support 'binmode' for the Cygwin32 platform, 
will not be able to read & write untranslated/binary files.  There are
two methods of over coming this.  The first is to mount the Cygwin32
partitions in binary mode.  The second is to enable binmode support
in Perl.  In the original post I had mounted the partition as binary
and neglected to include that fact in the post.

* Using a binary partition:

  Mount the Perl source & installation destination partitions in binary
  mode.  Refer to the  Cygnus documentation on 'mount' for details:

    http://sourceware.cygnus.com/cygwin/cygwin-ug-net/mount.html

  On my system since everything was in the root partition I issued the
  following commands from the bash shell:

    umount /
    mount -b c:\\ /

  You must also get and install the gzip'd version of the Perl source 
  code archive. The zip'd version of the archive has all NL converted 
  to CR/NL pairs in all text files.  So you should be downloading the 
  files ending in '.gz', not '.zip'.

* Patching Perl to add Cygwin32 binmode support:

  For this method you can use either the gzip'd or zip'd version of the
  Perl source archive.

  Apply the following patch to <PERL>/perl.h:

*** perl.h.ORIG Tue Dec 22 09:22:42 1998
--- perl.h Tue Dec 22 09:43:10 1998
***************
*** 1480,1483 ****
--- 1480,1495 ----
  #endif

+ #if defined(__CYGWIN32__)
+   /* USEMYBINMODE
+    *   This symbol, if defined, indicates that the program should
+    *   use the routine my_binmode(FILE *fp, char iotype) to insure
+    *   that a file is in "binary" mode -- that is, that no translation
+    *   of bytes occurs on read or write operations.
+    */
+   #define USEMYBINMODE / **/
+   #define my_binmode(fp, iotype) \
+             (PerlLIO_setmode(PerlIO_fileno(fp), O_BINARY) != -1 ? 
TRUE : NULL)
+ #endif
+
  #include "regexp.h"
  #include "sv.h"

Regards,
Steve

--
Steven Morlock
Foliage Software Systems
aka The Nerd Farm
http://www.foliage.com