develooper Front page | perl.perl5.changes | Postings from October 2019

[perl.git] branch blead updated. v5.31.4-369-g7adf247031

From:
Steve Hay via perl5-changes
Date:
October 17, 2019 07:07
Subject:
[perl.git] branch blead updated. v5.31.4-369-g7adf247031
Message ID:
E1iKzsc-000659-4g@git.dc.perl.space
In perl.git, the branch blead has been updated

<https://perl5.git.perl.org/perl.git/commitdiff/7adf247031f6eae5aa06093376968e8665ebd888?hp=dd469d97d90432366e531534b23dd30f1f8a07ca>

- Log -----------------------------------------------------------------
commit 7adf247031f6eae5aa06093376968e8665ebd888
Author: Steve Hay <steve.m.hay@googlemail.com>
Date:   Fri Oct 11 08:10:26 2019 +0100

    The VC6 Chainsaw Massacre
    
    Remove MS Visual C++ 6.0 support as agreed in the thread starting here:
    https://www.nntp.perl.org/group/perl.perl5.porters/2019/07/msg255625.html

-----------------------------------------------------------------------

Summary of changes:
 Porting/exercise_makedef.pl |   2 +-
 Porting/todo.pod            |   2 +-
 README.win32                |  20 +++---
 handy.h                     |   3 +-
 inline.h                    |  19 +-----
 makedef.pl                  |   2 +-
 numeric.c                   |   7 ---
 perl.h                      |  15 +----
 sv.c                        |   7 ---
 util.h                      |   5 +-
 win32/GNUmakefile           |  38 +++---------
 win32/Makefile              |  37 +++--------
 win32/config_sh.PL          |   3 -
 win32/include/sys/socket.h  | 148 --------------------------------------------
 win32/makefile.mk           |  38 +++---------
 15 files changed, 38 insertions(+), 308 deletions(-)

diff --git a/Porting/exercise_makedef.pl b/Porting/exercise_makedef.pl
index 5e9d6bf63a..3b2d1b3512 100644
--- a/Porting/exercise_makedef.pl
+++ b/Porting/exercise_makedef.pl
@@ -52,7 +52,7 @@ my @args = (platform => [map {"PLATFORM=$_"} qw(aix win32 os2 netware vms test)]
 	    cflags => ['', 'CCFLAGS=-Dperl=rules -Dzzz'],
 	    Deq => ['', '-Dbeer=foamy'],
 	    D => ['', '-DPERL_IMPLICIT_SYS'],
-	    cctype => ['', map {"CCTYPE=$_"} qw (MSVC60 GCC)],
+	    cctype => ['', 'CCTYPE=GCC'],
 	    filetype => ['', 'FILETYPE=def', 'FILETYPE=imp'],
 	    targ_dir => ['', 'TARG_DIR=t/../'],
 	   );
diff --git a/Porting/todo.pod b/Porting/todo.pod
index 535f30dc5f..f84d025ab4 100644
--- a/Porting/todo.pod
+++ b/Porting/todo.pod
@@ -538,7 +538,7 @@ read-only attribute).
 
 Furthermore, POSIX::access() behaves differently for directories having the
 read-only attribute set depending on what CRT library is being used. For
-example, the _access() function in the VC6 and VC7 CRTs (wrongly) claim that
+example, the _access() function in the VC7 CRT (wrongly) claims that
 such directories are not writable, whereas in fact all directories are writable
 unless access is denied by DACLs. (In the case of directories, the read-only
 attribute actually only means that the directory cannot be deleted.) This CRT
diff --git a/README.win32 b/README.win32
index e182101465..b7d0784762 100644
--- a/README.win32
+++ b/README.win32
@@ -125,15 +125,16 @@ build usually works in this circumstance, but some tests will fail.
 
 =item Microsoft Visual C++
 
-The nmake that comes with Visual C++ will suffice for building. Visual C
-requires that certain things be set up in the console before Visual C will
+The nmake that comes with Visual C++ will suffice for building. Visual C++
+requires that certain things be set up in the console before Visual C++ will
 sucessfully run. To make a console box be able to run the C compiler, you will
-need to beforehand, run the C<vcvars32.bat> file to compile for x86-32 and for
-x86-64 C<vcvarsall.bat x64> or C<vcvarsamd64.bat>. On a typical install of a
-Microsoft C compiler product, these batch files will already be in your C<PATH>
+need to beforehand, run C<vcvarsall.bat x86> to compile for x86-32 and for
+x86-64 C<vcvarsall.bat amd64>. On a typical install of a Microsoft C++
+compiler product, these batch files will already be in your C<PATH>
 environment variable so you may just type them without an absolute path into
 your console. If you need to find the absolute path to the batch file, it is
-usually found somewhere like C:\Program Files\Microsoft Visual Studio\VC98\Bin.
+usually found somewhere like
+C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC.
 With some newer Micrsoft C products (released after ~2004), the installer will
 put a shortcut in the start menu to launch a new console window with the
 console already set up for your target architecture (x86-32 or x86-64 or IA64).
@@ -388,16 +389,9 @@ The default value for CCHOME in the makefiles for Visual C++
 may not be correct for some versions.  Make sure the default exists
 and is valid.
 
-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 want build some core extensions statically into perl's dll, specify
 them in the STATIC_EXT macro.
 
-NOTE: The USE_64_BIT_INT build option is not supported with the 32-bit
-Visual C++ 6.0 compiler.
-
 Be sure to read the instructions near the top of the makefiles carefully.
 
 =item *
diff --git a/handy.h b/handy.h
index ee349432a3..3e6bb2265b 100644
--- a/handy.h
+++ b/handy.h
@@ -116,8 +116,7 @@ C<(bool)!!(cbool)> in a ternary triggers a bug in xlc on AIX
  * XXX Similarly, a Configure probe for __FILE__ and __LINE__ is needed. */
 #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__SUNPRO_C)) /* C99 or close enough. */
 #  define FUNCTION__ __func__
-#elif (defined(USING_MSVC6)) || /* MSVC6 has neither __func__ nor __FUNCTION and no good workarounds, either. */ \
-    (defined(__DECC_VER)) /* Tru64 or VMS, and strict C89 being used, but not modern enough cc (in Tur64, -c99 not known, only -std1). */
+#elif (defined(__DECC_VER)) /* Tru64 or VMS, and strict C89 being used, but not modern enough cc (in Tur64, -c99 not known, only -std1). */
 #  define FUNCTION__ ""
 #else
 #  define FUNCTION__ __FUNCTION__ /* Common extension. */
diff --git a/inline.h b/inline.h
index 9ecdb80988..38b523b15d 100644
--- a/inline.h
+++ b/inline.h
@@ -533,24 +533,7 @@ Perl_variant_byte_number(PERL_UINTMAX_T word)
     /* Get just the msb bits of each byte */
     word &= PERL_VARIANTS_WORD_MASK;
 
-#  ifdef USING_MSVC6    /* VC6 has some issues with the normal code, and the
-                           easiest thing is to hide that from the callers */
-    {
-        unsigned int i;
-        const U8 * s = (U8 *) &word;
-        dTHX;
-
-        for (i = 0; i < sizeof(word); i++ ) {
-            if (s[i]) {
-                return i;
-            }
-        }
-
-        Perl_croak(aTHX_ "panic: %s: %d: unexpected zero word\n",
-                                 __FILE__, __LINE__);
-    }
-
-#  elif BYTEORDER == 0x1234 || BYTEORDER == 0x12345678
+#  if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678
 
     /* Bytes are stored like
      *  Byte8 ... Byte2 Byte1
diff --git a/makedef.pl b/makedef.pl
index f08a41bbd1..2e55877001 100644
--- a/makedef.pl
+++ b/makedef.pl
@@ -1306,7 +1306,7 @@ if ($ARGS{PLATFORM} eq 'win32') {
     print "LIBRARY $dll\n";
     # The DESCRIPTION module definition file statement is not supported
     # by VC7 onwards.
-    if ($ARGS{CCTYPE} =~ /^(?:MSVC60|GCC)$/) {
+    if ($ARGS{CCTYPE} eq 'GCC') {
 	print "DESCRIPTION 'Perl interpreter'\n";
     }
     print "EXPORTS\n";
diff --git a/numeric.c b/numeric.c
index 6f3fd3484a..f5fc1f634a 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1421,10 +1421,6 @@ Perl_my_atof(pTHX_ const char* s)
 
 #if defined(NV_INF) || defined(NV_NAN)
 
-#ifdef USING_MSVC6
-#  pragma warning(push)
-#  pragma warning(disable:4756;disable:4056)
-#endif
 static char*
 S_my_atof_infnan(pTHX_ const char* s, bool negative, const char* send, NV* value)
 {
@@ -1502,9 +1498,6 @@ S_my_atof_infnan(pTHX_ const char* s, bool negative, const char* send, NV* value
     }
     return NULL;
 }
-#ifdef USING_MSVC6
-#  pragma warning(pop)
-#endif
 
 #endif /* if defined(NV_INF) || defined(NV_NAN) */
 
diff --git a/perl.h b/perl.h
index 8f6dca3d29..eeb02d20e1 100644
--- a/perl.h
+++ b/perl.h
@@ -116,11 +116,6 @@
 
 /* <--- here ends the logic shared by perl.h and makedef.pl */
 
-/* Microsoft Visual C++ 6.0 needs special treatment in numerous places */
-#if defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1200 && _MSC_VER < 1300
-#  define USING_MSVC6
-#endif
-
 #undef START_EXTERN_C
 #undef END_EXTERN_C
 #undef EXTERN_C
@@ -1830,11 +1825,10 @@ typedef UVTYPE UV;
 #  else
 #    undef IV_IS_QUAD
 #    undef UV_IS_QUAD
-#if !defined(PERL_CORE) || defined(USING_MSVC6)
+#if !defined(PERL_CORE)
 /* We think that removing this decade-old undef this will cause too much
    breakage on CPAN for too little gain. (See RT #119753)
-   However, we do need HAS_QUAD in the core for use by the drand48 code,
-   but not for Win32 VC6 because it has poor __int64 support. */
+   However, we do need HAS_QUAD in the core for use by the drand48 code. */
 #    undef HAS_QUAD
 #endif
 #  endif
@@ -1926,11 +1920,6 @@ typedef NVTYPE NV;
 #   include <ieeefp.h>
 #endif
 
-#ifdef USING_MSVC6
-/* VC6 has broken NaN semantics: NaN == NaN returns true instead of false,
- * and for example NaN < IV_MIN. */
-#  define NAN_COMPARE_BROKEN
-#endif
 #if defined(__DECC) && defined(__osf__)
 /* Also Tru64 cc has broken NaN comparisons. */
 #  define NAN_COMPARE_BROKEN
diff --git a/sv.c b/sv.c
index 0b878a4630..4bd42b435a 100644
--- a/sv.c
+++ b/sv.c
@@ -2086,10 +2086,6 @@ S_sv_2iuv_non_preserve(pTHX_ SV *const sv
 
 /* If numtype is infnan, set the NV of the sv accordingly.
  * If numtype is anything else, try setting the NV using Atof(PV). */
-#ifdef USING_MSVC6
-#  pragma warning(push)
-#  pragma warning(disable:4756;disable:4056)
-#endif
 static void
 S_sv_setnv(pTHX_ SV* sv, int numtype)
 {
@@ -2118,9 +2114,6 @@ S_sv_setnv(pTHX_ SV* sv, int numtype)
             SvPOK_on(sv); /* PV is okay, though. */
     }
 }
-#ifdef USING_MSVC6
-#  pragma warning(pop)
-#endif
 
 STATIC bool
 S_sv_2iuv_common(pTHX_ SV *const sv)
diff --git a/util.h b/util.h
index 4bc15f6f8e..4b59c7e291 100644
--- a/util.h
+++ b/util.h
@@ -55,9 +55,8 @@ This is a synonym for S<C<(! foldEQ_locale())>>
 /* outside the core, perl.h undefs HAS_QUAD if IV isn't 64-bit
    We can't swap this to HAS_QUAD, because the logic here affects the type of
    perl_drand48_t below, and that is visible outside of the core.  */
-#if defined(U64TYPE) && !defined(USING_MSVC6)
-/* use a faster implementation when quads are available,
- * but not with VC6 on Windows */
+#if defined(U64TYPE)
+/* use a faster implementation when quads are available */
 #    define PERL_DRAND48_QUAD
 #endif
 
diff --git a/win32/GNUmakefile b/win32/GNUmakefile
index 59dbfdab08..b3d9c7b3eb 100644
--- a/win32/GNUmakefile
+++ b/win32/GNUmakefile
@@ -1,7 +1,7 @@
 #
 # Makefile to build perl on Windows using GMAKE.
 # Supported compilers:
-#	Microsoft Visual C++ 6.0 or later
+#	Microsoft Visual C++ 7.0 or later
 #	MinGW with gcc-3.4.5 or later with runtime < 3.21
 #	MinGW64 with gcc-4.4.3 or later
 #	Windows SDK 64-bit compiler and tools
@@ -126,7 +126,6 @@ USE_LARGE_FILES	:= define
 # Uncomment this if you're building a 32-bit perl and want 64-bit integers.
 # (If you're building a 64-bit perl then you will have 64-bit integers whether
 # or not this is uncommented.)
-# Note: This option is not supported in 32-bit MSVC60 builds.
 #
 #USE_64_BIT_INT	:= define
 
@@ -160,8 +159,6 @@ DEFAULT_INC_EXCLUDES_DOT := define
 #
 # uncomment exactly one of the following
 #
-# Visual C++ 6.0 (aka Visual C++ 98)
-#CCTYPE		:= MSVC60
 # Visual C++ .NET 2002/2003 (aka Visual C++ 7.0/7.1) (full version)
 #CCTYPE		:= MSVC70
 # Visual C++ Toolkit 2003 (aka Visual C++ 7.1) (free command-line tools)
@@ -394,8 +391,6 @@ endif
 ifeq ($(CCHOME),)
 ifeq ($(CCTYPE),GCC)
 CCHOME		:= C:\MinGW
-else ifeq ($(CCTYPE),MSVC60)
-CCHOME		:= $(MSVCDir)
 else ifeq ($(CCTYPE),MSVC70)
 CCHOME		:= $(MSVCDir)
 else ifeq ($(CCTYPE),MSVC70FREE)
@@ -446,19 +441,6 @@ ifeq ($(WIN64),define)
 USE_64_BIT_INT	= define
 endif
 
-# Treat 64-bit MSVC60 (doesn't really exist) as SDK2003SP1 because
-# both link against MSVCRT.dll (which is part of Windows itself) and
-# not against a compiler specific versioned runtime.
-ifeq ("$(WIN64) $(CCTYPE)","define MSVC60")
-CCTYPE		= SDK2003SP1
-endif
-
-# Disable the 64-bit-int option for (32-bit) MSVC60 builds since that compiler
-# does not support it.
-ifeq ($(CCTYPE),MSVC60)
-USE_64_BIT_INT	= undef
-endif
-
 # Disable the long double option for MSVC builds since that compiler
 # does not support it.
 ifneq ($(CCTYPE),GCC)
@@ -672,9 +654,7 @@ EMBED_DLL_MANI	= if exist $@.manifest mt -nologo -manifest $@.manifest -outputre
 
 # Most relevant compiler-specific options fall into two groups:
 # either pre-MSVC80 or MSVC80 onwards, so define a macro for this.
-ifeq ($(CCTYPE),MSVC60)
-PREMSVC80	= define
-else ifeq ($(CCTYPE),MSVC70)
+ifeq ($(CCTYPE),MSVC70)
 PREMSVC80	= define
 else ifeq ($(CCTYPE),MSVC70FREE)
 PREMSVC80	= define
@@ -731,23 +711,19 @@ endif
 OPTIMIZE	= -Od -MDd -Zi -D_DEBUG -DDEBUGGING
 LINK_DBG	= -debug
 else
+# Enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG).
 # -O1 yields smaller code, which turns out to be faster than -O2 on x86 and x64
-OPTIMIZE	= -O1 -MD -Zi -DNDEBUG
+OPTIMIZE	= -O1 -MD -Zi -DNDEBUG -GL
 # we enable debug symbols in release builds also
-LINK_DBG	= -debug -opt:ref,icf
+LINK_DBG	= -debug -opt:ref,icf -ltcg
 # you may want to enable this if you want COFF symbols in the executables
 # in addition to the PDB symbols.  The default Dr. Watson that ships with
 # Windows can use the the former but not latter.  The free WinDbg can be
 # installed to get better stack traces from just the PDB symbols, so we
 # avoid the bloat of COFF symbols by default.
-#LINK_DBG	= $(LINK_DBG) -debugtype:both
-ifneq ($(CCTYPE),MSVC60)
-# enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
-OPTIMIZE	+= -GL
-LINK_DBG	+= -ltcg
+#LINK_DBG	+= -debugtype:both
 LIB_FLAGS	= -ltcg
 endif
-endif
 
 ifeq ($(WIN64),define)
 DEFINES		+= -DWIN64 -DCONSERVATIVE
@@ -784,7 +760,7 @@ endif
 # backward compatibility.  We define this symbol here for older 32-bit
 # compilers only (which aren't using it at all) for the sole purpose
 # of getting it into $Config{ccflags}.  That way if someone builds
-# Perl itself with e.g. VC6 but later installs an XS module using VC8
+# Perl itself with e.g. VC7 but later installs an XS module using VC8
 # the time_t types will still be compatible.
 ifeq ($(WIN64),undef)
 ifeq ($(PREMSVC80),define)
diff --git a/win32/Makefile b/win32/Makefile
index 29ae90d4f6..bd61f1afbe 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -1,7 +1,7 @@
 #
 # Makefile to build perl on Windows using Microsoft NMAKE.
 # Supported compilers:
-#	Microsoft Visual C++ 6.0 or later
+#	Microsoft Visual C++ 7.0 or later
 #	Windows SDK 64-bit compiler and tools
 #
 # This is set up to build a perl.exe that runs off a shared library
@@ -91,7 +91,6 @@ USE_LARGE_FILES	= define
 # Uncomment this if you're building a 32-bit perl and want 64-bit integers.
 # (If you're building a 64-bit perl then you will have 64-bit integers whether
 # or not this is uncommented.)
-# Note: This option is not supported in 32-bit MSVC60 builds.
 #
 #USE_64_BIT_INT	= define
 
@@ -111,8 +110,6 @@ DEFAULT_INC_EXCLUDES_DOT = define
 #
 # uncomment exactly one of the following
 #
-# Visual C++ 6.0 (aka Visual C++ 98)
-#CCTYPE		= MSVC60
 # Visual C++ .NET 2002/2003 (aka Visual C++ 7.0/7.1) (full version)
 #CCTYPE		= MSVC70
 # Visual C++ Toolkit 2003 (aka Visual C++ 7.1) (free command-line tools)
@@ -216,8 +213,7 @@ DEFAULT_INC_EXCLUDES_DOT = define
 # define $(VCINSTALLDIR) instead, but from VC++ 14.1 we need the subfolder given
 # by $(VCToolsInstallDir).
 #
-!IF "$(CCTYPE)" == "MSVC60" || \
-    "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
+!IF "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
 CCHOME		= $(MSVCDIR)
 !ELSEIF "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
 CCHOME		= $(VCTOOLSINSTALLDIR)
@@ -362,24 +358,9 @@ WIN64			= undef
 USE_64_BIT_INT	= define
 !ENDIF
 
-# Treat 64-bit MSVC60 (doesn't really exist) as SDK2003SP1 because
-# both link against MSVCRT.dll (which is part of Windows itself) and
-# not against a compiler specific versioned runtime.
-!IF "$(WIN64)" == "define" && "$(CCTYPE)" == "MSVC60"
-CCTYPE		= SDK2003SP1
-!ENDIF
-
-# Disable the 64-bit-int option for (32-bit) MSVC60 builds since that compiler
-# does not support it.
-!IF "$(CCTYPE)" == "MSVC60"
-!UNDEF USE_64_BIT_INT
-USE_64_BIT_INT	= undef
-!ENDIF
-
 # Most relevant compiler-specific options fall into two groups:
 # either pre-MSVC80 or MSVC80 onwards, so define a macro for this.
-!IF "$(CCTYPE)" == "MSVC60" || \
-    "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
+!IF "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
 PREMSVC80	= define
 !ELSE
 PREMSVC80	= undef
@@ -516,22 +497,18 @@ LIBC		= msvcrtd.lib
 OPTIMIZE	= -Od -MDd -Zi -D_DEBUG -DDEBUGGING
 LINK_DBG	= -debug
 !ELSE
+# Enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG).
 # -O1 yields smaller code, which turns out to be faster than -O2 on x86 and x64
-OPTIMIZE	= -O1 -MD -Zi -DNDEBUG
+OPTIMIZE	= -O1 -MD -Zi -DNDEBUG -GL
 # we enable debug symbols in release builds also
-LINK_DBG	= -debug -opt:ref,icf
+LINK_DBG	= -debug -opt:ref,icf -ltcg
 # you may want to enable this if you want COFF symbols in the executables
 # in addition to the PDB symbols.  The default Dr. Watson that ships with
 # Windows can use the the former but not latter.  The free WinDbg can be
 # installed to get better stack traces from just the PDB symbols, so we
 # avoid the bloat of COFF symbols by default.
 #LINK_DBG	= $(LINK_DBG) -debugtype:both
-!  IF "$(CCTYPE)" != "MSVC60"
-# enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
-OPTIMIZE	= $(OPTIMIZE) -GL
-LINK_DBG	= $(LINK_DBG) -ltcg
 LIB_FLAGS	= -ltcg
-!  ENDIF
 !ENDIF
 
 !IF "$(WIN64)" == "define"
@@ -565,7 +542,7 @@ DEFINES		= $(DEFINES) -DNO_THREAD_SAFE_LOCALE
 # backward compatibility.  We define this symbol here for older 32-bit
 # compilers only (which aren't using it at all) for the sole purpose
 # of getting it into $Config{ccflags}.  That way if someone builds
-# Perl itself with e.g. VC6 but later installs an XS module using VC8
+# Perl itself with e.g. VC7 but later installs an XS module using VC8
 # the time_t types will still be compatible.
 !IF "$(WIN64)" == "undef" && "$(PREMSVC80)" == "define"
 BUILDOPT	= $(BUILDOPT) -D_USE_32BIT_TIME_T
diff --git a/win32/config_sh.PL b/win32/config_sh.PL
index fad4d96fa4..bffd4ecf9f 100644
--- a/win32/config_sh.PL
+++ b/win32/config_sh.PL
@@ -263,9 +263,6 @@ else {
 # change some configuration variables based on compiler version
 if ($opt{cc} =~ /\bcl/ and $opt{ccversion} =~ /^(\d+)/) {
     my $ccversion = $1;
-    if ($ccversion < 13) { # VC6
-	$opt{ar} ='lib';
-    }
     if ($ccversion >= 14) { # VC8+
 	$opt{sGMTIME_max} = 32535291599;
 	$opt{sLOCALTIME_max} = 32535244799;
diff --git a/win32/include/sys/socket.h b/win32/include/sys/socket.h
index 301aa29351..5374a806f5 100644
--- a/win32/include/sys/socket.h
+++ b/win32/include/sys/socket.h
@@ -15,155 +15,7 @@
 /* Too late to include winsock2.h if winsock.h has already been loaded */
 #ifndef _WINSOCKAPI_
 #  include <winsock2.h>
-   /* We need to include ws2tcpip.h to get the IPv6 definitions.
-    * It will in turn include wspiapi.h.  Later versions of that
-    * header in the Windows SDK generate C++ template code that
-    * can't be compiled with VC6 anymore.  The _WSPIAPI_COUNTOF
-    * definition below prevents wspiapi.h from generating this
-    * incompatible code.
-    */
-#  define _WSPIAPI_COUNTOF(_Array) (sizeof(_Array) / sizeof(_Array[0]))
 #  include <ws2tcpip.h>
-
-#  ifndef SIO_GET_INTERFACE_LIST_EX
-
-#    ifndef MSG_WAITALL
-#      define MSG_WAITALL     0x8
-#    endif
-
-     /* The ws2tcpip.h header included in VC6 doesn't define the
-      * sin6_scope_id member of sockaddr_in6.  We define our own
-      * version and redefine sockaddr_in6 to point to this one
-      * instead for compiling e.g. Socket.xs.
-      */
-
-     struct my_sockaddr_in6 {
-         short   sin6_family;        /* AF_INET6 */
-         u_short sin6_port;          /* Transport level port number */
-         u_long  sin6_flowinfo;      /* IPv6 flow information */
-         struct in_addr6 sin6_addr;  /* IPv6 address */
-         u_long sin6_scope_id;       /* set of interfaces for a scope */
-     };
-#    define sockaddr_in6 my_sockaddr_in6
-
-     /* Provide implementations of IN6ADDR_SETANY() and IN6ADDR_SETLOOPBACK
-      * that also initialize the sin6_scope_id field.
-      */
-#    undef IN6ADDR_SETANY
-#    define IN6ADDR_SETANY(x) {\
-(x)->sin6_family = AF_INET6; \
-(x)->sin6_port = 0; \
-(x)->sin6_flowinfo = 0; \
-*((u_long *)((x)->sin6_addr.s6_addr)    ) = 0; \
-*((u_long *)((x)->sin6_addr.s6_addr) + 1) = 0; \
-*((u_long *)((x)->sin6_addr.s6_addr) + 2) = 0; \
-*((u_long *)((x)->sin6_addr.s6_addr) + 3) = 0; \
-(x)->sin6_scope_id = 0; \
-}
-
-#    undef IN6ADDR_SETLOOPBACK
-#    define IN6ADDR_SETLOOPBACK(x) {\
-(x)->sin6_family = AF_INET6; \
-(x)->sin6_port = 0; \
-(x)->sin6_flowinfo = 0; \
-*((u_long *)((x)->sin6_addr.s6_addr)    ) = 0; \
-*((u_long *)((x)->sin6_addr.s6_addr) + 1) = 0; \
-*((u_long *)((x)->sin6_addr.s6_addr) + 2) = 0; \
-*((u_long *)((x)->sin6_addr.s6_addr) + 3) = 1; \
-(x)->sin6_scope_id = 0; \
-}
-
-#    ifndef IPV6_HDRINCL
-#      define IPV6_HDRINCL            2
-#    endif
-#    ifndef IPV6_UNICAST_HOPS
-#      define IPV6_UNICAST_HOPS       4
-#    endif
-#    ifndef IPV6_MULTICAST_IF
-#      define IPV6_MULTICAST_IF       9
-#    endif
-#    ifndef IPV6_MULTICAST_HOPS
-#      define IPV6_MULTICAST_HOPS     10
-#    endif
-#    ifndef IPV6_MULTICAST_LOOP
-#      define IPV6_MULTICAST_LOOP     11
-#    endif
-#    ifndef IPV6_ADD_MEMBERSHIP
-#      define IPV6_ADD_MEMBERSHIP     12
-#    endif
-#    ifndef IPV6_DROP_MEMBERSHIP
-#      define IPV6_DROP_MEMBERSHIP    13
-#    endif
-#    ifndef IPV6_JOIN_GROUP
-#      define IPV6_JOIN_GROUP         IPV6_ADD_MEMBERSHIP
-#    endif
-#    ifndef IPV6_LEAVE_GROUP
-#      define IPV6_LEAVE_GROUP        IPV6_DROP_MEMBERSHIP
-#    endif
-#    ifndef IPV6_PKTINFO
-#      define IPV6_PKTINFO            19
-#    endif
-#    ifndef IPV6_HOPLIMIT
-#      define IPV6_HOPLIMIT           21
-#    endif
-#    ifndef IPV6_PROTECTION_LEVEL
-#      define IPV6_PROTECTION_LEVEL   23
-#    endif
-
-     /* The ws2tcpip.h header included in MinGW includes ipv6_mreq already */
-#    ifndef __GNUC__
-       typedef struct ipv6_mreq {
-           struct in_addr6 ipv6mr_multiaddr;
-           unsigned int    ipv6mr_interface;
-       } IPV6_MREQ;
-#    endif
-
-#    ifndef EAI_AGAIN
-#      define EAI_AGAIN       WSATRY_AGAIN
-#    endif
-#    ifndef EAI_BADFLAGS
-#      define EAI_BADFLAGS    WSAEINVAL
-#    endif
-#    ifndef EAI_FAIL
-#      define EAI_FAIL        WSANO_RECOVERY
-#    endif
-#    ifndef EAI_FAMILY
-#      define EAI_FAMILY      WSAEAFNOSUPPORT
-#    endif
-#    ifndef EAI_MEMORY
-#      define EAI_MEMORY      WSA_NOT_ENOUGH_MEMORY
-#    endif
-#    ifndef EAI_NODATA
-#      define EAI_NODATA      WSANO_DATA
-#    endif
-#    ifndef EAI_NONAME
-#      define EAI_NONAME      WSAHOST_NOT_FOUND
-#    endif
-#    ifndef EAI_SERVICE
-#      define EAI_SERVICE     WSATYPE_NOT_FOUND
-#    endif
-#    ifndef EAI_SOCKTYPE
-#      define EAI_SOCKTYPE    WSAESOCKTNOSUPPORT
-#    endif
-
-#    ifndef NI_NOFQDN
-#      define NI_NOFQDN       0x01
-#    endif
-#    ifndef NI_NUMERICHOST
-#      define NI_NUMERICHOST  0x02
-#    endif
-#    ifndef NI_NAMEREQD
-#      define NI_NAMEREQD     0x04
-#    endif
-#    ifndef NI_NUMERICSERV
-#      define NI_NUMERICSERV  0x08
-#    endif
-#    ifndef NI_DGRAM
-#      define NI_DGRAM        0x10
-#    endif
-
-#  endif
-
 #endif
 
 /* Early Platform SDKs have an incorrect definition of EAI_NODATA */
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 9d40c6cfc5..ae0c7a43d6 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -1,7 +1,7 @@
 #
 # Makefile to build perl on Windows using DMAKE.
 # Supported compilers:
-#	Microsoft Visual C++ 6.0 or later
+#	Microsoft Visual C++ 7.0 or later
 #	MinGW with gcc-3.4.5 or later with runtime < 3.21
 #	MinGW64 with gcc-4.4.3 or later
 #	Windows SDK 64-bit compiler and tools
@@ -98,7 +98,6 @@ USE_LARGE_FILES	*= define
 # Uncomment this if you're building a 32-bit perl and want 64-bit integers.
 # (If you're building a 64-bit perl then you will have 64-bit integers whether
 # or not this is uncommented.)
-# Note: This option is not supported in 32-bit MSVC60 builds.
 #
 #USE_64_BIT_INT	*= define
 
@@ -132,8 +131,6 @@ DEFAULT_INC_EXCLUDES_DOT *= define
 #
 # uncomment exactly one of the following
 #
-# Visual C++ 6.0 (aka Visual C++ 98)
-#CCTYPE		*= MSVC60
 # Visual C++ .NET 2002/2003 (aka Visual C++ 7.0/7.1) (full version)
 #CCTYPE		*= MSVC70
 # Visual C++ Toolkit 2003 (aka Visual C++ 7.1) (free command-line tools)
@@ -395,8 +392,7 @@ CCTYPE		:= MSVC$(MSVCVER)
 .IF "$(CCHOME)" == ""
 .IF "$(CCTYPE)" == "GCC"
 CCHOME		*= C:\MinGW
-.ELIF "$(CCTYPE)" == "MSVC60" || \
-    "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
+.ELIF "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
 CCHOME		*= $(MSVCDir)
 .ELIF "$(CCTYPE)" == "MSVC141" || "$(CCTYPE)" == "MSVC142"
 CCHOME		*= $(VCToolsInstallDir)
@@ -429,19 +425,6 @@ WIN64			= undef
 USE_64_BIT_INT	= define
 .ENDIF
 
-# Treat 64-bit MSVC60 (doesn't really exist) as SDK2003SP1 because
-# both link against MSVCRT.dll (which is part of Windows itself) and
-# not against a compiler specific versioned runtime.
-.IF "$(WIN64)" == "define" && "$(CCTYPE)" == "MSVC60"
-CCTYPE		= SDK2003SP1
-.ENDIF
-
-# Disable the 64-bit-int option for (32-bit) MSVC60 builds since that compiler
-# does not support it.
-.IF "$(CCTYPE)" == "MSVC60"
-USE_64_BIT_INT	!= undef
-.ENDIF
-
 # Disable the long double option for MSVC builds since that compiler
 # does not support it.
 .IF "$(CCTYPE)" != "GCC"
@@ -648,8 +631,7 @@ EMBED_DLL_MANI	= if exist $@.manifest mt -nologo -manifest $@.manifest -outputre
 
 # Most relevant compiler-specific options fall into two groups:
 # either pre-MSVC80 or MSVC80 onwards, so define a macro for this.
-.IF "$(CCTYPE)" == "MSVC60" || \
-    "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
+.IF "$(CCTYPE)" == "MSVC70" || "$(CCTYPE)" == "MSVC70FREE"
 PREMSVC80	= define
 .ELSE
 PREMSVC80	= undef
@@ -696,23 +678,19 @@ LIBC		= msvcrtd.lib
 OPTIMIZE	= -Od -MDd -Zi -D_DEBUG -DDEBUGGING
 LINK_DBG	= -debug
 .ELSE
+# Enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG).
 # -O1 yields smaller code, which turns out to be faster than -O2 on x86 and x64
-OPTIMIZE	= -O1 -MD -Zi -DNDEBUG
+OPTIMIZE	= -O1 -MD -Zi -DNDEBUG -GL
 # we enable debug symbols in release builds also
-LINK_DBG	= -debug -opt:ref,icf
+LINK_DBG	= -debug -opt:ref,icf -ltcg
 # you may want to enable this if you want COFF symbols in the executables
 # in addition to the PDB symbols.  The default Dr. Watson that ships with
 # Windows can use the the former but not latter.  The free WinDbg can be
 # installed to get better stack traces from just the PDB symbols, so we
 # avoid the bloat of COFF symbols by default.
-#LINK_DBG	= $(LINK_DBG) -debugtype:both
-.IF "$(CCTYPE)" != "MSVC60"
-# enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
-OPTIMIZE	+= -GL
-LINK_DBG	+= -ltcg
+#LINK_DBG	+= -debugtype:both
 LIB_FLAGS	= -ltcg
 .ENDIF
-.ENDIF
 
 .IF "$(WIN64)" == "define"
 DEFINES		+= -DWIN64 -DCONSERVATIVE
@@ -745,7 +723,7 @@ DEFINES		+= -DNO_THREAD_SAFE_LOCALE
 # backward compatibility.  We define this symbol here for older 32-bit
 # compilers only (which aren't using it at all) for the sole purpose
 # of getting it into $Config{ccflags}.  That way if someone builds
-# Perl itself with e.g. VC6 but later installs an XS module using VC8
+# Perl itself with e.g. VC7 but later installs an XS module using VC8
 # the time_t types will still be compatible.
 .IF "$(WIN64)" == "undef"
 .IF "$(PREMSVC80)" == "define"

-- 
Perl5 Master Repository



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About