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:
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
Support for 64-bit Windows added in 5.8 (ActiveState Corp).
-Last updated: 25 May 2007
+Last updated: 29 August 2007
=cut
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";
#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)
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 && \
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
#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
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 && \
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