# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-#INST_VER = \5.9.5
+#INST_VER = \5.10.0
#
# Comment this out if you DON'T want your perl installation to have
#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)
#
# set this to additionally provide a statically linked perl-static.exe.
# Note that dynamic loading will not work with this perl, so you must
-# include required modules statically using STATIC_EXT variable below.
-# A static library perl59s.lib will also be created.
+# include required modules statically using the STATIC_EXT or ALL_STATIC
+# variables below. A static library perl59s.lib will also be created.
# Ordinary perl.exe is not affected by this option.
#
#BUILD_STATIC = define
#
+# in addition to BUILD_STATIC the option ALL_STATIC makes *every*
+# extension get statically built
+# This will result in a very large perl executable, but the main purpose
+# is to have proper linking set so as to be able to create miscellaneous
+# executables with different built-in extensions
+#
+#ALL_STATIC = define
+
+#
#
# set the install locations of the compiler include/libraries
# Running VCVARS32.BAT is *required* when using Visual C.
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"
-DEFINES = $(DEFINES) -D_CRT_SECURE_NO_DEPRECATE -wd4996
+# 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
# Use the MSVCRT read() fix if the PerlCRT was not chosen, but only when using
SETARGV_OBJ = setargv$(o)
!ENDIF
-# specify static extensions here
+!IF "$(ALL_STATIC)" == "define"
+# some exclusions, unfortunately, until fixed:
+# - Win32 extension contains overlapped symbols with win32.c (BUG!)
+# - MakeMaker isn't capable enough for SDBM_File (smaller bug)
+# - Encode (encoding search algorithm relies on shared library?)
+# - Hash/Util (fails various tests when linked statically)
+STATIC_EXT = * !Win32 !SDBM_File !Encode !Hash/Util
+!ELSE
+# specify static extensions here, for example:
#STATIC_EXT = Cwd Compress/Raw/Zlib
STATIC_EXT = Win32CORE
+!ENDIF
DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
# Top targets
#
-all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
- $(X2P) MakePPPort Extensions $(PERLSTATIC)
+all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) MakePPPort \
+ $(PERLEXE) $(X2P) Extensions $(PERLSTATIC)
@echo Everything is up to date. '$(MAKE_BARE) test' to run test suite.
..\regnodes.h : ..\regcomp.sym ..\regcomp.pl ..\regexp.h
cd ..
- regcomp.pl
+ miniperl regcomp.pl
cd win32
..\regcharclass.h : ..\Porting\regcharclass.pl
cd ..
- Porting\regcharclass.pl
+ miniperl Porting\regcharclass.pl
cd win32
regnodes : ..\regnodes.h
$(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
$(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(LINK_FLAGS) \
- @Extensions_static $(PERLSTATICLIB) \
+ @Extensions_static $(PERLSTATICLIB) /PDB:NONE \
$(LIBFILES) $(PERLEXEST_OBJ) $(SETARGV_OBJ) $(PERLEXE_RES)
$(EMBED_EXE_MANI)