Podify the remaining README.platform files;
[p5sagit/p5-mst-13.2.git] / win32 / makefile.mk
index 33deee5..ccace2e 100644 (file)
@@ -6,7 +6,7 @@
 #      Mingw32 with gcc-2.95.2 or better  **experimental**\r
 #\r
 # This is set up to build a perl.exe that runs off a shared library\r
-# (perl56.dll).  Also makes individual DLLs for the XS extensions.\r
+# (perl57.dll).  Also makes individual DLLs for the XS extensions.\r
 #\r
 \r
 ##\r
@@ -33,7 +33,7 @@ INST_TOP      *= $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a\r
 # path that includes an arbitrary version string.\r
 #\r
-INST_VER       *= \5.6.0\r
+INST_VER       *= \5.7.1\r
 \r
 #\r
 # Comment this out if you DON'T want your perl installation to have\r
@@ -50,21 +50,25 @@ INST_ARCH   *= \$(ARCHNAME)
 # uncomment to enable multiple interpreters.  This is need for fork()\r
 # emulation.\r
 #\r
-#USE_MULTI     *= define\r
+USE_MULTI      *= define\r
 \r
 #\r
 # Beginnings of interpreter cloning/threads; still very incomplete.\r
 # This should be enabled to get the fork() emulation.  This needs\r
 # USE_MULTI as well.\r
 #\r
-#USE_ITHREADS  *= define\r
+USE_ITHREADS   *= define\r
 \r
 #\r
 # uncomment to enable the implicit "host" layer for all system calls\r
 # made by perl.  This needs USE_MULTI above.  This is also needed to\r
 # get fork().\r
 #\r
-#USE_IMP_SYS   *= define\r
+USE_IMP_SYS    *= define\r
+\r
+#\r
+# uncomment to enable the experimental PerlIO I/O subsystem.\r
+USE_PERLIO     = define\r
 \r
 #\r
 # WARNING! This option is deprecated and will eventually go away (enable\r
@@ -89,17 +93,24 @@ INST_ARCH   *= \$(ARCHNAME)
 \r
 #\r
 # uncomment exactly one of the following\r
-# \r
+#\r
 # Visual C++ 2.x\r
 #CCTYPE                *= MSVC20\r
 # Visual C++ > 2.x and < 6.x\r
 #CCTYPE                *= MSVC\r
 # Visual C++ >= 6.x\r
-#CCTYPE                *= MSVC60\r
+CCTYPE         *= MSVC60\r
 # Borland 5.02 or later\r
 #CCTYPE                *= BORLAND\r
 # mingw32+gcc-2.95.2 or better\r
-CCTYPE         *= GCC\r
+#CCTYPE                *= GCC\r
+\r
+#\r
+# uncomment this if your Borland compiler is older than v5.4.\r
+BCCOLD = define\r
+#\r
+# uncomment this if you want to use Borland's VCL as your CRT\r
+#BCCVCL = define\r
 \r
 #\r
 # uncomment this if you are compiling under Windows 95/98 and command.com\r
@@ -111,7 +122,7 @@ CCTYPE              *= GCC
 # If not enabled, we automatically try to use maximum optimization\r
 # with all compilers that are known to have a working optimizer.\r
 #\r
-#CFG           *= Debug\r
+CFG            *= Debug\r
 \r
 #\r
 # uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.\r
@@ -163,9 +174,9 @@ CCTYPE              *= GCC
 # so you may have to set CCHOME explicitly (spaces in the path name should\r
 # not be quoted)\r
 #\r
-#CCHOME                *= c:\bc5\r
-#CCHOME                *= $(MSVCDIR)\r
-CCHOME         *= c:\gcc-2.95.2-msvcrt\r
+#CCHOME                *= F:\borland\bc5\r
+CCHOME         *= $(MSVCDIR)\r
+#CCHOME                *= c:\gcc-2.95.2\r
 CCINCDIR       *= $(CCHOME)\include\r
 CCLIBDIR       *= $(CCHOME)\lib\r
 \r
@@ -248,6 +259,7 @@ USE_MULTI   *= undef
 USE_OBJECT     *= undef\r
 USE_ITHREADS   *= undef\r
 USE_IMP_SYS    *= undef\r
+USE_PERLIO     *= undef\r
 USE_PERLCRT    *= undef\r
 \r
 .IF "$(USE_IMP_SYS)$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" == "defineundefundefundef"\r
@@ -278,6 +290,11 @@ ARCHNAME   = MSWin32-$(PROCESSOR_ARCHITECTURE)-thread
 .ELIF "$(USE_MULTI)" == "define"\r
 ARCHNAME       = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi\r
 .ELSE\r
+.IF "$(USE_PERLIO)" == "define"\r
+ARCHNAME       = MSWin32-$(PROCESSOR_ARCHITECTURE)-perlio\r
+.ELSE\r
+ARCHNAME       = MSWin32-$(PROCESSOR_ARCHITECTURE)\r
+.ENDIF\r
 ARCHNAME       = MSWin32-$(PROCESSOR_ARCHITECTURE)\r
 .ENDIF\r
 \r
@@ -290,12 +307,15 @@ ARCHNAME  !:= $(ARCHNAME)-thread
 \r
 # VC 6.0 can load the socket dll on demand.  Makes the test suite\r
 # run in about 10% less time.\r
-DELAYLOAD      *= -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib \r
+DELAYLOAD      *= -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib\r
 \r
+.IF "$(CFG)" == "Debug"\r
+.ELSE\r
 # VC 6.0 seems capable of compiling perl correctly with optimizations\r
 # enabled.  Anything earlier fails tests.\r
 CFG            *= Optimize\r
 .ENDIF\r
+.ENDIF\r
 \r
 ARCHDIR                = ..\lib\$(ARCHNAME)\r
 COREDIR                = ..\lib\CORE\r
@@ -312,7 +332,7 @@ INST_LIB    = $(INST_TOP)$(INST_VER)\lib
 INST_ARCHLIB   = $(INST_LIB)$(INST_ARCH)\r
 INST_COREDIR   = $(INST_ARCHLIB)\CORE\r
 INST_POD       = $(INST_LIB)\pod\r
-INST_HTML      = $(INST_POD)\html\r
+INST_HTML      = $(INST_TOP)$(INST_VER)\html\r
 \r
 #\r
 # Programs to compile, build .lib files and link\r
@@ -323,7 +343,11 @@ INST_HTML  = $(INST_POD)\html
 .IF "$(CCTYPE)" == "BORLAND"\r
 \r
 CC             = bcc32\r
+.IF "$(BCCOLD)" != "define"\r
+LINK32         = ilink32\r
+.ELSE\r
 LINK32         = tlink32\r
+.ENDIF\r
 LIB32          = tlib /P128\r
 IMPLIB         = implib -c\r
 RSC            = rc\r
@@ -339,22 +363,31 @@ SUBSYS            = console
 CXX_FLAG       = -P\r
 \r
 LIBC           = cw32mti.lib\r
-LIBFILES       = $(CRYPT_LIB) import32.lib $(LIBC) odbc32.lib odbccp32.lib\r
+LIBFILES       = $(CRYPT_LIB) import32.lib $(LIBC)\r
 \r
 .IF  "$(CFG)" == "Debug"\r
 OPTIMIZE       = -v -D_RTLDLL -DDEBUGGING\r
 LINK_DBG       = -v\r
 .ELSE\r
 OPTIMIZE       = -O2 -D_RTLDLL\r
-LINK_DBG       = \r
+LINK_DBG       =\r
 .ENDIF\r
 \r
 CFLAGS         = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \\r
                $(PCHFLAGS) $(OPTIMIZE)\r
-LINK_FLAGS     = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"\r
+LINK_FLAGS     = $(LINK_DBG) -L"$(INST_COREDIR)"  -L"$(CCLIBDIR)"\r
 OBJOUT_FLAG    = -o\r
 EXEOUT_FLAG    = -e\r
-LIBOUT_FLAG    = \r
+LIBOUT_FLAG    =\r
+.IF "$(BCCOLD)" != "define"\r
+LINK_FLAGS     += -Gn\r
+DEFINES  += -D_MT -D__USELOCALES__ -D_WIN32_WINNT=0x0410\r
+.END\r
+.IF "$(BCCVCL)" == "define"\r
+LIBC           = cp32mti.lib vcl.lib vcl50.lib vclx50.lib vcle50.lib\r
+LINK_FLAGS     += -L"$(CCLIBDIR)\Release"\r
+.END\r
+\r
 \r
 .ELIF "$(CCTYPE)" == "GCC"\r
 \r
@@ -364,6 +397,7 @@ LIB32               = ar rc
 IMPLIB         = dlltool\r
 RSC            = rc\r
 \r
+i = .i\r
 o = .o\r
 a = .a\r
 \r
@@ -371,7 +405,7 @@ a = .a
 # Options\r
 #\r
 \r
-INCLUDES       = -I$(COREDIR) -I.\include -I. -I..\r
+INCLUDES       = -I.\include -I. -I.. -I$(COREDIR)\r
 DEFINES                = -DWIN32 $(CRYPT_FLAG)\r
 LOCDEFS                = -DPERLDLL -DPERL_CORE\r
 SUBSYS         = console\r
@@ -387,18 +421,18 @@ LIBFILES  = $(CRYPT_LIB) $(LIBC) \
                  -lwinmm -lversion -lodbc32\r
 \r
 .IF  "$(CFG)" == "Debug"\r
-OPTIMIZE       = -g -DDEBUGGING\r
+OPTIMIZE       = -g -O2 -DDEBUGGING\r
 LINK_DBG       = -g\r
 .ELSE\r
 OPTIMIZE       = -g -O2\r
-LINK_DBG       = \r
+LINK_DBG       = -g\r
 .ENDIF\r
 \r
 CFLAGS         = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)\r
 LINK_FLAGS     = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"\r
 OBJOUT_FLAG    = -o\r
 EXEOUT_FLAG    = -o\r
-LIBOUT_FLAG    = \r
+LIBOUT_FLAG    =\r
 \r
 # NOTE: we assume that GCC uses MSVCRT.DLL\r
 BUILDOPT       += -fno-strict-aliasing -DPERL_MSVCRT_READFIX\r
@@ -415,7 +449,7 @@ RSC         = rc
 #\r
 \r
 INCLUDES       = -I$(COREDIR) -I.\include -I. -I..\r
-#PCHFLAGS      = -Fpc:\temp\vcmoduls.pch -YX \r
+#PCHFLAGS      = -Fpc:\temp\vcmoduls.pch -YX\r
 DEFINES                = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)\r
 LOCDEFS                = -DPERLDLL -DPERL_CORE\r
 SUBSYS         = console\r
@@ -433,10 +467,14 @@ PERLDLL_RES       =
 .IF  "$(CFG)" == "Debug"\r
 .IF "$(CCTYPE)" == "MSVC20"\r
 OPTIMIZE       = -Od -MD -Z7 -DDEBUGGING\r
+LINK_DBG       = -debug -pdb:none\r
 .ELSE\r
-OPTIMIZE       = -Od -MD -Zi -DDEBUGGING\r
+# -Zi requires .pdb file(s)\r
+#OPTIMIZE      = -Od -MD -Zi -DDEBUGGING\r
+#LINK_DBG      = -debug\r
+OPTIMIZE       = -O1 -MD -Z7 -DDEBUGGING\r
+LINK_DBG       = -debug -debugtype:both -pdb:none\r
 .ENDIF\r
-LINK_DBG       = -debug -pdb:none\r
 .ELSE\r
 .IF "$(CFG)" == "Optimize"\r
 # -O1 yields smaller code, which turns out to be faster than -O2\r
@@ -496,13 +534,16 @@ LKPOST            = )
 \r
 #\r
 # Rules\r
-# \r
+#\r
 \r
-.SUFFIXES : .c $(o) .dll $(a) .exe .rc .res\r
+.SUFFIXES : .c .i $(o) .dll $(a) .exe .rc .res\r
 \r
 .c$(o):\r
        $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<\r
 \r
+.c.i:\r
+       $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) -E $< >$@\r
+\r
 .y.c:\r
        $(NOOP)\r
 \r
@@ -515,7 +556,7 @@ $(o).dll:
        $(IMPLIB) --input-def $(*B).def --output-lib $(*B).a $@\r
 .ELSE\r
        $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \\r
-           -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)  \r
+           -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)\r
 .ENDIF\r
 \r
 .rc.res:\r
@@ -532,6 +573,13 @@ CONFIGPM   = ..\lib\Config.pm
 MINIMOD                = ..\lib\ExtUtils\Miniperl.pm\r
 X2P            = ..\x2p\a2p.exe\r
 \r
+# Nominate a target which causes extensions to be re-built\r
+# This used to be $(PERLEXE), but at worst it is the .dll that they depend\r
+# on and really only the interface - i.e. the .def file used to export symbols\r
+# from the .dll\r
+PERLDEP = perldll.def\r
+\r
+\r
 PL2BAT         = bin\pl2bat.pl\r
 GLOBBAT                = bin\perlglob.bat\r
 \r
@@ -570,7 +618,7 @@ CFGH_TMPL   = config_H.bc
 \r
 CFGSH_TMPL     = config.gc\r
 CFGH_TMPL      = config_H.gc\r
-PERLIMPLIB     = ..\libperl56$(a)\r
+PERLIMPLIB     = ..\libperl57$(a)\r
 \r
 .ELSE\r
 \r
@@ -579,8 +627,11 @@ CFGH_TMPL  = config_H.vc
 \r
 .ENDIF\r
 \r
-PERLIMPLIB     *= ..\perl56$(a)\r
-PERLDLL                = ..\perl56.dll\r
+# makedef.pl must be updated if this changes, and this should normally\r
+# only change when there is an incompatible revision of the public API.\r
+# XXX so why did we change it from perl56 to perl57?\r
+PERLIMPLIB     *= ..\perl57$(a)\r
+PERLDLL                = ..\perl57.dll\r
 \r
 XCOPY          = xcopy /f /r /i /d\r
 RCOPY          = xcopy /f /r /i /e /d\r
@@ -635,7 +686,7 @@ EXTRACORE_SRC       += ..\perlio.c
 WIN32_SRC      =               \\r
                .\win32.c       \\r
                .\win32sck.c    \\r
-               .\win32thread.c \r
+               .\win32thread.c\r
 \r
 .IF "$(CRYPT_SRC)" != ""\r
 WIN32_SRC      += .\$(CRYPT_SRC)\r
@@ -712,90 +763,12 @@ SETARGV_OBJ       = setargv$(o)
 \r
 DYNAMIC_EXT    = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \\r
                Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \\r
-               Sys/Hostname Storable\r
+               Sys/Hostname Storable Filter/Util/Call Encode \\r
+               Digest/MD5 PerlIO/Scalar MIME/Base64 Time/HiRes Time/Piece\r
 STATIC_EXT     = DynaLoader\r
 NONXS_EXT      = Errno\r
 \r
 DYNALOADER     = $(EXTDIR)\DynaLoader\DynaLoader\r
-SOCKET         = $(EXTDIR)\Socket\Socket\r
-FCNTL          = $(EXTDIR)\Fcntl\Fcntl\r
-OPCODE         = $(EXTDIR)\Opcode\Opcode\r
-SDBM_FILE      = $(EXTDIR)\SDBM_File\SDBM_File\r
-IO             = $(EXTDIR)\IO\IO\r
-POSIX          = $(EXTDIR)\POSIX\POSIX\r
-ATTRS          = $(EXTDIR)\attrs\attrs\r
-THREAD         = $(EXTDIR)\Thread\Thread\r
-B              = $(EXTDIR)\B\B\r
-RE             = $(EXTDIR)\re\re\r
-DUMPER         = $(EXTDIR)\Data\Dumper\Dumper\r
-ERRNO          = $(EXTDIR)\Errno\Errno\r
-PEEK           = $(EXTDIR)\Devel\Peek\Peek\r
-BYTELOADER     = $(EXTDIR)\ByteLoader\ByteLoader\r
-DPROF          = $(EXTDIR)\Devel\DProf\DProf\r
-GLOB           = $(EXTDIR)\File\Glob\Glob\r
-HOSTNAME       = $(EXTDIR)\Sys\Hostname\Hostname\r
-STORABLE       = $(EXTDIR)\Storable\Storable\r
-\r
-SOCKET_DLL     = $(AUTODIR)\Socket\Socket.dll\r
-FCNTL_DLL      = $(AUTODIR)\Fcntl\Fcntl.dll\r
-OPCODE_DLL     = $(AUTODIR)\Opcode\Opcode.dll\r
-SDBM_FILE_DLL  = $(AUTODIR)\SDBM_File\SDBM_File.dll\r
-IO_DLL         = $(AUTODIR)\IO\IO.dll\r
-POSIX_DLL      = $(AUTODIR)\POSIX\POSIX.dll\r
-ATTRS_DLL      = $(AUTODIR)\attrs\attrs.dll\r
-THREAD_DLL     = $(AUTODIR)\Thread\Thread.dll\r
-B_DLL          = $(AUTODIR)\B\B.dll\r
-DUMPER_DLL     = $(AUTODIR)\Data\Dumper\Dumper.dll\r
-PEEK_DLL       = $(AUTODIR)\Devel\Peek\Peek.dll\r
-RE_DLL         = $(AUTODIR)\re\re.dll\r
-BYTELOADER_DLL = $(AUTODIR)\ByteLoader\ByteLoader.dll\r
-DPROF_DLL      = $(AUTODIR)\Devel\DProf\DProf.dll\r
-GLOB_DLL       = $(AUTODIR)\File\Glob\Glob.dll\r
-HOSTNAME_DLL   = $(AUTODIR)\Sys\Hostname\Hostname.dll\r
-STORABLE_DLL   = $(AUTODIR)\Storable\Storable.dll\r
-\r
-ERRNO_PM       = $(LIBDIR)\Errno.pm\r
-\r
-EXTENSION_C    =               \\r
-               $(SOCKET).c     \\r
-               $(FCNTL).c      \\r
-               $(OPCODE).c     \\r
-               $(SDBM_FILE).c  \\r
-               $(IO).c         \\r
-               $(POSIX).c      \\r
-               $(ATTRS).c      \\r
-               $(THREAD).c     \\r
-               $(RE).c         \\r
-               $(DUMPER).c     \\r
-               $(PEEK).c       \\r
-               $(B).c          \\r
-               $(BYTELOADER).c \\r
-               $(DPROF).c      \\r
-               $(GLOB).c       \\r
-               $(HOSTNAME).c   \\r
-               $(STORABLE).c\r
-\r
-EXTENSION_DLL  =               \\r
-               $(SOCKET_DLL)   \\r
-               $(FCNTL_DLL)    \\r
-               $(OPCODE_DLL)   \\r
-               $(SDBM_FILE_DLL)\\r
-               $(IO_DLL)       \\r
-               $(POSIX_DLL)    \\r
-               $(ATTRS_DLL)    \\r
-               $(DUMPER_DLL)   \\r
-               $(PEEK_DLL)     \\r
-               $(B_DLL)        \\r
-               $(RE_DLL)       \\r
-               $(THREAD_DLL)   \\r
-               $(BYTELOADER_DLL)       \\r
-               $(DPROF_DLL)    \\r
-               $(GLOB_DLL)     \\r
-               $(HOSTNAME_DLL) \\r
-               $(STORABLE_DLL)\r
-\r
-EXTENSION_PM   =               \\r
-               $(ERRNO_PM)\r
 \r
 POD2HTML       = $(PODDIR)\pod2html\r
 POD2MAN                = $(PODDIR)\pod2man\r
@@ -813,6 +786,7 @@ CFG_VARS    =                                       \
                INST_ARCH=$(INST_ARCH)          ~       \\r
                archname=$(ARCHNAME)            ~       \\r
                cc=$(CC)                        ~       \\r
+               ld=$(LINK32)                    ~       \\r
                ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)      ~       \\r
                cf_email=$(EMAIL)               ~       \\r
                d_crypt=$(D_CRYPT)              ~       \\r
@@ -826,12 +800,11 @@ CFG_VARS  =                                       \
                _o=$(o) obj_ext=$(o)            ~       \\r
                _a=$(a) lib_ext=$(a)            ~       \\r
                static_ext=$(STATIC_EXT)        ~       \\r
-               dynamic_ext=$(DYNAMIC_EXT)      ~       \\r
-               nonxs_ext=$(NONXS_EXT)          ~       \\r
                use5005threads=$(USE_5005THREADS)       ~       \\r
                useithreads=$(USE_ITHREADS)     ~       \\r
                usethreads=$(USE_5005THREADS)   ~       \\r
                usemultiplicity=$(USE_MULTI)    ~       \\r
+               useperlio=$(USE_PERLIO)         ~       \\r
                LINK_FLAGS=$(LINK_FLAGS:s/\/\\/)                ~       \\r
                optimize=$(OPTIMIZE)\r
 \r
@@ -845,7 +818,7 @@ RIGHTMAKE   = __switch_makefiles
 NOOP           = @rem\r
 .ELSE\r
 MK2            = __not_needed\r
-RIGHTMAKE      = __not_needed\r
+RIGHTMAKE      =\r
 .ENDIF\r
 \r
 #\r
@@ -854,7 +827,7 @@ RIGHTMAKE   = __not_needed
 \r
 all : .\config.h $(GLOBEXE) $(MINIPERL) $(MK2)         \\r
        $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(PERLEXE)  \\r
-       $(X2P) $(EXTENSION_DLL) $(EXTENSION_PM)\r
+       $(X2P) Extensions \r
 \r
 $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c\r
 \r
@@ -901,7 +874,7 @@ __no_such_target:
 #--------------------- END Win95 SPECIFIC ---------------------\r
 \r
 # a blank target for when builds don't need to do certain things\r
-# this target added for Win95 port but used to keep the WinNT port able to \r
+# this target added for Win95 port but used to keep the WinNT port able to\r
 # use this file\r
 __not_needed:\r
        $(NOOP)\r
@@ -915,7 +888,7 @@ $(GLOBEXE) : perlglob$(o)
        $(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES)\r
 .ELSE\r
        $(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \\r
-           perlglob$(o) setargv$(o) \r
+           perlglob$(o) setargv$(o)\r
 .ENDIF\r
 \r
 perlglob$(o)  : perlglob.c\r
@@ -927,7 +900,7 @@ config.w32 : $(CFGSH_TMPL)
        -del /f config.h\r
        copy $(CFGH_TMPL) config.h\r
 \r
-..\config.sh : config.w32 $(MINIPERL) config_sh.PL\r
+..\config.sh : config.w32 $(MINIPERL) config_sh.PL FindExt.pm\r
        $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file \\r
            $(mktmp $(CFG_VARS)) config.w32 > ..\config.sh\r
 \r
@@ -960,7 +933,7 @@ $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
            @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)\r
 .ELIF "$(CCTYPE)" == "GCC"\r
        $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \\r
-           $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) \r
+           $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))\r
 .ELSE\r
        $(LINK32) -subsystem:console -out:$@ \\r
            @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,\\))\r
@@ -1058,7 +1031,7 @@ $(X2P) : $(MINIPERL) $(X2P_OBJ)
            @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\))\r
 .ENDIF\r
 \r
-perlmain.c : runperl.c \r
+perlmain.c : runperl.c\r
        copy runperl.c perlmain.c\r
 \r
 perlmain$(o) : perlmain.c\r
@@ -1079,7 +1052,7 @@ $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
 .ENDIF\r
        copy $(PERLEXE) $(WPERLEXE)\r
        $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS\r
-       copy splittree.pl .. \r
+       copy splittree.pl ..\r
        $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)\r
 \r
 $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)\r
@@ -1094,95 +1067,15 @@ $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs\r
        copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs\r
 \r
-$(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs\r
-       cd $(EXTDIR)\Data\$(*B) && \\r
-       ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\Data\$(*B) && $(MAKE)\r
-\r
-$(DPROF_DLL): $(PERLEXE) $(DPROF).xs\r
-       cd $(EXTDIR)\Devel\$(*B) && \\r
-       ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\Devel\$(*B) && $(MAKE)\r
-\r
-$(GLOB_DLL): $(PERLEXE) $(GLOB).xs\r
-       cd $(EXTDIR)\File\$(*B) && \\r
-       ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\File\$(*B) && $(MAKE)\r
-\r
-$(PEEK_DLL): $(PERLEXE) $(PEEK).xs\r
-       cd $(EXTDIR)\Devel\$(*B) && \\r
-       ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\Devel\$(*B) && $(MAKE)\r
-\r
-$(RE_DLL): $(PERLEXE) $(RE).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(B_DLL): $(PERLEXE) $(B).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(THREAD_DLL): $(PERLEXE) $(THREAD).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(POSIX_DLL): $(PERLEXE) $(POSIX).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(IO_DLL): $(PERLEXE) $(IO).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(HOSTNAME_DLL): $(PERLEXE) $(HOSTNAME).xs\r
-       cd $(EXTDIR)\Sys\$(*B) && \\r
-       ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\Sys\$(*B) && $(MAKE)\r
-\r
-$(BYTELOADER_DLL): $(PERLEXE) $(BYTELOADER).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(STORABLE_DLL): $(PERLEXE) $(STORABLE).xs\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
-\r
-$(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL\r
-       cd $(EXTDIR)\$(*B) && \\r
-       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl\r
-       cd $(EXTDIR)\$(*B) && $(MAKE)\r
+#----------------------------------------------------------------------------------\r
+Extensions : buildext.pl $(PERLDEP) $(CONFIGPM) \r
+       $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR)\r
+\r
+Extensions_clean : \r
+       -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean\r
+\r
+#----------------------------------------------------------------------------------\r
+\r
 \r
 doc: $(PERLEXE)\r
        $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \\r
@@ -1191,14 +1084,31 @@ doc: $(PERLEXE)
 \r
 utils: $(PERLEXE) $(X2P)\r
        cd ..\utils && $(MAKE) PERL=$(MINIPERL)\r
-       copy ..\README.amiga ..\pod\perlamiga.pod\r
-       copy ..\README.cygwin ..\pod\perlcygwin.pod\r
-       copy ..\README.dos ..\pod\perldos.pod\r
-       copy ..\README.hpux ..\pod\perlhpux.pod\r
-       copy ..\README.machten ..\pod\perlmachten.pod\r
-       copy ..\README.os2 ..\pod\perlos2.pod\r
-       copy ..\README.os2 ..\pod\perlos2.pod\r
-       copy ..\vms\perlvms.pod ..\pod\perlvms.pod\r
+       copy ..\README.aix      ..\pod\perlaix.pod\r
+       copy ..\README.amiga    ..\pod\perlamiga.pod\r
+       copy ..\README.apollo   ..\pod\perlapollo.pod\r
+       copy ..\README.beos     ..\pod\perlbeos.pod\r
+       copy ..\README.bs2000   ..\pod\perlbs2000.pod\r
+       copy ..\README.cygwin   ..\pod\perlcygwin.pod\r
+       copy ..\README.dgux     ..\pod\perldgux.pod\r
+       copy ..\README.dos      ..\pod\perldos.pod\r
+       copy ..\README.epoc     ..\pod\perlepoc.pod\r
+       copy ..\README.hpux     ..\pod\perlhpux.pod\r
+       copy ..\README.hurd     ..\pod\perlhurd.pod\r
+       copy ..\README.machten  ..\pod\perlmachten.pod\r
+       copy ..\README.macos    ..\pod\perlmacos.pod\r
+       copy ..\README.mint     ..\pod\perlmint.pod\r
+       copy ..\README.mpeix    ..\pod\perlmpeix.pod\r
+       copy ..\README.os2      ..\pod\perlos2.pod\r
+       copy ..\README.os390    ..\pod\perlos390.pod\r
+       copy ..\README.plan9    ..\pod\perlplan9.pod\r
+       copy ..\README.qnx      ..\pod\perlqnx.pod\r
+       copy ..\README.solaris  ..\pod\perlsolaris.pod\r
+       copy ..\README.tru64    ..\pod\perltru64.pod\r
+       copy ..\README.vmesa    ..\pod\perlvmesa.pod\r
+       copy ..\vms\perlvms.pod ..\pod\perlvms.pod\r
+       copy ..\README.vos      ..\pod\perlvos.pod\r
+       copy ..\README.win32    ..\pod\perlwin32.pod\r
        cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters\r
        cd ..\lib && $(PERLEXE) lib_pm.PL\r
        $(PERLEXE) $(PL2BAT) $(UTILS)\r
@@ -1207,8 +1117,6 @@ distclean: clean
        -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \\r
                $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD)\r
        -del /f *.def *.map\r
-       -del /f $(EXTENSION_DLL) $(EXTENSION_PM)\r
-       -del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm\r
        -del /f $(EXTDIR)\DynaLoader\dl_win32.xs\r
        -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm\r
        -del /f $(LIBDIR)\XSLoader.pm\r
@@ -1217,15 +1125,38 @@ distclean: clean
        -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm\r
        -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm\r
        -del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm\r
+       -del /f $(LIBDIR)\PerlIO\Scalar.pm\r
        -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm\r
        -del /f $(LIBDIR)\File\Glob.pm\r
        -del /f $(LIBDIR)\Storable.pm\r
+       -del /f $(LIBDIR)\Filter\Util\Call.pm\r
+       -del /f $(LIBDIR)\Digest\MD5.pm\r
+       -del /f $(LIBDIR)\MIME\Base64.pm\r
+       -del /f $(LIBDIR)\MIME\QuotedPrint.pm\r
+       -del /f $(LIBDIR)\Time\HiRes.pm\r
+       -del /f $(LIBDIR)\List\Util.pm\r
+       -del /f $(LIBDIR)\Scalar\Util.pm\r
+       -del /f $(LIBDIR)\Time\Piece.pm\r
        -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO || rmdir /s $(LIBDIR)\IO\r
        -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread || rmdir /s $(LIBDIR)\Thread\r
        -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B || rmdir /s $(LIBDIR)\B\r
        -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data || rmdir /s $(LIBDIR)\Data\r
-       -del /f $(PODDIR)\*.html\r
-       -del /f $(PODDIR)\*.bat\r
+       -if exist $(LIBDIR)\Filter\Util\Call rmdir /s /q $(LIBDIR)\Filter\Util\Call || rmdir /s $(LIBDIR)\Filter\r
+       -if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util || rmdir /s $(LIBDIR)\Filter\r
+       -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest || rmdir /s $(LIBDIR)\Digest\r
+       -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME || rmdir /s $(LIBDIR)\MIME\r
+       -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List || rmdir /s $(LIBDIR)\List\r
+       -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar || rmdir /s $(LIBDIR)\Scalar\r
+       -cd $(PODDIR) && del /f *.html *.bat checkpods \\r
+           perlaix.pod perlamiga.pod perlapollo.pod \\r
+           perlbeos.pod perlbs2000.pod perlcygwin.pod perldgux.pod \\r
+           perldos.pod perlepoc.pod perlhpux.pod perlhurd.pod \\r
+           perlmachten.pod perlmint.pod \\r
+           perlmacos.pod perlmpeix.pod perlos2.pod perlos390.pod \\r
+           perlplan9.pod perlqnx.pod \\r
+           perlsolaris.pod perlvmesa.pod perlvms.pod perlvos.pod \\r
+           perlwin32.pod pod2html pod2latex pod2man pod2text pod2usage \\r
+           podchecker podselect\r
        -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc \\r
            dprofpp *.bat\r
        -cd ..\x2p && del /f find2perl s2p *.bat\r
@@ -1249,7 +1180,7 @@ installhtml : doc
        $(RCOPY) html\*.* $(INST_HTML)\*.*\r
 \r
 inst_lib : $(CONFIGPM)\r
-       copy splittree.pl .. \r
+       copy splittree.pl ..\r
        $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)\r
        $(RCOPY) ..\lib $(INST_LIB)\*.*\r
 \r
@@ -1290,7 +1221,7 @@ test-wide-notty : test-prep
            set HARNESS_PERL_SWITCHES=-C && \\r
            cd ..\t && $(PERLEXE) -I..\lib harness\r
 \r
-clean : \r
+clean : Extensions_clean\r
        -@erase miniperlmain$(o)\r
        -@erase $(MINIPERL)\r
        -@erase perlglob$(o)\r
@@ -1321,9 +1252,9 @@ ok: utils
 \r
 okfile: utils\r
        $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok\r
\r
+\r
 nok: utils\r
        $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"\r
\r
+\r
 nokfile: utils\r
        $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok\r