diff options
-rw-r--r-- | Porting/exercise_makedef.pl | 2 | ||||
-rw-r--r-- | Porting/todo.pod | 2 | ||||
-rw-r--r-- | README.win32 | 20 | ||||
-rw-r--r-- | handy.h | 3 | ||||
-rw-r--r-- | inline.h | 19 | ||||
-rw-r--r-- | makedef.pl | 2 | ||||
-rw-r--r-- | numeric.c | 7 | ||||
-rw-r--r-- | perl.h | 15 | ||||
-rw-r--r-- | sv.c | 7 | ||||
-rw-r--r-- | util.h | 5 | ||||
-rw-r--r-- | win32/GNUmakefile | 38 | ||||
-rw-r--r-- | win32/Makefile | 37 | ||||
-rw-r--r-- | win32/config_sh.PL | 3 | ||||
-rw-r--r-- | win32/include/sys/socket.h | 148 | ||||
-rw-r--r-- | 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 * @@ -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. */ @@ -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"; @@ -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) */ @@ -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 @@ -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) @@ -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" |