Symbian port 0.3.0 as of blead@25911
[p5sagit/p5-mst-13.2.git] / win32 / Makefile
index 711fbd6..eaedd01 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Makefile to build perl on Windows NT using Microsoft NMAKE.
 # Supported compilers:
-#      Visual C++ 2.0 through 6.0 (and possibly newer versions)
+#      Visual C++ 2.0 through 7.0 (and possibly newer versions)
 #      MS Platform SDK 64-bit compiler and tools **experimental**
 #
 # This is set up to build a perl.exe that runs off a shared library
@@ -32,7 +32,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
@@ -43,27 +43,35 @@ INST_TOP    = $(INST_DRV)\perl
 # the same location.  Commenting it out gives you a simpler
 # installation that is easier to understand for beginners.
 #
-#INST_ARCH = \$(ARCHNAME)
+#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.
 #
-USE_MULTI = define
+USE_MULTI      = define
 
 #
 # Beginnings of interpreter cloning/threads; now reasonably complete.
 # This should be enabled to get the fork() emulation.  This needs
 # USE_MULTI as well.
 #
-USE_ITHREADS = define
+USE_ITHREADS   = define
 
 #
 # uncomment to enable the implicit "host" layer for all system calls
 # made by perl.  This needs USE_MULTI above.  This is also needed to
 # get fork().
 #
-USE_IMP_SYS = define
+USE_IMP_SYS    = define
 
 #
 # Comment out next assign to disable perl's I/O subsystem and use compiler's 
@@ -77,14 +85,21 @@ 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 one of the following lines if you are using either
-# Visual C++ 2.x or Visual C++ 6.x (aka Visual Studio 98)
+# 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 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
 
 #
 # uncomment next line if you want debug version of perl (big,slow)
@@ -141,7 +156,7 @@ CRYPT_SRC   = fcrypt.c
 # This must be enabled to use the Devel::Peek::mstat() function.  This cannot
 # be enabled without PERL_MALLOC as well.
 #
-#DEBUG_MSTATS  = define
+#DEBUG_MSTATS  = define
 
 #
 #
@@ -159,6 +174,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      = $(BUILDOPT) -DPERL_HASH_SEED_EXPLICIT
+#BUILDOPT      = $(BUILDOPT) -DNO_HASH_SEED
 
 #
 # This should normally be disabled.  Adding -DPERL_POLLUTE enables support
@@ -179,6 +205,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      = $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS
 
 #
@@ -206,21 +233,26 @@ D_CRYPT           = define
 CRYPT_FLAG     = -DHAVE_DES_FCRYPT
 !ENDIF
 
+!IF "$(USE_IMP_SYS)" == "define"
+PERL_MALLOC    = undef
+DEBUG_MSTATS   = undef
+!ENDIF
+
 !IF "$(PERL_MALLOC)" == ""
 PERL_MALLOC    = undef
-DEBUG_MSTATS   = undef
+DEBUG_MSTATS   = undef
 !ENDIF
 
 !IF "$(DEBUG_MSTATS)" == ""
-DEBUG_MSTATS   = undef
+DEBUG_MSTATS   = undef
 !ENDIF
 
 !IF "$(DEBUG_MSTATS)" == "define"
-BUILDOPT       = $(BUILDOPT) -DPERL_DEBUGGING_MSTATS
+BUILDOPT       = $(BUILDOPT) -DPERL_DEBUGGING_MSTATS
 !ENDIF
 
-!IF "$(USE_IMP_SYS)" == "define"
-PERL_MALLOC    = undef
+!IF "$(USE_SITECUST)" == ""
+USE_SITECUST   = undef
 !ENDIF
 
 !IF "$(USE_MULTI)" == ""
@@ -255,6 +287,10 @@ USE_MULTI  = define
 USE_MULTI      = define
 !ENDIF
 
+!IF "$(USE_SITECUST)" == "define"
+BUILDOPT       = $(BUILDOPT) -DUSE_SITECUSTOMIZE
+!ENDIF
+
 !IF "$(USE_MULTI)" != "undef"
 BUILDOPT       = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
 !ENDIF
@@ -298,12 +334,11 @@ BUILDOPT  = $(BUILDOPT) -DUSE_PERLIO
 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.
-DELAYLOAD      = -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib
+# 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
 !ENDIF
 
 ARCHDIR                = ..\lib\$(ARCHNAME)
@@ -357,8 +392,15 @@ OPTIMIZE   = -Od -MD -Zi -DDEBUGGING
 !  ENDIF
 LINK_DBG       = -debug
 !ELSE
-OPTIMIZE       = -MD -DNDEBUG
-LINK_DBG       = -release
+OPTIMIZE       = -MD -Zi -DNDEBUG
+# we enable debug symbols in release builds also
+LINK_DBG       = -debug -opt:ref,icf
+# you may want to enable this if you want COFF symbols in the executables
+# in addition to the PDB symbols.  The default Dr. Watson that ships with
+# Windows can use the the former but not latter.  The free WinDbg can be
+# installed to get better stack traces from just the PDB symbols, so we
+# avoid the bloat of COFF symbols by default.
+#LINK_DBG      = $(LINK_DBG) -debugtype:both
 !  IF "$(WIN64)" == "define"
 # enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
 OPTIMIZE       = $(OPTIMIZE) -Ox -GL
@@ -375,6 +417,14 @@ DEFINES            = $(DEFINES) -DWIN64 -DCONSERVATIVE
 OPTIMIZE       = $(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       = $(BUILDOPT) -DPERL_MSVCRT_READFIX
 !ENDIF
@@ -382,7 +432,7 @@ BUILDOPT    = $(BUILDOPT) -DPERL_MSVCRT_READFIX
 LIBBASEFILES   = $(CRYPT_LIB) \
                oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
                comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
-               netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
+               netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
                version.lib
 
 # win64 doesn't have some libs
@@ -393,7 +443,8 @@ LIBBASEFILES        = $(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)" \
@@ -440,10 +491,20 @@ MINIDIR           = .\mini
 PERLEXE                = ..\perl.exe
 WPERLEXE       = ..\wperl.exe
 GLOBEXE                = ..\perlglob.exe
-CONFIGPM       = ..\lib\Config.pm
+CONFIGPM       = ..\lib\Config.pm ..\lib\Config_heavy.pl
 MINIMOD                = ..\lib\ExtUtils\Miniperl.pm
 X2P            = ..\x2p\a2p.exe
 
+# Unicode data files generated by mktables
+UNIDATAFILES    = ..\lib\unicore\Canonical.pl ..\lib\unicore\Exact.pl \
+                  ..\lib\unicore\Properties ..\lib\unicore\Decomposition.pl \
+                  ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
+                  ..\lib\unicore\PVA.pl
+
+# Directories of Unicode data files generated by mktables
+UNIDATADIR1    = ..\lib\unicore\To
+UNIDATADIR2    = ..\lib\unicore\lib
+
 PERLEXE_ICO    = .\perlexe.ico
 PERLEXE_RES    = .\perlexe.res
 PERLDLL_RES    =
@@ -472,9 +533,11 @@ UTILS              =                       \
                ..\utils\libnetcfg      \
                ..\utils\enc2xs         \
                ..\utils\piconv         \
+               ..\utils\corelist       \
                ..\utils\cpan           \
                ..\utils\xsubpp         \
                ..\utils\prove          \
+               ..\utils\ptar           \
                ..\utils\instmodsh      \
                ..\pod\checkpods        \
                ..\pod\pod2html         \
@@ -506,7 +569,7 @@ CFGH_TMPL   = config_H.vc
 
 XCOPY          = xcopy /f /r /i /d
 RCOPY          = xcopy /f /r /i /e /d
-NOOP           = @echo
+NOOP           = @rem
 NULL           =
 
 DEL            = del
@@ -527,6 +590,7 @@ MICROCORE_SRC       =               \
                ..\gv.c         \
                ..\hv.c         \
                ..\locale.c     \
+               ..\mathoms.c    \
                ..\mg.c         \
                ..\numeric.c    \
                ..\op.c         \
@@ -607,6 +671,7 @@ CORE_NOCFG_H        =               \
                ..\perly.h      \
                ..\pp.h         \
                ..\proto.h      \
+               ..\regcomp.h    \
                ..\regexp.h     \
                ..\scope.h      \
                ..\sv.h         \
@@ -648,6 +713,10 @@ PERLDLL_OBJ        = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
 SETARGV_OBJ    = setargv$(o)
 !ENDIF
 
+# specify static extensions here
+#STATIC_EXT    = Cwd Compress/Zlib
+STATIC_EXT     = 
+
 DYNALOADER             = $(EXTDIR)\DynaLoader\DynaLoader
 SOCKET                 = $(EXTDIR)\Socket\Socket
 FCNTL                  = $(EXTDIR)\Fcntl\Fcntl
@@ -679,6 +748,9 @@ PERLIOVIA           = $(EXTDIR)\PerlIO\via\via
 XSAPITEST              = $(EXTDIR)\XS\APItest\APItest
 XSTYPEMAP              = $(EXTDIR)\XS\Typemap\Typemap
 UNICODENORMALIZE       = $(EXTDIR)\Unicode\Normalize\Normalize
+MATHBIGINTFASTCALC     = $(EXTDIR)\Math\BigInt\FastCalc\FastCalc
+COMPRESSZLIB           = $(EXTDIR)\Compress\Zlib\Zlib
+WIN32_DIR              = ext\Win32
 
 SOCKET_DLL             = $(AUTODIR)\Socket\Socket.dll
 FCNTL_DLL              = $(AUTODIR)\Fcntl\Fcntl.dll
@@ -709,6 +781,9 @@ PERLIOVIA_DLL               = $(AUTODIR)\PerlIO\via\via.dll
 XSAPITEST_DLL          = $(AUTODIR)\XS\APItest\APItest.dll
 XSTYPEMAP_DLL          = $(AUTODIR)\XS\Typemap\Typemap.dll
 UNICODENORMALIZE_DLL   = $(AUTODIR)\Unicode\Normalize\Normalize.dll
+MATHBIGINTFASTCALC_DLL = $(AUTODIR)\Math\BigInt\FastCalc\FastCalc.dll
+COMPRESSZLIB_DLL       = $(AUTODIR)\Compress\Zlib\Zlib.dll
+WIN32_DLL              = $(AUTODIR)\Win32\Win32.dll
 
 EXTENSION_C    =               \
                $(SOCKET).c     \
@@ -739,7 +814,10 @@ EXTENSION_C        =               \
                $(PERLIOVIA).c  \
                $(XSAPITEST).c  \
                $(XSTYPEMAP).c  \
-               $(UNICODENORMALIZE).c
+               $(UNICODENORMALIZE).c   \
+               $(MATHBIGINTFASTCALC).c \
+               $(COMPRESSZLIB).c       \
+               $(WIN32_DIR).c
 
 EXTENSION_DLL  =               \
                $(SOCKET_DLL)   \
@@ -770,7 +848,10 @@ EXTENSION_DLL      =               \
                $(PERLIOVIA_DLL)        \
                $(XSAPITEST_DLL)        \
                $(XSTYPEMAP_DLL)        \
-               $(UNICODENORMALIZE_DLL)
+               $(UNICODENORMALIZE_DLL) \
+               $(MATHBIGINTFASTCALC_DLL)       \
+               $(COMPRESSZLIB_DLL)     \
+               $(WIN32_DLL)
 
 POD2HTML       = $(PODDIR)\pod2html
 POD2MAN                = $(PODDIR)\pod2man
@@ -785,7 +866,7 @@ CFG_VARS    =                                       \
                "archname=$(ARCHNAME)"                  \
                "cc=$(CC)"                              \
                "ld=$(LINK32)"                          \
-               "ccflags=-nologo -Gf -W3 $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)"       \
+               "ccflags=$(EXTRACFLAGS) $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)"        \
                "cf_email=$(EMAIL)"                     \
                "d_crypt=$(D_CRYPT)"                    \
                "d_mymalloc=$(PERL_MALLOC)"             \
@@ -795,11 +876,13 @@ CFG_VARS  =                                       \
                "libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")"  \
                "libc=$(LIBC)"                          \
                "make=$(MAKE_BARE)"                             \
+               "static_ext=$(STATIC_EXT)"              \
                "usethreads=$(USE_ITHREADS)"            \
                "useithreads=$(USE_ITHREADS)"           \
                "usemultiplicity=$(USE_MULTI)"          \
                "useperlio=$(USE_PERLIO)"               \
                "uselargefiles=$(USE_LARGE_FILES)"      \
+               "usesitecustomize=$(USE_SITECUST)"      \
                "LINK_FLAGS=$(LINK_FLAGS:"=\")"         \
                "optimize=$(OPTIMIZE:"=\")"
 
@@ -807,7 +890,7 @@ CFG_VARS    =                                       \
 # Top targets
 #
 
-all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) \
+all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
        $(X2P) Extensions
        @echo   Everything is up to date. '$(MAKE_BARE) test' to run test suite.
 
@@ -888,11 +971,12 @@ $(DLL_OBJ)        : $(CORE_H)
 $(X2P_OBJ)     : $(CORE_H)
 
 perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
+       $(MINIPERL) -I..\lib buildext.pl --create-perllibst-h
        $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
            CCTYPE=$(CCTYPE) > perldll.def
 
-$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES)
-       $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @<<
+$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
+       $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @Extensions_static @<<
                $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES)
 <<
        $(XCOPY) $(PERLIMPLIB) $(COREDIR)
@@ -958,22 +1042,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)
+       $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --dynamic
+       $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext --dynamic
 
-# Note: The next two targets explicitly remove a "blibdirs.exists" file that
-# currerntly gets left behind, until CPAN RT Ticket #5616 is resolved.
+Extensions_static : buildext.pl
+       $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) --static
+       $(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 $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists del /f $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists
+       -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext clean
 
 Extensions_realclean: 
        -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) realclean
-       -if exist $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists del /f $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists
+       -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext realclean
 
-#----------------------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 
 doc: $(PERLEXE)
        $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \
@@ -1011,12 +1098,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
@@ -1024,7 +1113,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
        $(MAKE) -f ..\win32\pod.mak converters
        cd ..\lib
        $(PERLEXE) lib_pm.PL
@@ -1067,8 +1156,10 @@ distclean: realclean
        -del /f $(LIBDIR)\threads\shared.pm
        -del /f $(LIBDIR)\Time\HiRes.pm
        -del /f $(LIBDIR)\Unicode\Normalize.pm
-       -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
-       -if exist $(LIBDIR)\IO rmdir /s $(LIBDIR)\IO
+       -del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
+       -del /f $(LIBDIR)\Win32.pm
+       -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
@@ -1083,6 +1174,10 @@ distclean: realclean
        -if exist $(LIBDIR)\List rmdir /s $(LIBDIR)\List
        -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
        -if exist $(LIBDIR)\Scalar rmdir /s $(LIBDIR)\Scalar
+       -if exist $(LIBDIR)\Sys rmdir /s /q $(LIBDIR)\Sys
+       -if exist $(LIBDIR)\Sys rmdir /s $(LIBDIR)\Sys
+       -if exist $(LIBDIR)\threads rmdir /s /q $(LIBDIR)\threads
+       -if exist $(LIBDIR)\threads rmdir /s $(LIBDIR)\threads
        -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
        -if exist $(LIBDIR)\XS rmdir /s $(LIBDIR)\XS
        -cd $(PODDIR) && del /f *.html *.bat checkpods \
@@ -1092,20 +1187,21 @@ 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
+           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 $(PERLEXE_ICO)
+       -del /f perllibst.h
+       -del /f $(PERLEXE_ICO) perl.base
        -cd .. && del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib
        -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
        -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
@@ -1119,6 +1215,8 @@ installbare : utils
        $(PERLEXE) ..\installperl
        if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
        $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
+       if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
+       if exist ..\x2p\a2p.pdb $(XCOPY) ..\x2p\a2p.pdb $(INST_BIN)\*.*
        $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
 
 installhtml : doc
@@ -1129,7 +1227,11 @@ inst_lib : $(CONFIGPM)
        $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
        $(RCOPY) ..\lib $(INST_LIB)\*.*
 
-minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils
+$(UNIDATAFILES) : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables
+       cd ..\lib\unicore && \
+       ..\$(MINIPERL) -I.. mktables
+
+minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils $(UNIDATAFILES)
        $(XCOPY) $(MINIPERL) ..\t\$(NULL)
        if exist ..\t\perl.exe del /f ..\t\perl.exe
        rename ..\t\miniperl.exe perl.exe
@@ -1145,13 +1247,13 @@ test-prep : all utils
 
 test : test-prep
        cd ..\t
-       $(PERLEXE) -I..\lib harness
+       $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
        cd ..\win32
 
 test-notty : test-prep
        set PERL_SKIP_TTY_TEST=1
        cd ..\t
-       $(PERLEXE) -I..\lib harness
+       $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
        cd ..\win32
 
 _test : 
@@ -1159,9 +1261,11 @@ _test :
        $(XCOPY) $(PERLDLL) ..\t\$(NULL)
        $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
        cd ..\t
-       $(PERLEXE) -I..\lib harness
+       $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)
        cd ..\win32
 
+# the doubled rmdir calls are needed because older cmd shells
+# don't understand /q
 _clean :
        -@$(DEL) miniperlmain$(o)
        -@$(DEL) $(MINIPERL)
@@ -1176,6 +1280,11 @@ _clean :
        -@$(DEL) $(CORE_OBJ)
        -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
        -if exist $(MINIDIR) rmdir /s $(MINIDIR)
+       -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
+       -if exist $(UNIDATADIR1) rmdir /s $(UNIDATADIR1)
+       -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
+       -if exist $(UNIDATADIR2) rmdir /s $(UNIDATADIR2)
+       -@$(DEL) $(UNIDATAFILES)
        -@$(DEL) $(WIN32_OBJ)
        -@$(DEL) $(DLL_OBJ)
        -@$(DEL) $(X2P_OBJ)
@@ -1184,6 +1293,7 @@ _clean :
        -@$(DEL) ..\x2p\*.exe ..\x2p\*.bat
        -@$(DEL) *.ilk
        -@$(DEL) *.pdb
+       -@$(DEL) Extensions_static
 
 clean : Extensions_clean _clean