From 4a3cf07bda2f6af05e179d2069439e7a3f613a45 Mon Sep 17 00:00:00 2001 From: Steve Hay Date: Wed, 29 Aug 2007 16:58:25 +0000 Subject: [PATCH] Add support for Visual C++ 2008 Express Edition (Beta 2) p4raw-id: //depot/perl@31761 --- README.win32 | 37 +++++++++++++++++++++++++++++++++---- makedef.pl | 2 +- win32/Makefile | 36 ++++++++++++++++++++++-------------- win32/makefile.mk | 36 ++++++++++++++++++++++-------------- 4 files changed, 78 insertions(+), 33 deletions(-) diff --git a/README.win32 b/README.win32 index 39f8134..710266f 100644 --- a/README.win32 +++ b/README.win32 @@ -52,9 +52,9 @@ The Borland C++ and Microsoft Visual C++ compilers are also now being given away free. The Borland compiler is available as "Borland C++ Compiler Free Command Line Tools" and is the same compiler that ships with the full "Borland C++ Builder" product. The Microsoft compiler is available as -"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" +"Visual C++ Toolkit 2003" or "Visual C++ 2005/2008 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/2008 Professional" respectively. This port can also be built on the Intel IA64 using: @@ -135,6 +135,35 @@ 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++ 2008 Express Edition Beta 2 + +This free version of Visual C++ 2008 Professional contains the same compiler +and linker that ship with the full version, and also contains everything +necessary to build Perl, rather than requiring a separate download of the +Platform SDK like previous versions did. + +The Beta 2 package is currently available from + +http://msdn2.microsoft.com/en-us/express/future/default.aspx +http://msdn2.microsoft.com/en-gb/express/future/default.aspx + +The final release version will probably be found by searching in the Download +Center at http://www.microsoft.com/downloads/search.aspx?displaylang=en in due +course. + +Install Visual C++ 2008, then setup your environment using + + C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat + +(assuming the default installation location was chosen). + +Perl should now build using the win32/Makefile. You will need to edit that +file to set + + CCTYPE = MSVC90FREE + +first. + =item Microsoft Visual C++ 2005 Express Edition This free version of Visual C++ 2005 Professional contains the same compiler @@ -969,6 +998,6 @@ Win9x support was added in 5.6 (Benjamin Stuhl). Support for 64-bit Windows added in 5.8 (ActiveState Corp). -Last updated: 25 May 2007 +Last updated: 29 August 2007 =cut diff --git a/makedef.pl b/makedef.pl index b16a0aa..b080f40 100644 --- a/makedef.pl +++ b/makedef.pl @@ -163,7 +163,7 @@ if ($PLATFORM =~ /^win(?:32|ce)$/) { print "LIBRARY $dll\n"; # The DESCRIPTION module definition file statement is not supported # by VC7 onwards. - if ($CCTYPE !~ /^MSVC7/ && $CCTYPE !~ /^MSVC8/) { + if ($CCTYPE !~ /^MSVC7/ && $CCTYPE !~ /^MSVC8/ && $CCTYPE !~ /^MSVC9/) { print "DESCRIPTION 'Perl interpreter'\n"; } print "EXPORTS\n"; diff --git a/win32/Makefile b/win32/Makefile index cbfae95..57426ab 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -104,6 +104,10 @@ CCTYPE = MSVC60 #CCTYPE = MSVC80FREE # Visual C++ 2005 (aka Visual C++ 8.x) (full version) #CCTYPE = MSVC80 +# Visual C++ 2008 Express Edition (aka Visual C++ 9.x) (free version) +#CCTYPE = MSVC90FREE +# Visual C++ 2008 (aka Visual C++ 9.x) (full version) +#CCTYPE = MSVC90 # # uncomment next line if you want debug version of perl (big,slow) @@ -358,20 +362,23 @@ BUILDOPT = $(BUILDOPT) -DUSE_PERLIO ARCHNAME = $(ARCHNAME)-thread !ENDIF -# Visual C++ 98, .NET 2003 and 2005 specific. -# VC++ 6.x, 7.x and 8.x can load DLL's on demand. Makes the test suite run in -# about 10% less time. (The free version of 7.x can't do this, but the free -# version of 8.x can.) -!IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" || \ - "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" +# Visual C++ 98, .NET 2003, 2005 and 2008 specific. +# VC++ 6.x, 7.x, 8.x and 9.x can load DLL's on demand. Makes the test suite run +# in about 10% less time. (The free version of 7.x can't do this, but the free +# versions of 8.x and 9.x can.) +!IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" || \ + "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \ + "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" DELAYLOAD = -DELAYLOAD:ws2_32.dll delayimp.lib !ENDIF -# Visual C++ 2005 (VC++ 8.x) creates manifest files for EXEs and DLLs. These -# either need copying everywhere with the binaries, or else need embedding in -# them otherwise MSVCR80.dll won't be found. Embed them for simplicity, and -# delete them afterwards so that they don't get installed too. -!IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" +# Visual C++ 2005 and 2008 (VC++ 8.x and 9.x) create manifest files for EXEs and +# DLLs. These either need copying everywhere with the binaries, or else need +# embedding in them otherwise MSVCR80.dll or MSVCR90.dll won't be found. Embed +# them for simplicity, and delete them afterwards so that they don't get +# installed too. +!IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \ + "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" EMBED_EXE_MANI = mt -nologo -manifest $@.manifest -outputresource:$@;1 && \ del $@.manifest EMBED_DLL_MANI = mt -nologo -manifest $@.manifest -outputresource:$@;2 && \ @@ -454,9 +461,10 @@ DEFINES = $(DEFINES) -DWIN64 -DCONSERVATIVE OPTIMIZE = $(OPTIMIZE) -Wp64 -fp:precise !ENDIF -# For now, silence VC++ 8.x's warnings about "unsafe" CRT functions and POSIX -# CRT function names being deprecated. -!IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" +# For now, silence VC++ 8.x's and 9.x's warnings about "unsafe" CRT functions +# and POSIX CRT function names being deprecated. +!IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \ + "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" DEFINES = $(DEFINES) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE !ENDIF diff --git a/win32/makefile.mk b/win32/makefile.mk index 60688d9..df032e1 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -106,6 +106,10 @@ USE_LARGE_FILES *= define #CCTYPE *= MSVC80FREE # Visual C++ 2005 (aka Visual C++ 8.x) (full version) #CCTYPE *= MSVC80 +# Visual C++ 2008 Express Edition (aka Visual C++ 9.x) (free version) +#CCTYPE *= MSVC90FREE +# Visual C++ 2008 (aka Visual C++ 9.x) (full version) +#CCTYPE *= MSVC90 # Borland 5.02 or later #CCTYPE *= BORLAND # MinGW with gcc-2.95.2 or later @@ -357,20 +361,23 @@ ARCHNAME = MSWin32-$(ARCHITECTURE) ARCHNAME !:= $(ARCHNAME)-thread .ENDIF -# Visual C++ 98, .NET 2003 and 2005 specific. -# VC++ 6.x, 7.x and 8.x can load DLL's on demand. Makes the test suite run in -# about 10% less time. (The free version of 7.x can't do this, but the free -# version of 8.x can.) -.IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" \ - "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" +# Visual C++ 98, .NET 2003, 2005 and 2008 specific. +# VC++ 6.x, 7.x, 8.x and 9.x can load DLL's on demand. Makes the test suite run +# in about 10% less time. (The free version of 7.x can't do this, but the free +# versions of 8.x and 9.x can.) +.IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" || \ + "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || + "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" DELAYLOAD *= -DELAYLOAD:ws2_32.dll delayimp.lib .ENDIF -# Visual C++ 2005 (VC++ 8.x) creates manifest files for EXEs and DLLs. These -# either need copying everywhere with the binaries, or else need embedding in -# them otherwise MSVCR80.dll won't be found. Embed them for simplicity, and -# delete them afterwards so that they don't get installed too. -.IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" +# Visual C++ 2005 and 2008 (VC++ 8.x and 9.x) create manifest files for EXEs and +# DLLs. These either need copying everywhere with the binaries, or else need +# embedding in them otherwise MSVCR80.dll or MSVCR90.dll won't be found. Embed +# them for simplicity, and delete them afterwards so that they don't get +# installed too. +.IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \ + "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" EMBED_EXE_MANI = mt -nologo -manifest $@.manifest -outputresource:$@;1 && \ del $@.manifest EMBED_DLL_MANI = mt -nologo -manifest $@.manifest -outputresource:$@;2 && \ @@ -565,9 +572,10 @@ DEFINES += -DWIN64 -DCONSERVATIVE OPTIMIZE += -Wp64 -fp:precise .ENDIF -# For now, silence VC++ 8.x's warnings about "unsafe" CRT functions and POSIX -# CRT function names being deprecated. -.IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" +# For now, silence VC++ 8.x's and 9.x's warnings about "unsafe" CRT functions +# and POSIX CRT function names being deprecated. +.IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \ + "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE" DEFINES += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE .ENDIF -- 2.7.4