Building with Visual C++ 2005 now works except for one test failure
Steve Hay [Tue, 28 Nov 2006 16:01:55 +0000 (16:01 +0000)]
p4raw-id: //depot/perl@29409

README.win32
win32/Makefile
win32/makefile.mk

index 4d7e2c9..25ebadd 100644 (file)
@@ -42,7 +42,7 @@ 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 2.0 through 7.0 (and possibly later)
+      Microsoft Visual C++  version 2.0 or later
       MinGW with gcc        gcc version 2.95.2 or later
 
 The last of these is a high quality freeware compiler.  Use version
@@ -55,8 +55,7 @@ Command Line Tools" and is the same compiler that ships with the full
 "Visual C++ Toolkit 2003" or "Visual C++ 2005 Express Edition" (and also as
 part of the ".NET Framework SDK") and is the same compiler that ships with
 "Visual C++ .NET 2003 Professional" or "Visual C++ 2005 Professional"
-respectively.  Currently, Perl cannot be compiled with Visual C++ 2005 (aka
-Visual C++ 8.x).
+respectively.
 
 This port can also be built on the Intel IA64 using:
 
@@ -138,9 +137,6 @@ make for building extensions using MakeMaker.
 
 =item Microsoft Visual C++ 2005 Express Edition
 
-B<NOTE: While these instructions are in theory correct, Perl currently cannot
-be compiled with Visual C++ 2005.>
-
 This free version of Visual C++ 2005 Professional contains the same compiler
 and linker that ship with the full version, but doesn't contain everything
 necessary to build Perl.
@@ -370,6 +366,9 @@ You may also need to comment out the C<DELAYLOAD = ...> line in the
 Makefile if you're using VC++ 6.0 without the latest service pack and
 the linker reports an internal error.
 
+If you are using VC++ 4.2 or earlier then you'll have to change the /EHsc
+option in the CXX_FLAG macro to the equivalent /GX option.
+
 If you have either the source or a library that contains des_fcrypt(),
 enable the appropriate option in the makefile.  A ready-to-use version
 of fcrypt.c, based on the version originally written by Eric Young at
@@ -411,6 +410,11 @@ spaces.  So don't do that.
 If you are running the tests from a emacs shell window, you may see
 failures in op/stat.t.  Run "dmake test-notty" in that case.
 
+If you're using the Microsoft Visual C++ 2005 compiler (VC++ 8) then you'll
+find that F<ext/IO/t/io_sock.t> currently produces some warnings and then
+hangs.  You will need to kill the hung perl.exe process to allow the
+remainder of the test suite to complete.
+
 If you're using the Borland compiler, you may see a failure in op/taint.t
 arising from the inability to find the Borland Runtime DLLs on the system
 default path.  You will need to copy the DLLs reported by the messages
@@ -956,6 +960,6 @@ Win9x support was added in 5.6 (Benjamin Stuhl).
 
 Support for 64-bit Windows added in 5.8 (ActiveState Corp).
 
-Last updated: 30 September 2005
+Last updated: 28 November 2006
 
 =cut
index 5c6209a..6399b57 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Makefile to build perl on Windows NT using Microsoft NMAKE.
 # Supported compilers:
-#      Visual C++ 2.0 through 7.0 (and possibly newer versions)
+#      Visual C++ 2.0 or later
 #      MS Platform SDK 64-bit compiler and tools
 #
 # This is set up to build a perl.exe that runs off a shared library
@@ -413,7 +413,7 @@ INCLUDES    = -I$(COREDIR) -I.\include -I. -I..
 DEFINES                = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
 LOCDEFS                = -DPERLDLL -DPERL_CORE
 SUBSYS         = console
-CXX_FLAG       = -TP -GX
+CXX_FLAG       = -TP -EHsc
 
 !IF "$(USE_PERLCRT)" != "define"
 LIBC   = msvcrt.lib
index 1600398..75975a0 100644 (file)
@@ -1,9 +1,9 @@
 #
 # Makefile to build perl on Windows NT using DMAKE.
 # Supported compilers:
-#      Visual C++ 2.0 through 7.0 (and possibly newer versions)
-#      Borland C++ 5.02 or better
-#      MinGW with gcc-2.95.2 or better
+#      Visual C++ 2.0 or later
+#      Borland C++ 5.02 or later
+#      MinGW with gcc-2.95.2 or later
 #      MS Platform SDK 64-bit compiler and tools **experimental**
 #
 # This is set up to build a perl.exe that runs off a shared library
@@ -524,7 +524,7 @@ INCLUDES    = -I$(COREDIR) -I.\include -I. -I..
 DEFINES                = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
 LOCDEFS                = -DPERLDLL -DPERL_CORE
 SUBSYS         = console
-CXX_FLAG       = -TP -GX
+CXX_FLAG       = -TP -EHsc
 
 .IF "$(USE_PERLCRT)" != "define"
 LIBC   = msvcrt.lib