This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document the unportability of atan2() edge cases
[perl5.git] / README.win32
index 9d99244..b00d04c 100644 (file)
@@ -41,13 +41,18 @@ additional software to run (other than what came with your operating
 system).  Currently, this port is capable of using one of the
 following compilers on the Intel x86 architecture:
 
-      Borland C++              version 5.02 or later
-      Microsoft Visual C++     version 4.2 or later
-      MinGW with gcc           gcc version 2.95.2 or later
+      Borland C++           version 5.02 or later
+      Microsoft Visual C++  version 4.2 or later
+      MinGW with gcc        gcc version 2.95.2 or later
 
 The last of these is a high quality freeware compiler.  Use version
 3.2.x or later for the best results with this compiler.
 
+The Microsoft Visual C++ compiler is also now being given away free in
+the "Visual C++ Toolkit 2003", and also as part of the ".NET Framework
+SDK".  This is the same compiler that ships with "Visual Studio .NET 2003
+Professional".
+
 This port can also be built on the Intel IA64 using:
 
       Microsoft Platform SDK   Nov 2001 (64-bit compiler and tools)
@@ -74,15 +79,9 @@ and parallelability.
 
 A port of dmake for Windows is available from:
 
-    http://www.cpan.org/authors/id/GSAR/dmake-4.1pl1-win32.zip
-
-(This is a fixed version of the original dmake sources obtained from
-http://www.wticorp.com/  As of version 4.1PL1, the original
-sources did not build as shipped and had various other problems.
-A patch is included in the above fixed version.)
+    http://search.cpan.org/dist/dmake/
 
-Fetch and install dmake somewhere on your path (follow the instructions
-in the README.NOW file).
+Fetch and install dmake somewhere on your path.
 
 There exists a minor coexistence problem with dmake and Borland C++
 compilers.  Namely, if a distribution has C files named with mixed
@@ -132,6 +131,106 @@ and edit win32/config.vc to change "make=nmake" into "make=dmake".  The
 latter step is only essential if you want to use dmake as your default
 make for building extensions using MakeMaker.
 
+=item Microsoft Visual C++ Toolkit 2003
+
+This free toolkit contains the same compiler and linker that ship with
+Visual Studio .NET 2003 Professional, but doesn't contain everything
+necessary to build Perl.
+
+You will also need to download the "Platform SDK" (the "Core SDK" and "MDAC
+SDK" components are required) for header files, libraries and rc.exe, and
+".NET Framework SDK" for more libraries and nmake.exe.  Note that the latter
+(which also includes the free compiler and linker) requires the ".NET
+Framework Redistributable" to be installed first.  This can be downloaded and
+installed separately, but is included in the "Visual C++ Toolkit 2003" anyway.
+
+These packages can all be downloaded by searching in the Download Center at
+http://www.microsoft.com/downloads/search.aspx?displaylang=en
+
+The Platform SDK packages can also be obtained from the Platform SDK Update
+site: http://www.microsoft.com/msdownload/platformsdk/sdkupdate  Note that this
+site requires Internet Explorer 5.0 or later to function, but the site's home
+page currently gives links to two download pages for users of other browsers:
+
+For Windows XP Service Pack 2:
+http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
+
+For Windows Server 2003:
+http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
+
+According to the download pages the Toolkit and the .NET Framework SDK are only
+supported on Windows 2000/XP/2003, so trying to use these tools on Windows
+95/98/ME and even Windows NT probably won't work.
+
+Install the Toolkit first, then the Platform SDK, then the .NET Framework SDK.
+Setup your environment as follows (assuming default installation locations
+were chosen):
+
+       SET PATH=%SystemRoot%\system32;%SystemRoot%;C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;C:\Program Files\Microsoft SDK\Bin;C:\Program Files\Microsoft.NET\SDK\v1.1\Bin
+       SET INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;C:\Program Files\Microsoft SDK\include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include
+       SET LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;C:\Program Files\Microsoft SDK\lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
+
+Several required files will still be missing:
+
+=over 4
+
+=item *
+
+cvtres.exe is required by link.exe when using a .res file.  It is actually
+installed by the .NET Framework SDK, but into a location such as the
+following:
+
+       C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
+
+Copy it from there to C:\Program Files\Microsoft SDK\Bin
+
+=item *
+
+lib.exe is normally used to build libraries, but link.exe with the /lib
+option also works, so change win32/config.vc to use it instead:
+
+Change the line reading:
+
+       ar='lib'
+
+to:
+
+       ar='link /lib'
+
+It may also be useful to create a batch file called lib.bat in
+C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin containing:
+
+       @echo off
+       link /lib %*
+
+for the benefit of any naughty C extension modules that you might want to build
+later which explicitly reference "lib" rather than taking their value from
+$Config{ar}.
+
+=item *
+
+setargv.obj is required to build perlglob.exe (and perl.exe if the USE_SETARGV
+option is enabled).  The Platform SDK supplies this object file in source form
+in C:\Program Files\Microsoft SDK\src\crt.  Copy setargv.c, cruntime.h and
+internal.h from there to some temporary location and build setargv.obj using
+
+       cl.exe /c /I. /D_CRTBLD setargv.c
+
+Then copy setargv.obj to C:\Program Files\Microsoft SDK\lib
+
+Alternatively, if you don't need perlglob.exe and don't need to enable the
+USE_SETARGV option then you can safely just remove all mention of $(GLOBEXE)
+from win32/Makefile and setargv.obj won't be required anyway.
+
+=back
+
+Perl should now build using the win32/Makefile.  You will need to edit that
+file to comment-out CCTYPE = MSVC60 (since that enables delay-loading of the
+Winsock DLL which the free toolkit does not support) and to set CCHOME,
+CCINCDIR and CCLIBDIR as per the environment setup above.  You may also want to
+change both mentions of the compiler's "-Gf" switch to "-GF" since the former
+is deprecated in VC7 and will be removed from future versions.
+
 =item Microsoft Platform SDK 64-bit Compiler
 
 The nmake that comes with the Platform SDK will suffice for building
@@ -140,8 +239,8 @@ shells available after you install the Platform SDK from the Start Menu.
 
 =item MinGW release 3 with gcc
 
-The latest release of MinGW at the time of writing is 3.1.0, which come
-with gcc-3.2.3, and can be downloaded here:
+The latest release of MinGW at the time of writing is 3.1.0, which contain
+gcc-3.2.3.  It can be downloaded here:
 
     http://www.mingw.org/
 
@@ -152,7 +251,7 @@ You also need dmake.  See L</"Make"> above on how to get it.
 
 =item MinGW release 1 with gcc
 
-The MinGW-1.1 bundle comes with gcc-2.95.3.
+The MinGW-1.1 bundle contains gcc-2.95.3.
 
 Make sure you install the binaries that work with MSVCRT.DLL as indicated
 in the README for the GCC bundle.  You may need to set up a few environment
@@ -773,9 +872,13 @@ of O'Reilly and Associates, Inc. Used with permission.
 
 =item Nick Ing-Simmons E<lt>nick@ing-simmons.netE<gt>
 
+=item Jan Dubois E<lt>jand@activestate.comE<gt>
+
+=item Steve Hay E<lt>steve.hay@uk.radan.comE<gt>
+
 =back
 
-This document is maintained by Gurusamy Sarathy.
+This document is maintained by Jan Dubois.
 
 =head1 SEE ALSO
 
@@ -800,6 +903,6 @@ Win9x support was added in 5.6 (Benjamin Stuhl).
 
 Support for 64-bit Windows added in 5.8 (ActiveState Corp).
 
-Last updated: 30 July 2004
+Last updated: 15 February 2005
 
 =cut