In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/cfef31b27d1a56cda74e23698243f3be70bd9cb3?hp=bf236c8ee5b1b47df84e2e196fb90a43c6abd5a2>
- Log ----------------------------------------------------------------- commit cfef31b27d1a56cda74e23698243f3be70bd9cb3 Author: Jan Dubois <[email protected]> Date: Wed Jul 21 18:28:33 2010 -0700 Get rid of PERL_POLLUTE PERL_POLLUTE was added (but undefined by default) in 5.6 to optionally expose older 5.005 symbols for backwards compatibility. It's use was always discouraged, and MakeMaker contains a more specific escape hatch: perl Makefile.PL POLLUTE=1 This can be used for modules that have not been upgraded to 5.6 naming conventions (and really should be completely obsolete by now). M embed.pl M embedvar.h M win32/Makefile M win32/makefile.mk commit b6c85593a554a961f8d6994f7e4c5551a0a5eb2c Author: Jan Dubois <[email protected]> Date: Wed Jul 21 18:15:54 2010 -0700 Don't pretend to support really old VC++ compilers The oldest supported Visual C++ compiler is VC6 (released in 1998), and we already jump through some hoops for it by inlining newer API definitions in win32/win32.c. It is desirable to keep supporting VC6 because it is the last MSVC release that links against MSVCRT.dll and not against a compiler specific runtime library. M win32/Makefile M win32/makefile.mk commit 6d8f7c99d6105c3e91ba7907750682703fe0414b Author: Jan Dubois <[email protected]> Date: Wed Jul 21 18:00:07 2010 -0700 Get rid of obsolete PerlCRT.dll support PerlCRT.dll was a patched version of MSVCRT.dll that fixed/worked around a few known issues with Microsoft's C runtime library. These issues have long been fixed by updates to MSVCRT.dll, and AFAIK nobody has used PerlCRT.dll in almost 10 years now. M pod/perlxstut.pod M win32/Makefile M win32/makefile.mk commit 02e200fccc6abfac054810724450c50d9b2d96cb Author: Jan Dubois <[email protected]> Date: Wed Jul 21 17:46:00 2010 -0700 Add CCTYPE value for Windows Server 2003 SP1 compilers The SDK2003SP1 compiler is special because it needs to link in an additional bufferoverflow.obj file, which does not exist for the other 64-bit MSVC compilers. This change un-breaks the Makefle for all these other compilers (e.g. VS2008). M win32/Makefile commit f33a21d84a9428cd5c501b39e3eea520b4f28643 Author: Jan Dubois <[email protected]> Date: Wed Jul 21 17:21:05 2010 -0700 Remove deprecated -Wp64 compiler option The option seems to have been cargo-culted, as it is not relevant to the Perl sources, and would really be useful for 32-bit compiles only anyways (it detects certain potential 64-bit compatibility issues in 32-bit compiles; the 64-bit compilers always report these issues by default). M win32/Makefile ----------------------------------------------------------------------- Summary of changes: embed.pl | 12 -------- embedvar.h | 33 ----------------------- pod/perlxstut.pod | 8 ----- win32/Makefile | 74 +++++++++++++++-------------------------------------- win32/makefile.mk | 51 +++++------------------------------- 5 files changed, 28 insertions(+), 150 deletions(-) diff --git a/embed.pl b/embed.pl index 9c55cb4..fea46df 100755 --- a/embed.pl +++ b/embed.pl @@ -745,18 +745,6 @@ print $em <<'END'; #endif /* PERL_GLOBAL_STRUCT */ -#ifdef PERL_POLLUTE /* disabled by default in 5.6.0 */ - -END - -for $sym (sort @extvars) { - print $em hide($sym,"PL_$sym"); -} - -print $em <<'END'; - -#endif /* PERL_POLLUTE */ - /* ex: set ro: */ END diff --git a/embedvar.h b/embedvar.h index dde1f27..25c033c 100644 --- a/embedvar.h +++ b/embedvar.h @@ -845,37 +845,4 @@ #endif /* PERL_GLOBAL_STRUCT */ -#ifdef PERL_POLLUTE /* disabled by default in 5.6.0 */ - -#define DBassertion PL_DBassertion -#define DBsingle PL_DBsingle -#define DBsub PL_DBsub -#define compiling PL_compiling -#define curcop PL_curcop -#define curstash PL_curstash -#define debstash PL_debstash -#define defgv PL_defgv -#define diehook PL_diehook -#define dirty PL_dirty -#define dowarn PL_dowarn -#define errgv PL_errgv -#define na PL_na -#define no_modify PL_no_modify -#define perl_destruct_level PL_perl_destruct_level -#define perldb PL_perldb -#define ppaddr PL_ppaddr -#define rsfp PL_rsfp -#define rsfp_filters PL_rsfp_filters -#define stack_base PL_stack_base -#define stack_sp PL_stack_sp -#define stdingv PL_stdingv -#define sv_arenaroot PL_sv_arenaroot -#define sv_no PL_sv_no -#define sv_undef PL_sv_undef -#define sv_yes PL_sv_yes -#define tainted PL_tainted -#define tainting PL_tainting - -#endif /* PERL_POLLUTE */ - /* ex: set ro: */ diff --git a/pod/perlxstut.pod b/pod/perlxstut.pod index 62bef3b..de5b32a 100644 --- a/pod/perlxstut.pod +++ b/pod/perlxstut.pod @@ -198,14 +198,6 @@ been deleted): You can safely ignore the line about "prototyping behavior" - it is explained in L<perlxs/"The PROTOTYPES: Keyword">. -If you are on a Win32 system, and the build process fails with linker -errors for functions in the C library, check if your Perl is configured -to use PerlCRT (running B<perl -V:libc> should show you if this is the -case). If Perl is configured to use PerlCRT, you have to make sure -PerlCRT.lib is copied to the same location that msvcrt.lib lives in, -so that the compiler can find it on its own. msvcrt.lib is usually -found in the Visual C compiler's lib directory (e.g. C:/DevStudio/VC/lib). - Perl has its own special way of easily writing test scripts, but for this example only, we'll create our own test script. Create a file called hello that looks like this: diff --git a/win32/Makefile b/win32/Makefile index 87c502d..500d42a 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -1,8 +1,8 @@ # -# Makefile to build perl on Windows NT using Microsoft NMAKE. +# Makefile to build perl on Windows using Microsoft NMAKE. # Supported compilers: -# Visual C++ 2.0 or later -# MS Platform SDK 64-bit compiler and tools +# Microsoft Visual C++ 6.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 # (perl513.dll). Also makes individual DLLs for the XS extensions. @@ -95,16 +95,14 @@ USE_LARGE_FILES = define # # uncomment exactly one of the following # -# Visual C++ 2.x -#CCTYPE = MSVC20 -# Visual C++ > 2.x and < 6.x -#CCTYPE = MSVC # Visual C++ 6.x (aka Visual C++ 98) CCTYPE = MSVC60 # Visual C++ Toolkit 2003 (aka Visual C++ 7.x) (free command-line tools) #CCTYPE = MSVC70FREE # Visual C++ .NET 2003 (aka Visual C++ 7.x) (full version) #CCTYPE = MSVC70 +# Windows Server 2003 SP1 Platform SDK (April 2005) +#CCTYPE = SDK2003SP1 # Visual C++ 2005 Express Edition (aka Visual C++ 8.x) (free version) #CCTYPE = MSVC80FREE # Visual C++ 2005 (aka Visual C++ 8.x) (full version) @@ -122,17 +120,6 @@ CCTYPE = MSVC60 #CFG = Debug # -# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler. -# It has patches that fix known bugs in older versions of MSVCRT.DLL. -# This currently requires VC 5.0 with Service Pack 3 or later. -# Get it from CPAN at http://www.cpan.org/authors/id/D/DO/DOUGL/ -# and follow the directions in the package to install. -# -# Not recommended if you have VC 6.x and you're not running Windows 9x. -# -#USE_PERLCRT = define - -# # uncomment to enable linking with setargv.obj under the Visual C # compiler. Setting this options enables perl to expand wildcards in # arguments, but it may be harder to use alternate methods like @@ -197,7 +184,6 @@ CRYPT_SRC = fcrypt.c # so you may have to set CCHOME explicitly (spaces in the path name should # not be quoted) # -#CCHOME = f:\msvc20 CCHOME = $(MSVCDIR) CCINCDIR = $(CCHOME)\include CCLIBDIR = $(CCHOME)\lib @@ -218,16 +204,6 @@ BUILDOPT = $(BUILDOPTEXTRA) #BUILDOPT = $(BUILDOPT) -DNO_HASH_SEED # -# This should normally be disabled. Adding -DPERL_POLLUTE enables support -# for old symbols by default, at the expense of extreme pollution. You most -# probably just want to build modules that won't compile with -# perl Makefile.PL POLLUTE=1 -# instead of enabling this. Please report such modules to the respective -# authors. -# -#BUILDOPT = $(BUILDOPT) -DPERL_POLLUTE - -# # This should normally be disabled. Enabling it will disable the File::Glob # implementation of CORE::glob. # @@ -306,10 +282,6 @@ USE_PERLIO = undef USE_LARGE_FILES = undef !ENDIF -!IF "$(USE_PERLCRT)" == "" -USE_PERLCRT = undef -!ENDIF - !IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef" USE_MULTI = define !ENDIF @@ -350,6 +322,13 @@ WIN64 = undef !ENDIF !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 + ARCHITECTURE = $(PROCESSOR_ARCHITECTURE) !IF "$(ARCHITECTURE)" == "AMD64" ARCHITECTURE = x64 @@ -435,18 +414,10 @@ LOCDEFS = -DPERLDLL -DPERL_CORE SUBSYS = console CXX_FLAG = -TP -EHsc -!IF "$(USE_PERLCRT)" != "define" LIBC = msvcrt.lib -!ELSE -LIBC = PerlCRT.lib -!ENDIF !IF "$(CFG)" == "Debug" -! IF "$(CCTYPE)" == "MSVC20" -OPTIMIZE = -Od -MD -Z7 -DDEBUGGING -! ELSE OPTIMIZE = -Od -MD -Zi -DDEBUGGING -! ENDIF LINK_DBG = -debug !ELSE OPTIMIZE = -MD -Zi -DNDEBUG @@ -471,7 +442,7 @@ OPTIMIZE = $(OPTIMIZE) -O1 !IF "$(WIN64)" == "define" DEFINES = $(DEFINES) -DWIN64 -DCONSERVATIVE -OPTIMIZE = $(OPTIMIZE) -Wp64 -fp:precise +OPTIMIZE = $(OPTIMIZE) -fp:precise !ENDIF # For now, silence VC++ 8.x's and 9.x's warnings about "unsafe" CRT functions @@ -481,13 +452,11 @@ OPTIMIZE = $(OPTIMIZE) -Wp64 -fp:precise DEFINES = $(DEFINES) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE !ENDIF -# Use the MSVCRT read() fix if the PerlCRT was not chosen, but only when using -# VC++ 6.x or earlier. Later versions use MSVCR70.dll, MSVCR71.dll, etc, which -# do not require the fix. -!IF "$(CCTYPE)" == "MSVC20" || "$(CCTYPE)" == "MSVC" || "$(CCTYPE)" == "MSVC60" -! IF "$(USE_PERLCRT)" != "define" +# Use the MSVCRT read() fix only when using VC++ 6.x or earlier. Later +# versions use MSVCR70.dll, MSVCR71.dll, etc, which do not require the +# fix. +!IF "$(CCTYPE)" == "MSVC60" BUILDOPT = $(BUILDOPT) -DPERL_MSVCRT_READFIX -! ENDIF !ENDIF LIBBASEFILES = $(CRYPT_LIB) \ @@ -496,15 +465,14 @@ LIBBASEFILES = $(CRYPT_LIB) \ netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \ version.lib odbc32.lib odbccp32.lib comctl32.lib -# The 64 bit Platform SDK compilers contain a runtime library that doesn't -# include the buffer overrun verification code used by the /GS switch. +# The 64 bit Windows Server 2003 SP1 SDK compilers link against MSVCRT.dll, which +# doesn't include the buffer overrun verification code used by the /GS switch. # Since the code links against libraries that are compiled with /GS, this -# "security cookie verification" must be included via bufferoverlow.lib. -!IF "$(WIN64)" == "define" +# "security cookie verification" code must be included via bufferoverflow.lib. +!IF "$(WIN64)" == "define" && "$(CCTYPE)" == "SDK2003SP1" LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib !ENDIF -# we add LIBC here, since we may be using PerlCRT.dll LIBFILES = $(LIBBASEFILES) $(LIBC) #EXTRACFLAGS = -nologo -GF -W4 -wd4127 -wd4706 diff --git a/win32/makefile.mk b/win32/makefile.mk index 3dab6e8..c7053ff 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -1,10 +1,10 @@ # -# Makefile to build perl on Windows NT using DMAKE. +# Makefile to build perl on Windows using DMAKE. # Supported compilers: -# Visual C++ 2.0 or later +# Microsoft Visual C++ 6.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** +# Windows SDK 64-bit compiler and tools **experimental** # # This is set up to build a perl.exe that runs off a shared library # (perl513.dll). Also makes individual DLLs for the XS extensions. @@ -97,10 +97,6 @@ USE_LARGE_FILES *= define # # uncomment exactly one of the following # -# Visual C++ 2.x -#CCTYPE *= MSVC20 -# Visual C++ > 2.x and < 6.x -#CCTYPE *= MSVC # Visual C++ 6.x (aka Visual C++ 98) #CCTYPE *= MSVC60 # Visual C++ Toolkit 2003 (aka Visual C++ 7.x) (free command-line tools) @@ -140,17 +136,6 @@ CCTYPE *= GCC #CFG *= Debug # -# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler. -# It has patches that fix known bugs in older versions of MSVCRT.DLL. -# This currently requires VC 5.0 with Service Pack 3 or later. -# Get it from CPAN at http://www.cpan.org/authors/id/D/DO/DOUGL/ -# and follow the directions in the package to install. -# -# Not recommended if you have VC 6.x and you're not running Windows 9x. -# -#USE_PERLCRT *= define - -# # uncomment to enable linking with setargv.obj under the Visual C # compiler. Setting this options enables perl to expand wildcards in # arguments, but it may be harder to use alternate methods like @@ -273,16 +258,6 @@ BUILDOPT *= $(BUILDOPTEXTRA) #BUILDOPT += -DNO_HASH_SEED # -# This should normally be disabled. Adding -DPERL_POLLUTE enables support -# for old symbols by default, at the expense of extreme pollution. You most -# probably just want to build modules that won't compile with -# perl Makefile.PL POLLUTE=1 -# instead of enabling this. Please report such modules to the respective -# authors. -# -#BUILDOPT += -DPERL_POLLUTE - -# # This should normally be disabled. Enabling it will disable the File::Glob # implementation of CORE::glob. # @@ -334,7 +309,6 @@ USE_ITHREADS *= undef USE_IMP_SYS *= undef USE_PERLIO *= undef USE_LARGE_FILES *= undef -USE_PERLCRT *= undef .IF "$(USE_IMP_SYS)" == "define" PERL_MALLOC = undef @@ -589,18 +563,10 @@ LOCDEFS = -DPERLDLL -DPERL_CORE SUBSYS = console CXX_FLAG = -TP -EHsc -.IF "$(USE_PERLCRT)" != "define" LIBC = msvcrt.lib -.ELSE -LIBC = PerlCRT.lib -.ENDIF .IF "$(CFG)" == "Debug" -.IF "$(CCTYPE)" == "MSVC20" -OPTIMIZE = -Od -MD -Z7 -DDEBUGGING -.ELSE OPTIMIZE = -O1 -MD -Zi -DDEBUGGING -.ENDIF LINK_DBG = -debug .ELSE OPTIMIZE = -MD -Zi -DNDEBUG @@ -635,14 +601,12 @@ OPTIMIZE += -Wp64 -fp:precise DEFINES += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE .ENDIF -# Use the MSVCRT read() fix if the PerlCRT was not chosen, but only when using -# VC++ 6.x or earlier. Later versions use MSVCR70.dll, MSVCR71.dll, etc, which -# do not require the fix. -.IF "$(CCTYPE)" == "MSVC20" || "$(CCTYPE)" == "MSVC" || "$(CCTYPE)" == "MSVC60" -.IF "$(USE_PERLCRT)" != "define" +# Use the MSVCRT read() fix only when using VC++ 6.x or earlier. Later +# versions use MSVCR70.dll, MSVCR71.dll, etc, which do not require the +# fix. +.IF "$(CCTYPE)" == "MSVC60" BUILDOPT += -DPERL_MSVCRT_READFIX .ENDIF -.ENDIF LIBBASEFILES = $(CRYPT_LIB) \ oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \ @@ -658,7 +622,6 @@ LIBBASEFILES = $(CRYPT_LIB) \ LIBBASEFILES += bufferoverflowU.lib .ENDIF -# we add LIBC here, since we may be using PerlCRT.dll LIBFILES = $(LIBBASEFILES) $(LIBC) EXTRACFLAGS = -nologo -GF -W3 -- Perl5 Master Repository
