This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Clarify example of .. in perlop
[perl5.git] / win32 / makefile.mk
index 130ee19..ab98162 100644 (file)
@@ -1,9 +1,9 @@
 #
 # Makefile to build perl on Windows NT using DMAKE.
 # Supported compilers:
-#      Visual C++ 2.0 through 6.0 (and possibly newer versions)
-#      Borland C++ 5.02
-#      Mingw32 with gcc-2.95.2 or better  **experimental**
+#      Visual C++ 2.0 through 7.0 (and possibly newer versions)
+#      Borland C++ 5.02 or better
+#      Mingw32 with gcc-2.95.2 or better
 #      MS Platform SDK 64-bit compiler and tools **experimental**
 #
 # This is set up to build a perl.exe that runs off a shared library
@@ -34,7 +34,7 @@ INST_TOP      *= $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-#INST_VER      *= \5.9.2
+#INST_VER      *= \5.9.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -48,6 +48,14 @@ INST_TOP     *= $(INST_DRV)\perl
 #INST_ARCH     *= \$(ARCHNAME)
 
 #
+# Uncomment this if you want perl to run
+#      $Config{sitelibexp}\sitecustomize.pl
+# before anything else.  This script can then be set up, for example,
+# to add additional entries to @INC.
+#
+#USE_SITECUST  *= define
+
+#
 # uncomment to enable multiple interpreters.  This is need for fork()
 # emulation and for thread support.
 #
@@ -79,7 +87,7 @@ USE_PERLIO    *= define
 # Comment this out if you don't want to enable large file support for
 # some reason.  Should normally only be changed to maintain compatibility
 # with an older release of perl.
-USE_LARGE_FILES *= define
+USE_LARGE_FILES        *= define
 
 #
 # uncomment exactly one of the following
@@ -88,8 +96,12 @@ USE_LARGE_FILES *= define
 #CCTYPE                *= MSVC20
 # Visual C++ > 2.x and < 6.x
 #CCTYPE                *= MSVC
-# Visual C++ >= 6.x
+# Visual C++ 6.x (aka Visual Studio 98)
 #CCTYPE                *= MSVC60
+# Visual C++ Toolkit 2003 (free version of Visual C++ 7.x command-line tools)
+#CCTYPE                *= MSVC70FREE
+# Visual C++ 7.x (aka Visual Studio .NET 2003) (full version)
+#CCTYPE                *= MSVC70
 # Borland 5.02 or later
 #CCTYPE                *= BORLAND
 # MinGW with gcc-2.95.2 or later
@@ -97,10 +109,10 @@ CCTYPE             *= GCC
 
 #
 # uncomment this if your Borland compiler is older than v5.4.
-#BCCOLD = define
+#BCCOLD                *= define
 #
 # uncomment this if you want to use Borland's VCL as your CRT
-#BCCVCL = define
+#BCCVCL                *= define
 
 #
 # uncomment this if you are compiling under Windows 95/98 and command.com
@@ -172,7 +184,7 @@ CRYPT_SRC   *= fcrypt.c
 # not be quoted)
 #
 .IF "$(CCTYPE)" == "BORLAND"
-CCHOME         *= C:\borland\bcc55
+CCHOME         *= C:\Borland\BCC55
 .ELIF "$(CCTYPE)" == "GCC"
 CCHOME         *= C:\MinGW
 .ELSE
@@ -184,6 +196,17 @@ CCLIBDIR   *= $(CCHOME)\lib
 #
 # Additional compiler flags can be specified here.
 #
+BUILDOPT       *= $(BUILDOPTEXTRA)
+
+#
+# Adding -DPERL_HASH_SEED_EXPLICIT will disable randomization of Perl's
+# internal hash function unless the PERL_HASH_SEED environment variable is set.
+# Alternatively, adding -DNO_HASH_SEED will completely disable the
+# randomization feature. 
+# The latter is required to maintain binary compatibility with Perl 5.8.0.
+#
+#BUILDOPT      += -DPERL_HASH_SEED_EXPLICIT
+#BUILDOPT      += -DNO_HASH_SEED
 
 #
 # This should normally be disabled.  Adding -DPERL_POLLUTE enables support
@@ -204,6 +227,7 @@ CCLIBDIR    *= $(CCHOME)\lib
 #
 # This should normally be disabled.  Enabling it causes perl to read scripts
 # in text mode (which is the 5.005 behavior) and will break ByteLoader.
+#
 #BUILDOPT      += -DPERL_TEXTMODE_SCRIPTS
 
 #
@@ -240,6 +264,7 @@ CRYPT_FLAG  = -DHAVE_DES_FCRYPT
 PERL_MALLOC    *= undef
 DEBUG_MSTATS   *= undef
 
+USE_SITECUST   *= undef
 USE_MULTI      *= undef
 USE_ITHREADS   *= undef
 USE_IMP_SYS    *= undef
@@ -267,6 +292,10 @@ USE_MULTI  != define
 USE_MULTI      != define
 .ENDIF
 
+.IF "$(USE_SITECUST)" == "define"
+BUILDOPT       += -DUSE_SITECUSTOMIZE
+.ENDIF
+
 .IF "$(USE_MULTI)" != "undef"
 BUILDOPT       += -DPERL_IMPLICIT_CONTEXT
 .ENDIF
@@ -305,19 +334,11 @@ ARCHNAME  = MSWin32-$(PROCESSOR_ARCHITECTURE)
 ARCHNAME       !:= $(ARCHNAME)-thread
 .ENDIF
 
-# Visual Studio 98 specific
-.IF "$(CCTYPE)" == "MSVC60"
-
-# VC 6.0 can load the socket dll on demand.  Makes the test suite
-# run in about 10% less time.
+# Visual Studio 98 and .NET 2003 specific
+# VC++ 6.x and 7.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, however.)
+.IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70"
 DELAYLOAD      *= -DELAYLOAD:ws2_32.dll -DELAYLOAD:shell32.dll delayimp.lib
-
-.IF "$(CFG)" == "Debug"
-.ELSE
-# VC 6.0 seems capable of compiling perl correctly with optimizations
-# enabled.  Anything earlier fails tests.
-CFG            *= Optimize
-.ENDIF
 .ENDIF
 
 ARCHDIR                = ..\lib\$(ARCHNAME)
@@ -353,7 +374,7 @@ LINK32              = tlink32
 .ENDIF
 LIB32          = tlib /P128
 IMPLIB         = implib -c
-RSC            = rc
+RSC            = brcc32
 
 #
 # Options
@@ -366,7 +387,14 @@ SUBSYS             = console
 CXX_FLAG       = -P
 
 LIBC           = cw32mti.lib
-LIBFILES       = $(CRYPT_LIB) import32.lib $(LIBC)
+
+# same libs as MSVC, except Borland doesn't have oldnames.lib
+LIBFILES       = $(CRYPT_LIB) \
+               kernel32.lib user32.lib gdi32.lib winspool.lib \
+               comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
+               netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
+               version.lib odbc32.lib odbccp32.lib \
+               import32.lib $(LIBC)
 
 .IF  "$(CFG)" == "Debug"
 OPTIMIZE       = -v -D_RTLDLL -DDEBUGGING
@@ -376,9 +404,11 @@ OPTIMIZE   = -O2 -D_RTLDLL
 LINK_DBG       =
 .ENDIF
 
+EXTRACFLAGS    =
 CFLAGS         = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
                $(PCHFLAGS) $(OPTIMIZE)
-LINK_FLAGS     = $(LINK_DBG) -L"$(INST_COREDIR)"  -L"$(CCLIBDIR)"
+LINK_FLAGS     = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)" \
+               -L"$(CCLIBDIR)\PSDK"
 OBJOUT_FLAG    = -o
 EXEOUT_FLAG    = -e
 LIBOUT_FLAG    =
@@ -421,7 +451,7 @@ LIBFILES    = $(CRYPT_LIB) $(LIBC) \
                  -lmoldname -lkernel32 -luser32 -lgdi32 \
                  -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 \
                  -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr \
-                 -lwinmm -lversion -lodbc32
+                 -lwinmm -lversion -lodbc32 -lodbccp32
 
 .IF  "$(CFG)" == "Debug"
 OPTIMIZE       = -g -O2 -DDEBUGGING
@@ -431,6 +461,7 @@ OPTIMIZE    = -s -O2
 LINK_DBG       = -s
 .ENDIF
 
+EXTRACFLAGS    =
 CFLAGS         = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)
 LINK_FLAGS     = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
 OBJOUT_FLAG    = -o
@@ -497,6 +528,14 @@ DEFINES            += -DWIN64 -DCONSERVATIVE
 OPTIMIZE       += -Wp64 -Op
 .ENDIF
 
+# the string-pooling option -Gf is deprecated in VC++ 7.x and will be removed
+# in later versions, so use read-only string-pooling (-GF) instead
+.IF "$(CCTYPE)" == "MSVC70FREE" || "$(CCTYPE)" == "MSVC70"
+STRPOOL                = -GF
+.ELSE
+STRPOOL                = -Gf
+.ENDIF
+
 .IF "$(USE_PERLCRT)" != "define"
 BUILDOPT       += -DPERL_MSVCRT_READFIX
 .ENDIF
@@ -515,7 +554,8 @@ LIBBASEFILES        += odbc32.lib odbccp32.lib
 # we add LIBC here, since we may be using PerlCRT.dll
 LIBFILES       = $(LIBBASEFILES) $(LIBC)
 
-CFLAGS         = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
+EXTRACFLAGS    = -nologo $(STRPOOL) -W3
+CFLAGS         = $(EXTRACFLAGS) $(INCLUDES) $(DEFINES) $(LOCDEFS) \
                $(PCHFLAGS) $(OPTIMIZE)
 LINK_FLAGS     = -nologo -nodefaultlib $(LINK_DBG) \
                -libpath:"$(INST_COREDIR)" \
@@ -542,12 +582,23 @@ BLINK_FLAGS       = $(PRIV_LINK_FLAGS) $(LINK_FLAGS)
 # require backslashes to be doubled-up when written to $(mktmp) files.
 # Other dmake's do not require this and would actually output a double
 # backslash if they were doubled-up.
-.IF "$(shell type $(mktmp \\))"=="\\"
+.IF "$(shell @type $(mktmp \\))"=="\\"
 B=\\
 .ELSE
 B=\\\
 .ENDIF
 
+# There is a related issue with other escape sequences: Sarathy's old
+# dmake automatically maps escape sequences like \n to their ASCII values
+# when used in macros, while other dmake's only do so if this behaviour
+# is explicitly requested with the :m modifier.
+DONTUSETHIS=\n
+.IF "$(shell @type $(mktmp \n))"=="\n"
+N=$(DONTUSETHIS:m)
+.ELSE
+N=$(DONTUSETHIS)
+.ENDIF
+
 o *= .obj
 a *= .lib
 
@@ -642,6 +693,7 @@ UTILS               =                       \
                ..\utils\cpan           \
                ..\utils\xsubpp         \
                ..\utils\prove          \
+               ..\utils\ptar           \
                ..\utils\instmodsh      \
                ..\pod\checkpods        \
                ..\pod\pod2html         \
@@ -690,7 +742,7 @@ PERLDLL             = ..\perl59.dll
 
 XCOPY          = xcopy /f /r /i /d
 RCOPY          = xcopy /f /r /i /e /d
-NOOP           = @echo
+NOOP           = @rem
 
 #
 # filenames given to xsubpp must have forward slashes (since it puts
@@ -708,6 +760,7 @@ MICROCORE_SRC       =               \
                ..\gv.c         \
                ..\hv.c         \
                ..\locale.c     \
+               ..\mathoms.c    \
                ..\mg.c         \
                ..\numeric.c    \
                ..\op.c         \
@@ -788,6 +841,7 @@ CORE_NOCFG_H        =               \
                ..\perly.h      \
                ..\pp.h         \
                ..\proto.h      \
+               ..\regcomp.h    \
                ..\regexp.h     \
                ..\scope.h      \
                ..\sv.h         \
@@ -830,7 +884,7 @@ DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
                Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
                Sys/Hostname Storable Filter/Util/Call Encode \
                Digest/MD5 PerlIO/scalar MIME/Base64 Time/HiRes \
-               Unicode/Normalize Win32
+               Unicode/Normalize Math/BigInt/FastCalc Compress/Zlib Win32
 STATIC_EXT     = 
 NONXS_EXT      = Errno
 
@@ -853,7 +907,7 @@ CFG_VARS    =                                       \
                archname=$(ARCHNAME)            ~       \
                cc=$(CC)                        ~       \
                ld=$(LINK32)                    ~       \
-               ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)      ~       \
+               ccflags=$(EXTRACFLAGS) $(OPTIMIZE) $(DEFINES) $(BUILDOPT)       ~       \
                cf_email=$(EMAIL)               ~       \
                d_crypt=$(D_CRYPT)              ~       \
                d_mymalloc=$(PERL_MALLOC)       ~       \
@@ -873,6 +927,7 @@ CFG_VARS    =                                       \
                usemultiplicity=$(USE_MULTI)    ~       \
                useperlio=$(USE_PERLIO)         ~       \
                uselargefiles=$(USE_LARGE_FILES)        ~       \
+               usesitecustomize=$(USE_SITECUST)        ~       \
                LINK_FLAGS=$(LINK_FLAGS:s,\,$B,)        ~       \
                optimize=$(OPTIMIZE)
 
@@ -883,12 +938,22 @@ CFG_VARS  =                                       \
 .IF "$(IS_WIN95)" == "define"
 MK2            = .\makefile.95
 RIGHTMAKE      = __switch_makefiles
-NOOP           = @rem
 .ELSE
 MK2            = __not_needed
 RIGHTMAKE      =
 .ENDIF
 
+.IMPORT .IGNORE : SystemRoot windir
+
+# Don't just .IMPORT OS from the environment because dmake sets OS itself.
+ENV_OS=$(subst,OS=, $(shell @set OS))
+
+.IF "$(ENV_OS)" == "Windows_NT"
+ODBCCP32_DLL = $(SystemRoot)\system32\odbccp32.dll
+.ELSE
+ODBCCP32_DLL = $(windir)\system\odbccp32.dll
+.ENDIF
+
 #
 # Top targets
 #
@@ -998,14 +1063,16 @@ $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
 
 $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
 .IF "$(CCTYPE)" == "BORLAND"
+       if not exist $(CCLIBDIR)\PSDK\odbccp32.lib \
+           cd $(CCLIBDIR)\PSDK && implib odbccp32.lib $(ODBCCP32_DLL)
        $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
-           @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
+           @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,$B,),$(@:s,\,$B,),,$(LIBFILES),)
 .ELIF "$(CCTYPE)" == "GCC"
        $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \
-           $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
+           $(mktmp $(LKPRE) $(MINI_OBJ:s,\,$B,) $(LIBFILES) $(LKPOST))
 .ELSE
        $(LINK32) -subsystem:console -out:$@ \
-           @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,\\))
+           @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,$B,))
 .ENDIF
 
 $(MINIDIR) :
@@ -1024,9 +1091,9 @@ $(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
 
 perllib$(o)    : perllib.c .\perlhost.h .\vdir.h .\vmem.h
 .IF "$(USE_IMP_SYS)" == "define"
-       $(CC) -c -I. -DWITH_STATIC $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
+       $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
 .ELSE
-       $(CC) -c -I. -DWITH_STATIC $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c
+       $(CC) -c -I. $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c
 .ENDIF
 
 # 1. we don't want to rebuild miniperl.exe when config.h changes
@@ -1049,15 +1116,15 @@ perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
 $(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
 .IF "$(CCTYPE)" == "BORLAND"
        $(LINK32) -Tpd -ap $(BLINK_FLAGS) \
-           @$(mktmp c0d32$(o) $(PERLDLL_OBJ:s,\,\\)\n \
-               $@,\n \
-               $(LIBFILES)\n \
-               perldll.def\n)
+           @$(mktmp c0d32$(o) $(PERLDLL_OBJ:s,\,$B,)$N \
+               $@,$N \
+               $(subst,\,$B $(shell @type Extensions_static)) $(LIBFILES)$N \
+               perldll.def$N)
        $(IMPLIB) $*.lib $@
 .ELIF "$(CCTYPE)" == "GCC"
        $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(BLINK_FLAGS) \
-           $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) \
-               $(shell $(MINIPERL) -I..\lib buildext.pl --list-static-libs|tr \\\\ /) \
+           $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,$B,) \
+               $(subst,\,$B $(shell @type Extensions_static)) \
                $(LIBFILES) $(LKPOST))
        dlltool --output-lib $(PERLIMPLIB) \
                --dllname $(PERLDLL:b).dll \
@@ -1065,14 +1132,14 @@ $(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
                --base-file perl.base \
                --output-exp perl.exp
        $(LINK32) -mdll -o $@ $(BLINK_FLAGS) \
-           $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) \
-               $(shell $(MINIPERL) -I..\lib buildext.pl --list-static-libs|tr \\\\ /) \
+           $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,$B,) \
+               $(subst,\,$B $(shell @type Extensions_static)) \
                $(LIBFILES) perl.exp $(LKPOST))
 .ELSE
        $(LINK32) -dll -def:perldll.def -out:$@ \
-           $(shell $(MINIPERL) -I..\lib buildext.pl --list-static-libs) \
+           @Extensions_static \
            @$(mktmp -base:0x28000000 $(BLINK_FLAGS) $(DELAYLOAD) $(LIBFILES) \
-               $(PERLDLL_RES) $(PERLDLL_OBJ:s,\,\\))
+               $(PERLDLL_RES) $(PERLDLL_OBJ:s,\,$B,))
 .ENDIF
        $(XCOPY) $(PERLIMPLIB) $(COREDIR)
 
@@ -1105,13 +1172,13 @@ $(X2P) : $(MINIPERL) $(X2P_OBJ)
        $(MINIPERL) ..\x2p\s2p.PL
 .IF "$(CCTYPE)" == "BORLAND"
        $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
-           @$(mktmp c0x32$(o) $(X2P_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
+           @$(mktmp c0x32$(o) $(X2P_OBJ:s,\,$B,),$(@:s,\,$B,),,$(LIBFILES),)
 .ELIF "$(CCTYPE)" == "GCC"
        $(LINK32) -v -o $@ $(BLINK_FLAGS) \
-           $(mktmp $(LKPRE) $(X2P_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
+           $(mktmp $(LKPRE) $(X2P_OBJ:s,\,$B,) $(LIBFILES) $(LKPOST))
 .ELSE
        $(LINK32) -subsystem:console -out:$@ \
-           @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\))
+           @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,$B,))
 .ENDIF
 
 perlmain.c : runperl.c
@@ -1123,9 +1190,9 @@ perlmain$(o) : perlmain.c
 $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
 .IF "$(CCTYPE)" == "BORLAND"
        $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
-           @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,\\)\n \
-           $(@:s,\,\\),\n \
-           $(PERLIMPLIB) $(LIBFILES)\n)
+           @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,$B,)$N \
+           $(@:s,\,$B,),$N \
+           $(PERLIMPLIB) $(LIBFILES)$N)
 .ELIF "$(CCTYPE)" == "GCC"
        $(LINK32) -mconsole -o $@ $(BLINK_FLAGS)  \
            $(PERLEXE_OBJ) $(PERLIMPLIB) $(LIBFILES)
@@ -1150,29 +1217,25 @@ $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
        copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
 
-#----------------------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 Extensions : buildext.pl $(PERLDEP) $(CONFIGPM)
        $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --dynamic
        $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --dynamic
 
 Extensions_static : buildext.pl
-       $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --static
        $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --static
-
-# Note: The next two targets explicitly remove a "blibdirs.exists" file that
-# currerntly gets left behind, until CPAN RT Ticket #5616 is resolved.
+       $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --static
+       $(MINIPERL) -I..\lib buildext.pl --list-static-libs > Extensions_static
 
 Extensions_clean :
        -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
        -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext clean
-       -if exist $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists del /f $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists
 
 Extensions_realclean :
        -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) realclean
        -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext realclean
-       -if exist $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists del /f $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists
 
-#----------------------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 
 
 doc: $(PERLEXE)
@@ -1208,12 +1271,14 @@ utils: $(PERLEXE) $(X2P)
        copy ..\README.mint     ..\pod\perlmint.pod
        copy ..\README.mpeix    ..\pod\perlmpeix.pod
        copy ..\README.netware  ..\pod\perlnetware.pod
+       copy ..\README.openbsd  ..\pod\perlopenbsd.pod
        copy ..\README.os2      ..\pod\perlos2.pod
        copy ..\README.os390    ..\pod\perlos390.pod
        copy ..\README.os400    ..\pod\perlos400.pod
        copy ..\README.plan9    ..\pod\perlplan9.pod
        copy ..\README.qnx      ..\pod\perlqnx.pod
        copy ..\README.solaris  ..\pod\perlsolaris.pod
+       copy ..\README.symbian  ..\pod\perlsymbian.pod
        copy ..\README.tru64    ..\pod\perltru64.pod
        copy ..\README.tw       ..\pod\perltw.pod
        copy ..\README.uts      ..\pod\perluts.pod
@@ -1221,7 +1286,7 @@ utils: $(PERLEXE) $(X2P)
        copy ..\README.vms      ..\pod\perlvms.pod
        copy ..\README.vos      ..\pod\perlvos.pod
        copy ..\README.win32    ..\pod\perlwin32.pod
-       copy ..\pod\perl592delta.pod ..\pod\perldelta.pod
+       copy ..\pod\perl593delta.pod ..\pod\perldelta.pod
        cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters
        cd ..\lib && $(PERLEXE) lib_pm.PL
        $(PERLEXE) $(PL2BAT) $(UTILS)
@@ -1261,9 +1326,10 @@ distclean: realclean
        -del /f $(LIBDIR)\threads\shared.pm
        -del /f $(LIBDIR)\Time\HiRes.pm
        -del /f $(LIBDIR)\Unicode\Normalize.pm
+       -del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
        -del /f $(LIBDIR)\Win32.pm
-       -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
-       -if exist $(LIBDIR)\IO rmdir /s $(LIBDIR)\IO
+       -if exist $(LIBDIR)\IO\Socket rmdir /s /q $(LIBDIR)\IO\Socket
+       -if exist $(LIBDIR)\IO\Socket rmdir /s $(LIBDIR)\IO\Socket
        -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
        -if exist $(LIBDIR)\B rmdir /s $(LIBDIR)\B
        -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
@@ -1291,22 +1357,22 @@ distclean: realclean
            perlfreebsd.pod perlhpux.pod perlhurd.pod perlirix.pod \
            perljp.pod perlko.pod perlmachten.pod perlmacos.pod \
            perlmacosx.pod perlmint.pod perlmpeix.pod perlnetware.pod \
-           perlos2.pod perlos390.pod perlos400.pod perlplan9.pod \
-           perlqnx.pod perlsolaris.pod perltru64.pod perltw.pod \
-           perluts.pod perlvmesa.pod perlvms.pod perlvms.pod perlvos.pod \
-           perlwin32.pod \
+           perlopenbsd.pod perlos2.pod perlos390.pod perlos400.pod \
+           perlplan9.pod perlqnx.pod perlsolaris.pod perlsymbian.pod \
+           perltru64.pod perltw.pod perluts.pod perlvmesa.pod perlvms.pod \
+           perlvms.pod perlvos.pod perlwin32.pod \
            pod2html pod2latex pod2man pod2text pod2usage \
            podchecker podselect
        -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
            perldoc perlivp dprofpp perlcc libnetcfg enc2xs piconv cpan *.bat \
-           xsubpp instmodsh prove corelist
+           xsubpp instmodsh prove ptar corelist
        -cd ..\x2p && del /f find2perl s2p psed *.bat
        -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
        -del /f $(CONFIGPM)
        -del /f bin\*.bat
        -del /f perllibst.h
        -del /f $(PERLEXE_ICO) perl.base
-       -cd .. && del /s *$(a) *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib
+       -cd .. && del /s *$(a) *.map *.pdb *.ilk *.tds *.bs *$(o) .exists pm_to_blib
        -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
        -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
        -if exist $(AUTODIR) rmdir /s $(AUTODIR)
@@ -1331,12 +1397,7 @@ inst_lib : $(CONFIGPM)
        $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
        $(RCOPY) ..\lib $(INST_LIB)\*.*
 
-# Move the rule for making $(UNIDATAFILES) into a separate target and leave the
-# actual rule here blank because dmake runs the rule here once for each of the
-# files listed in $(UNIDATAFILES)
-$(UNIDATAFILES) : make_unidatafiles
-
-make_unidatafiles : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables
+$(UNIDATAFILES) .UPDATEALL : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables
        cd ..\lib\unicore && \
        ..\$(MINIPERL) -I.. mktables
 
@@ -1363,11 +1424,11 @@ test-prep : all utils
 .ENDIF
 
 test : $(RIGHTMAKE) test-prep
-       cd ..\t && $(PERLEXE) -I..\lib harness
+       cd ..\t && $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
 
 test-notty : test-prep
        set PERL_SKIP_TTY_TEST=1 && \
-           cd ..\t && $(PERLEXE) -I.\lib harness
+           cd ..\t && $(PERLEXE) -I.\lib harness $(TEST_SWITCHES) $(TEST_FILES)
 
 _test : $(RIGHTMAKE)
        $(XCOPY) $(PERLEXE) ..\t\$(NULL)
@@ -1377,7 +1438,7 @@ _test : $(RIGHTMAKE)
 .ELSE
        $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
 .ENDIF
-       cd ..\t && $(PERLEXE) -I..\lib harness
+       cd ..\t && $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
 
 # the doubled rmdir calls are needed because older cmd shells
 # don't understand /q
@@ -1408,6 +1469,8 @@ _clean :
        -@erase ..\x2p\*.exe ..\x2p\*.bat
        -@erase *.ilk
        -@erase *.pdb
+       -@erase *.tds
+       -@erase Extensions_static
 
 clean : Extensions_clean _clean