In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/88e241815c36fd7e2e0db73c93ff2ec458cddd7c?hp=808285e0c19deb01a491a8e21c7a4b31ab7dae30>

- Log -----------------------------------------------------------------
commit 88e241815c36fd7e2e0db73c93ff2ec458cddd7c
Author: Chris 'BinGOs' Williams <ch...@bingosnet.co.uk>
Date:   Sat Nov 8 14:11:24 2014 +0000

    Update ExtUtils-MakeMaker to CPAN version 7.02
    
      [DELTA]
    
    7.02 Sat Nov  8 07:13:40 GMT 2014
    
        No changes from 7.01_09
    
    7.01_09 Thu Nov  6 21:41:32 GMT 2014
        Test fixes:
        - Marked a test in pm_to_blib.t as TODO until further
          investigation can be scheduled
    
    7.01_08 Tue Nov  4 20:24:29 GMT 2014
        Test fixes:
        - roll back change in 7.01_07 and scrub PERL_INSTALL_QUIET
          environment variable
    
    7.01_07 Tue Nov  4 19:26:46 GMT 2014
        Test fixes:
        - Changed a regex in pm_to_blib.t to be more forgiving
    
    7.01_06 Mon Nov  3 20:31:05 GMT 2014
        Bug fixes:
        - Resolved regression with TEST_FILES
    
        Win32 fixes:
        - Targetted fix for nmake bug
        - miniperl.t core test fixed for Windows
    
    7.01_05 Mon Nov  3 10:14:11 GMT 2014
        VMS fixes:
        - Handle switches in $(PERL) by prepending MCR
        - Don't quote MAKE on VMS in Test::Utils
    
    7.01_04 Fri Oct 31 09:38:06 GMT 2014
        API change:
        - writeMakefile() has been removed after 20 years of being deprecated
    
        Bug fixes:
        - Regression in xs.t with older versions of xsubpp has been resolved
        - We now don't produce Borland C export symbols if BCC support dropped
    
    7.01_03 Thu Oct 30 19:12:57 GMT 2014
        Bug fixes:
        - Using NMAKE was broken this has been fixed
    
    7.01_02 Sat Oct 25 17:45:46 BST 2014
        Bug fixes:
        - Resolve a regression with FIXIN and core builds on Win32
    
    7.01_01 Sat Oct 25 13:45:00 BST 2014
        Bug fixes:
        - Resolve issue with Win32 perl builds in core
    
    7.00 Wed Oct 22 20:13:38 BST 2014
    
        No changes from 6.99_18
    
    6.99_18 Mon Oct 20 10:02:58 BST 2014
        Bug fixes:
        - Resolve regression with taint and get_version() [RT#99580]
    
        VMS fixes:
        - Avoid .NOTPARALLEL on VMS as it is a syntax error for MMS and MMK
        - Quotes are not stripped from argv[0] on VMS so need stripping
        - Move MCR from PERL to PERLRUN on VMS and other *RUN variables
    
    6.99_17 Sun Oct 12 19:37:04 BST 2014
        Bug fixes:
        - Fix test that got broke under core since 6.99_15
    
    6.99_16 Thu Oct  2 19:29:49 BST 2014
        Dist fixes:
        - Move File::Copy::Recursive from bundled to where it is
          used, so that it will not get installed as a runtime
          prereq
    
    6.99_15 Sun Sep 21 13:21:46 BST 2014
        Enhancements:
        - If core, add ccwarnflags and ccstdflags, if available
    
        Doc fixes:
        - Fix internal links
    
    6.99_14 Fri Sep 19 14:59:08 BST 2014
        Bug fixes:
        - Fixes to fallback version module for core integration problems
    
    6.99_13 Mon Sep 15 20:02:47 BST 2014
        Enhancements:
        - Bundle Encode::Locale as ExtUtils::MakeMaker::Locale
    
        Bug fixes:
        - Make included version module have standardised dist versioning
    
    6.99_12 Thu Sep 11 15:27:31 BST 2014
        Enhancements:
        - Now include a fallback version module for bootstrapping
    
        Bug fixes:
        - Support libfoo.0.dylib style libraries on Darwin
    
    6.99_11 Mon Sep  8 14:20:26 BST 2014
        Bug fixes:
        - Handle chcp failure better on MSWin32
        - Tests should be parallelisable once again
    
        Doc fixes:
        - Document that GNU make is usable on MSWin32 now
    
    6.99_10 Thu Sep  4 14:28:01 BST 2014
        Bug fixes:
        - Fixes for being integrated with core
        - Fixed the code page reset on MSWin32
        - Fixed test failures on BSD with UTF8 filenames
        - Fixed regression with quoting of $(PERL) when
          command line flags are used
    
    6.99_09 Thu Aug 28 11:01:37 BST 2014
        Enhancements:
        - Support GNU Make on Windows
        - Support paths and filenames that are UTF8 encoded
        - MM->can_run() added for finding programs (ported from
          IPC::Cmd)
    
        Bug fixes:
        - Handle UTF8 when generating manpages correctly
        - Generated Makefile contents are now consistently sorted
    
    6.99_08 Mon Aug 18 14:17:04 BST 2014
        Bug fixes:
        - Liblist::Kid: can now handle -l:foo.so invocations properly
        - Scripts will no longer have the 'not running under some shell' code
          applied when rewriting shebang lines.
        - version is now used to parse prereqs versions internally
        - Support UTF8 encoded command-line args and Makefile.PL args
        - Generated META.files will now always have linefeed EOLs, even on
          Windows
        - Rewrite the version line eval handling to have less insane edge cases
    
        Doc fixes:
        - Documentation now includes links to Dist::Zilla, File::ShareDir and
          File::ShareDir::Install
        - Clarified support policy for < v5.8.1 in README
    
        Misc:
        - Updated bundled CPAN::Meta::Requirements to version 2.126
        - Updated bundled ExtUtils::Manifest to version 1.65
    
    6.99_07 Wed Jul 30 17:36:14 BST 2014
        Bug fixes:
        - Resolve 'wide character in print' warnings
    
    6.99_06 Mon Jul 28 15:02:25 BST 2014
        Enhancements:
        - Improvements and tests for the spaces-in-stuff handling
    
    6.99_05 Tue Jul 22 12:32:03 BST 2014
        Enhancements:
        - Enable working with (including installing to) directories with spaces 
in names
    
    6.99_04 Sat Jul 12 12:43:08 BST 2014
        Enhancements:
        - No longer report each file being manified. Only summarise.
    
    6.99_03 Fri Jul  4 11:02:21 BST 2014
        Doc Fixes:
        - PATCHING document has been rewritten as CONTRIBUTING and TODO
          document has been removed
    
        Bug Fixes:
        - Rearranged bundled prereqs so CPAN::Meta::Requirements won't
          get stomped on if it is installed already, but CPAN::Meta isn't
    
    6.99_02 Thu Jun  5 12:15:28 BST 2014
        Bug fixes:
        * MM->parse_version will no longer warn if it could
          not determine the $VERSION due to syntax errors etc.
    
    6.99_01 Tue Jun  3 22:17:30 BST 2014
        Bug fixes:
        * Disregard some warnings during tests when cross-compiling
    
        Doc fixes:
        * Clarified the use and limitations of META_ADD, META_MERGE
    
        Test fixes:
        * Sanitise env vars in tests
-----------------------------------------------------------------------

Summary of changes:
 MANIFEST                                           |   7 +
 Makefile.SH                                        |   5 +-
 Porting/Maintainers.pl                             |   8 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm |  10 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm    |   2 +-
 .../ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm |  28 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm         |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm     | 178 +++++++++--
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm    |   3 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm  |   3 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm  |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm   |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm     |   3 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm    |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm    | 278 +++++++++-------
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm     |   3 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm     |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm   |  54 ++--
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm   |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm         |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm  | 193 ++++++++----
 .../lib/ExtUtils/MakeMaker/Config.pm               |   2 +-
 .../lib/ExtUtils/MakeMaker/FAQ.pod                 |   2 +-
 .../lib/ExtUtils/MakeMaker/Locale.pm               | 348 +++++++++++++++++++++
 .../lib/ExtUtils/MakeMaker/Tutorial.pod            |   2 +-
 .../lib/ExtUtils/MakeMaker/version.pm              |  55 ++++
 .../lib/ExtUtils/MakeMaker}/version/regex.pm       |  10 +-
 .../lib/ExtUtils/MakeMaker}/version/vpp.pm         |  41 +--
 .../ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm |   2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm |  23 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm    |   2 +-
 cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t         |   2 +-
 cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t           |  91 +++---
 cpan/ExtUtils-MakeMaker/t/MM_Unix.t                |   2 +-
 cpan/ExtUtils-MakeMaker/t/MakeMaker_Parameters.t   |  86 +++--
 cpan/ExtUtils-MakeMaker/t/PL_FILES.t               |  11 +-
 cpan/ExtUtils-MakeMaker/t/basic.t                  | 114 +++----
 cpan/ExtUtils-MakeMaker/t/cd.t                     |   8 +-
 cpan/ExtUtils-MakeMaker/t/echo.t                   |   7 +-
 .../MakeMaker/Test/Setup/{Recurs.pm => Unicode.pm} |  60 ++--
 .../t/lib/MakeMaker/Test/Setup/XS.pm               |  11 +-
 .../t/lib/MakeMaker/Test/Utils.pm                  |  11 +-
 cpan/ExtUtils-MakeMaker/t/meta_convert.t           |   2 +-
 cpan/ExtUtils-MakeMaker/t/min_perl_version.t       |  11 +-
 cpan/ExtUtils-MakeMaker/t/miniperl.t               |  16 +-
 cpan/ExtUtils-MakeMaker/t/oneliner.t               |   3 +-
 cpan/ExtUtils-MakeMaker/t/parse_version.t          |   1 +
 cpan/ExtUtils-MakeMaker/t/pm_to_blib.t             |  17 +-
 cpan/ExtUtils-MakeMaker/t/postamble.t              |   6 +
 cpan/ExtUtils-MakeMaker/t/prereq.t                 |   6 +
 cpan/ExtUtils-MakeMaker/t/recurs.t                 |  10 +-
 cpan/ExtUtils-MakeMaker/t/several_authors.t        |  15 +-
 cpan/ExtUtils-MakeMaker/t/unicode.t                |  87 ++++++
 cpan/ExtUtils-MakeMaker/t/vstrings.t               |  73 +++++
 cpan/ExtUtils-MakeMaker/t/writemakefile_args.t     |  10 +-
 cpan/ExtUtils-MakeMaker/t/xs.t                     |  31 +-
 t/porting/customized.dat                           |   2 -
 61 files changed, 1462 insertions(+), 515 deletions(-)
 create mode 100644 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm
 create mode 100644 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm
 copy cpan/{version/lib => 
ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker}/version/regex.pm (90%)
 copy cpan/{version/lib => 
ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker}/version/vpp.pm (94%)
 copy cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/{Recurs.pm => 
Unicode.pm} (50%)
 create mode 100644 cpan/ExtUtils-MakeMaker/t/unicode.t
 create mode 100644 cpan/ExtUtils-MakeMaker/t/vstrings.t

diff --git a/MANIFEST b/MANIFEST
index c1b8e17..dc48d47 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -971,8 +971,12 @@ cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm        
        Does the real work of the a
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm                        Locates 
libraries
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm       MakeMaker 
wrapper for Config
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod         MakeMaker FAQ
+cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm              Write Makefiles 
for extensions
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod    Writing a 
module with MakeMaker
+cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm
+cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm
+cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/vpp.pm
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm            Writes a 
bootstrap file (see MakeMaker)
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm             Writes a linker 
options file for extensions
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm                 MakeMaker 
methods for AIX
@@ -1021,6 +1025,7 @@ 
cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/PL_FILES.pm    MakeMaker 
test ut
 cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/Problem.pm  MakeMaker test 
utilities
 cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/Recurs.pm   MakeMaker test 
utilities
 cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/SAS.pm      MakeMaker test 
utilities
+cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/Unicode.pm
 cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm       MakeMaker test 
utilities
 cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Utils.pm          MakeMaker test 
utilities
 cpan/ExtUtils-MakeMaker/t/lib/TieIn.pm                         Testing library 
for dummy input handles
@@ -1066,7 +1071,9 @@ cpan/ExtUtils-MakeMaker/t/test_boilerplate.t              
        MakeMaker test
 cpan/ExtUtils-MakeMaker/t/testdata/reallylongdirectoryname/arch1/Config.pm     
test data for MakeMaker
 cpan/ExtUtils-MakeMaker/t/testdata/reallylongdirectoryname/arch2/Config.pm     
test data for MakeMaker
 cpan/ExtUtils-MakeMaker/t/testlib.t                            See if 
ExtUtils::testlib works
+cpan/ExtUtils-MakeMaker/t/unicode.t
 cpan/ExtUtils-MakeMaker/t/VERSION_FROM.t                       See if 
MakeMaker's VERSION_FROM works
+cpan/ExtUtils-MakeMaker/t/vstrings.t
 cpan/ExtUtils-MakeMaker/t/WriteEmptyMakefile.t                 See if 
WriteEmptyMakefile works
 cpan/ExtUtils-MakeMaker/t/writemakefile_args.t                 See if 
WriteMakefile works
 cpan/ExtUtils-MakeMaker/t/xs.t                                 Part of 
MakeMaker's test suite
diff --git a/Makefile.SH b/Makefile.SH
index 66061c4..df82d33 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -1306,8 +1306,9 @@ _cleaner2:
        -rmdir lib/IO/Compress/Adapter lib/IO/Compress lib/IO
        -rmdir lib/I18N/LangTags lib/I18N lib/Hash/Util lib/Hash lib/HTTP
        -rmdir lib/Filter/Util lib/Filter lib/File/Spec lib/ExtUtils/Typemaps
-       -rmdir lib/ExtUtils/ParseXS lib/ExtUtils/MakeMaker
-       -rmdir lib/ExtUtils/Liblist lib/ExtUtils/Constant lib/ExtUtils/Command
+       -rmdir lib/ExtUtils/ParseXS lib/ExtUtils/MakeMaker/version
+       -rmdir lib/ExtUtils/MakeMaker lib/ExtUtils/Liblist
+       -rmdir lib/ExtUtils/Constant lib/ExtUtils/Command
        -rmdir lib/ExtUtils/CBuilder/Platform/Windows
        -rmdir lib/ExtUtils/CBuilder/Platform lib/ExtUtils/CBuilder
        -rmdir lib/Exporter lib/Encode/Unicode lib/Encode/MIME/Header
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index a018ae4..5b4fc50 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -473,7 +473,7 @@ use File::Glob qw(:case);
     },
 
     'ExtUtils::MakeMaker' => {
-        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-6.98.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.02.tar.gz',
         'FILES'        => q[cpan/ExtUtils-MakeMaker],
         'EXCLUDED'     => [
             qr{^t/lib/Test/},
@@ -485,12 +485,6 @@ use File::Glob qw(:case);
             'README.packaging',
         ],
         'CUSTOMIZED'   => [
-            # Already merged upstream in GitHub 0116aaf4e, just awaiting
-            # a new stable CPAN release
-            qw(        t/pm_to_blib.t ),
-            # Already merged upstream in GitHub 46586b12c, just awaiting
-            # a new stable CPAN release
-            qw( lib/ExtUtils/Liblist/Kid.pm ),
         ],
     },
 
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm
index f45d41d..fcabd2e 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm
@@ -10,7 +10,7 @@ our @ISA = qw(Exporter);
 
 our @EXPORT  = qw(test_harness pod2man perllocal_install uninstall
                   warn_if_old_packlist test_s cp_nonempty);
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 my $Is_VMS = $^O eq 'VMS';
 
@@ -116,8 +116,9 @@ sub pod2man {
                 'section|s=s', 'release|r=s', 'center|c=s',
                 'date|d=s', 'fixed=s', 'fixedbold=s', 'fixeditalic=s',
                 'fixedbolditalic=s', 'official|o', 'quotes|q=s', 'lax|l',
-                'name|n=s', 'perm_rw=i'
+                'name|n=s', 'perm_rw=i', 'utf8|u'
     );
+    delete $options{utf8} unless $Pod::Man::VERSION >= 2.17;
 
     # If there's no files, don't bother going further.
     return 0 unless @ARGV;
@@ -130,6 +131,9 @@ sub pod2man {
     # This isn't a valid Pod::Man option and is only accepted for backwards
     # compatibility.
     delete $options{lax};
+    my $count = scalar @ARGV / 2;
+    my $plural = $count == 1 ? 'document' : 'documents';
+    print "Manifying $count pod $plural\n";
 
     do {{  # so 'next' works
         my ($pod, $man) = splice(@ARGV, 0, 2);
@@ -138,8 +142,6 @@ sub pod2man {
                  (mtime($man) > mtime($pod)) &&
                  (mtime($man) > mtime("Makefile")));
 
-        print "Manifying $man\n";
-
         my $parser = Pod::Man->new(%options);
         $parser->parse_from_file($pod, $man)
           or do { warn("Could not install $man\n");  next };
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
index 2d21e12..3a18edf 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
@@ -2,7 +2,7 @@ package ExtUtils::Liblist;
 
 use strict;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 use File::Spec;
 require ExtUtils::Liblist::Kid;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
index 7ef793f..bb4f505 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
@@ -11,7 +11,7 @@ use 5.006;
 
 use strict;
 use warnings;
-our $VERSION = '6.98_01';
+our $VERSION = '7.02';
 
 use ExtUtils::MakeMaker::Config;
 use Cwd 'cwd';
@@ -49,7 +49,7 @@ sub _unix_os2_ext {
     # this is a rewrite of Andy Dougherty's extliblist in perl
 
     my ( @searchpath );    # from "-L/path" entries in $potential_libs
-    my ( @libpath ) = split " ", $Config{'libpth'};
+    my ( @libpath ) = split " ", $Config{'libpth'} || '';
     my ( @ldloadlibs, @bsloadlibs, @extralibs, @ld_run_path, %ld_run_path_seen 
);
     my ( @libs,       %libs_seen );
     my ( $fullname,   @fullname );
@@ -57,6 +57,7 @@ sub _unix_os2_ext {
     my ( $found ) = 0;
 
     foreach my $thislib ( split ' ', $potential_libs ) {
+        my ( $custom_name ) = '';
 
         # Handle possible linker path arguments.
         if ( $thislib =~ s/^(-[LR]|-Wl,-R|-Wl,-rpath,)// ) {    # save path 
flag type
@@ -92,7 +93,14 @@ sub _unix_os2_ext {
         }
 
         # Handle possible library arguments.
-        unless ( $thislib =~ s/^-l// ) {
+        if ( $thislib =~ s/^-l(:)?// ) {
+            # Handle -l:foo.so, which means that the library will
+            # actually be called foo.so, not libfoo.so.  This
+            # is used in Android by ExtUtils::Depends to allow one XS
+            # module to link to another.
+            $custom_name = $1 || '';
+        }
+        else {
             warn "Unrecognized argument in LIBS ignored: '$thislib'\n";
             next;
         }
@@ -178,6 +186,8 @@ sub _unix_os2_ext {
                 #
                 # , the compilation tools expand the environment variables.)
             }
+            elsif ( $custom_name && -f ( $fullname = "$thispth/$thislib" ) ) {
+            }
             else {
                 warn "$thislib not found in $thispth\n" if $verbose;
                 next;
@@ -191,7 +201,7 @@ sub _unix_os2_ext {
 
             # what do we know about this library...
             my $is_dyna = ( $fullname !~ /\Q$Config_libext\E\z/ );
-            my $in_perl = ( $libs =~ /\B-l\Q${thislib}\E\b/s );
+            my $in_perl = ( $libs =~ /\B-l:?\Q${thislib}\E\b/s );
 
             # include the path to the lib once in the dynamic linker path
             # but only if it is a dynamic lib and not in Perl itself
@@ -211,7 +221,7 @@ sub _unix_os2_ext {
                     && ( $thislib eq 'm' || $thislib eq 'ndbm' ) )
               )
             {
-                push( @extralibs, "-l$thislib" );
+                push( @extralibs, "-l$custom_name$thislib" );
             }
 
             # We might be able to load this archive file dynamically
@@ -233,11 +243,11 @@ sub _unix_os2_ext {
 
                     # For SunOS4, do not add in this shared library if
                     # it is already linked in the main perl executable
-                    push( @ldloadlibs, "-l$thislib" )
+                    push( @ldloadlibs, "-l$custom_name$thislib" )
                       unless ( $in_perl and $^O eq 'sunos' );
                 }
                 else {
-                    push( @ldloadlibs, "-l$thislib" );
+                    push( @ldloadlibs, "-l$custom_name$thislib" );
                 }
             }
             last;    # found one here so don't bother looking further
@@ -332,8 +342,8 @@ sub _win32_ext {
     return ( '', '', '', '', ( $give_libs ? \@libs : () ) ) unless @extralibs;
 
     # make sure paths with spaces are properly quoted
-    @extralibs = map { /\s/ ? qq["$_"] : $_ } @extralibs;
-    @libs      = map { /\s/ ? qq["$_"] : $_ } @libs;
+    @extralibs = map { qq["$_"] } @extralibs;
+    @libs      = map { qq["$_"] } @libs;
 
     my $lib = join( ' ', @extralibs );
 
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
index a34015f..4deb3f2 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
@@ -3,7 +3,7 @@ package ExtUtils::MM;
 use strict;
 use ExtUtils::MakeMaker::Config;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::Liblist;
 require ExtUtils::MakeMaker;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
index 7c600a6..fd3b948 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MM_AIX;
 
 use strict;
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
index 2066311..9b86c2c 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MM_Any;
 
 use strict;
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 use Carp;
 use File::Spec;
@@ -125,6 +125,142 @@ sub can_load_xs {
 }
 
 
+=head3 can_run
+
+  use ExtUtils::MM;
+  my $runnable = MM->can_run($Config{make});
+
+If called in a scalar context it will return the full path to the binary
+you asked for if it was found, or C<undef> if it was not.
+
+If called in a list context, it will return a list of the full paths to 
instances
+of the binary where found in C<PATH>, or an empty list if it was not found.
+
+Copied from L<IPC::Cmd|IPC::Cmd/"$path = can_run( PROGRAM );">, but modified 
into
+a method (and removed C<$INSTANCES> capability).
+
+=cut
+
+sub can_run {
+    my ($self, $command) = @_;
+
+    # a lot of VMS executables have a symbol defined
+    # check those first
+    if ( $^O eq 'VMS' ) {
+        require VMS::DCLsym;
+        my $syms = VMS::DCLsym->new;
+        return $command if scalar $syms->getsym( uc $command );
+    }
+
+    my @possibles;
+
+    if( File::Spec->file_name_is_absolute($command) ) {
+        return $self->maybe_command($command);
+
+    } else {
+        for my $dir (
+            File::Spec->path,
+            File::Spec->curdir
+        ) {
+            next if ! $dir || ! -d $dir;
+            my $abs = File::Spec->catfile($self->os_flavor_is('Win32') ? 
Win32::GetShortPathName( $dir ) : $dir, $command);
+            push @possibles, $abs if $abs = $self->maybe_command($abs);
+        }
+    }
+    return @possibles if wantarray;
+    return shift @possibles;
+}
+
+
+=head3 can_redirect_error
+
+  $useredirect = MM->can_redirect_error;
+
+True if on an OS where qx operator (or backticks) can redirect C<STDERR>
+onto C<STDOUT>.
+
+=cut
+
+sub can_redirect_error {
+  my $self = shift;
+  $self->os_flavor_is('Unix')
+      or ($self->os_flavor_is('Win32') and !$self->os_flavor_is('Win9x'))
+      or $self->os_flavor_is('OS/2')
+}
+
+
+=head3 is_make_type
+
+    my $is_dmake = $self->is_make_type('dmake');
+
+Returns true if C<<$self->make>> is the given type; possibilities are:
+
+  gmake    GNU make
+  dmake
+  nmake
+  bsdmake  BSD pmake-derived
+
+=cut
+
+sub is_make_type {
+    my($self, $type) = @_;
+    (undef, undef, my $make_basename) = $self->splitpath($self->make);
+    return 1 if $make_basename =~ /\b$type\b/; # executable's filename
+    # now have to run with "-v" and guess
+    my $redirect = $self->can_redirect_error ? '2>&1' : '';
+    my $make = $self->make || $self->{MAKE};
+    my $minus_v = `"$make" -v $redirect`;
+    return 1 if $type eq 'gmake' and $minus_v =~ /GNU make/i;
+    return 1 if $type eq 'bsdmake'
+      and $minus_v =~ /^usage: make \[-BeikNnqrstWwX\]/im;
+    0; # it wasn't whatever you asked
+}
+
+
+=head3 can_dep_space
+
+    my $can_dep_space = $self->can_dep_space;
+
+Returns true if C<make> can handle (probably by quoting)
+dependencies that contain a space. Currently known true for GNU make,
+false for BSD pmake derivative.
+
+=cut
+
+my $cached_dep_space;
+sub can_dep_space {
+    my $self = shift;
+    return $cached_dep_space if defined $cached_dep_space;
+    return $cached_dep_space = 1 if $self->is_make_type('gmake');
+    return $cached_dep_space = 0 if $self->is_make_type('dmake'); # only on W32
+    return $cached_dep_space = 0 if $self->is_make_type('bsdmake');
+    return $cached_dep_space = 0; # assume no
+}
+
+
+=head3 quote_dep
+
+  $text = $mm->quote_dep($text);
+
+Method that protects Makefile single-value constants (mainly filenames),
+so that make will still treat them as single values even if they
+inconveniently have spaces in. If the make program being used cannot
+achieve such protection and the given text would need it, throws an
+exception.
+
+=cut
+
+sub quote_dep {
+    my ($self, $arg) = @_;
+    die <<EOF if $arg =~ / / and not $self->can_dep_space;
+Tried to use make dependency with space for make that can't:
+  '$arg'
+EOF
+    $arg =~ s/( )/\\$1/g; # how GNU make does it
+    return $arg;
+}
+
+
 =head3 split_command
 
     my @cmds = $MM->split_command($cmd, @args);
@@ -781,9 +917,10 @@ END
     my @man_cmds;
     foreach my $section (qw(1 3)) {
         my $pods = $self->{"MAN${section}PODS"};
-        push @man_cmds, $self->split_command(<<CMD, map {($_,$pods->{$_})} 
sort keys %$pods);
-       \$(NOECHO) \$(POD2MAN) --section=$section --perm_rw=\$(PERM_RW)
+        my $p2m = sprintf <<CMD, $] > 5.008 ? " -u" : "";
+       \$(NOECHO) \$(POD2MAN) --section=$section --perm_rw=\$(PERM_RW)%s
 CMD
+        push @man_cmds, $self->split_command($p2m, map {($_,$pods->{$_})} sort 
keys %$pods);
     }
 
     $manify .= "\t\$(NOECHO) \$(NOOP)\n" unless @man_cmds;
@@ -1037,8 +1174,7 @@ sub _add_requirements_to_meta_v1_4 {
     # Check the original args so we can tell between the user setting it
     # to an empty hash and it just being initialized.
     if( $self->{ARGS}{CONFIGURE_REQUIRES} ) {
-        $meta{configure_requires}
-            = _normalize_prereqs($self->{CONFIGURE_REQUIRES});
+        $meta{configure_requires} = $self->{CONFIGURE_REQUIRES};
     } else {
         $meta{configure_requires} = {
             'ExtUtils::MakeMaker'       => 0,
@@ -1046,7 +1182,7 @@ sub _add_requirements_to_meta_v1_4 {
     }
 
     if( $self->{ARGS}{BUILD_REQUIRES} ) {
-        $meta{build_requires} = _normalize_prereqs($self->{BUILD_REQUIRES});
+        $meta{build_requires} = $self->{BUILD_REQUIRES};
     } else {
         $meta{build_requires} = {
             'ExtUtils::MakeMaker'       => 0,
@@ -1056,11 +1192,11 @@ sub _add_requirements_to_meta_v1_4 {
     if( $self->{ARGS}{TEST_REQUIRES} ) {
         $meta{build_requires} = {
           %{ $meta{build_requires} },
-          %{ _normalize_prereqs($self->{TEST_REQUIRES}) },
+          %{ $self->{TEST_REQUIRES} },
         };
     }
 
-    $meta{requires} = _normalize_prereqs($self->{PREREQ_PM})
+    $meta{requires} = $self->{PREREQ_PM}
         if defined $self->{PREREQ_PM};
     $meta{requires}{perl} = _normalize_version($self->{MIN_PERL_VERSION})
         if $self->{MIN_PERL_VERSION};
@@ -1074,8 +1210,7 @@ sub _add_requirements_to_meta_v2 {
     # Check the original args so we can tell between the user setting it
     # to an empty hash and it just being initialized.
     if( $self->{ARGS}{CONFIGURE_REQUIRES} ) {
-        $meta{prereqs}{configure}{requires}
-            = _normalize_prereqs($self->{CONFIGURE_REQUIRES});
+        $meta{prereqs}{configure}{requires} = $self->{CONFIGURE_REQUIRES};
     } else {
         $meta{prereqs}{configure}{requires} = {
             'ExtUtils::MakeMaker'       => 0,
@@ -1083,7 +1218,7 @@ sub _add_requirements_to_meta_v2 {
     }
 
     if( $self->{ARGS}{BUILD_REQUIRES} ) {
-        $meta{prereqs}{build}{requires} = 
_normalize_prereqs($self->{BUILD_REQUIRES});
+        $meta{prereqs}{build}{requires} = $self->{BUILD_REQUIRES};
     } else {
         $meta{prereqs}{build}{requires} = {
             'ExtUtils::MakeMaker'       => 0,
@@ -1091,10 +1226,10 @@ sub _add_requirements_to_meta_v2 {
     }
 
     if( $self->{ARGS}{TEST_REQUIRES} ) {
-        $meta{prereqs}{test}{requires} = 
_normalize_prereqs($self->{TEST_REQUIRES});
+        $meta{prereqs}{test}{requires} = $self->{TEST_REQUIRES};
     }
 
-    $meta{prereqs}{runtime}{requires} = _normalize_prereqs($self->{PREREQ_PM})
+    $meta{prereqs}{runtime}{requires} = $self->{PREREQ_PM}
         if $self->{ARGS}{PREREQ_PM};
     $meta{prereqs}{runtime}{requires}{perl} = 
_normalize_version($self->{MIN_PERL_VERSION})
         if $self->{MIN_PERL_VERSION};
@@ -1102,15 +1237,6 @@ sub _add_requirements_to_meta_v2 {
     return %meta;
 }
 
-sub _normalize_prereqs {
-  my ($hash) = @_;
-  my %prereqs;
-  while ( my ($k,$v) = each %$hash ) {
-    $prereqs{$k} = _normalize_version($v);
-  }
-  return \%prereqs;
-}
-
 # Adapted from Module::Build::Base
 sub _normalize_version {
   my ($version) = @_;
@@ -1993,7 +2119,7 @@ sub init_VERSION {
     if (defined $self->{VERSION}) {
         if ( $self->{VERSION} !~ /^\s*v?[\d_\.]+\s*$/ ) {
           require version;
-          my $normal = eval { version->parse( $self->{VERSION} ) };
+          my $normal = eval { version->new( $self->{VERSION} ) };
           $self->{VERSION} = $normal if defined $normal;
         }
         $self->{VERSION} =~ s/^\s+//;
@@ -2060,7 +2186,7 @@ Defines at least these macros.
 sub init_tools {
     my $self = shift;
 
-    $self->{ECHO}     ||= $self->oneliner('print qq{@ARGV}', ['-l']);
+    $self->{ECHO}     ||= $self->oneliner('binmode STDOUT, qq{:raw}; print 
qq{@ARGV}', ['-l']);
     $self->{ECHO_N}   ||= $self->oneliner('print qq{@ARGV}');
 
     $self->{TOUCH}    ||= $self->oneliner('touch', ["-MExtUtils::Command"]);
@@ -2722,7 +2848,7 @@ Used by perldepend() in MM_Unix and MM_VMS via 
_perl_header_files_fragment()
 sub _perl_header_files {
     my $self = shift;
 
-    my $header_dir = $self->{PERL_SRC} || $self->catdir($Config{archlibexp}, 
'CORE');
+    my $header_dir = $self->{PERL_SRC} || $ENV{PERL_SRC} || 
$self->catdir($Config{archlibexp}, 'CORE');
     opendir my $dh, $header_dir
         or die "Failed to opendir '$header_dir' to find header files: $!";
 
@@ -2759,7 +2885,7 @@ sub _perl_header_files_fragment {
     return join("\\\n",
                 "PERL_HDRS = ",
                 map {
-                    sprintf( "        \$(PERL_INC)%s%s            ", 
$separator, $_ )
+                    sprintf( "        \$(PERL_INCDEP)%s%s            ", 
$separator, $_ )
                 } $self->_perl_header_files()
            ) . "\n\n"
            . "\$(OBJECT) : \$(PERL_HDRS)\n";
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
index 060ce36..101c452 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
@@ -26,7 +26,7 @@ require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 
 our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 
 =item os_flavor
@@ -50,6 +50,7 @@ sub init_linker {
 
     $self->{PERL_ARCHIVE} ||=
       File::Spec->catdir('$(PERL_INC)',$Config{libperl});
+    $self->{PERL_ARCHIVEDEP} ||= '';
     $self->{PERL_ARCHIVE_AFTER} ||= '';
     $self->{EXPORT_LIST}  ||= '';
 }
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
index d8f3e3a..03cb12c 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
@@ -9,7 +9,7 @@ require ExtUtils::MM_Unix;
 require ExtUtils::MM_Win32;
 our @ISA = qw( ExtUtils::MM_Unix );
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 
 =head1 NAME
@@ -94,6 +94,7 @@ sub init_linker {
           '$(PERL_INC)' .'/'. ("$Config{libperl}" or "libperl.a");
     }
 
+    $self->{PERL_ARCHIVEDEP} ||= '';
     $self->{PERL_ARCHIVE_AFTER} ||= '';
     $self->{EXPORT_LIST}  ||= '';
 }
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
index 4f52a98..a58c1c3 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_DOS;
 
 use strict;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
index 861a544..49634db 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
@@ -7,7 +7,7 @@ BEGIN {
     our @ISA = qw( ExtUtils::MM_Unix );
 }
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 
 =head1 NAME
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
index cd3a12a..5f76952 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_MacOS;
 
 use strict;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 sub new {
     die <<'UNSUPPORTED';
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
index f6b0b5b..331576d 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
@@ -22,7 +22,7 @@ use strict;
 use ExtUtils::MakeMaker::Config;
 use File::Basename;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::MM_Win32;
 our @ISA = qw(ExtUtils::MM_Win32);
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
index 52bc4d1..a9d8011 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
@@ -5,7 +5,7 @@ use strict;
 use ExtUtils::MakeMaker qw(neatvalue);
 use File::Spec;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
@@ -129,6 +129,7 @@ sub init_linker {
 
     $self->{PERL_ARCHIVE} = "\$(PERL_INC)/libperl\$(LIB_EXT)";
 
+    $self->{PERL_ARCHIVEDEP} ||= '';
     $self->{PERL_ARCHIVE_AFTER} = $OS2::is_aout
       ? ''
       : '$(PERL_INC)/libperl_override$(LIB_EXT)';
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
index 7b74bf4..c115771 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MM_QNX;
 
 use strict;
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
index 5b97300..97683fc 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MM_UWIN;
 
 use strict;
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
index 4140432..f0d223f 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
@@ -15,7 +15,7 @@ use ExtUtils::MakeMaker qw($Verbose neatvalue);
 
 # If we make $VERSION an our variable parse_version() breaks
 use vars qw($VERSION);
-$VERSION = '6.98';
+$VERSION = '7.02';
 $VERSION = eval $VERSION;  ## no critic [BuiltinFunctions::ProhibitStringyEval]
 
 require ExtUtils::MM_Any;
@@ -190,6 +190,19 @@ sub cflags {
 
     @cflags{qw(cc ccflags optimize shellflags)}
        = @Config{qw(cc ccflags optimize shellflags)};
+
+    # Perl 5.21.4 adds the (gcc) warning (-Wall ...) and std (-std=c89)
+    # flags to the %Config, and the modules in the core can be built
+    # with those.
+    my @ccextraflags = qw(ccwarnflags ccstdflags);
+    if ($ENV{PERL_CORE}) {
+      for my $x (@ccextraflags) {
+        if (exists $Config{$x}) {
+          $cflags{$x} = $Config{$x};
+        }
+      }
+    }
+
     my($optdebug) = "";
 
     $cflags{shellflags} ||= '';
@@ -258,6 +271,10 @@ sub cflags {
        $self->{CCFLAGS} .= ' -DPERL_POLLUTE ';
     }
 
+    for my $x (@ccextraflags) {
+      $self->{CCFLAGS} .= $cflags{$x} if exists $cflags{$x};
+    }
+
     my $pollute = '';
     if ($Config{usemymalloc} and not $Config{bincompat5005}
        and not $Config{ccflags} =~ /-DPERL_POLLUTE_MALLOC\b/
@@ -387,10 +404,10 @@ sub constants {
                         } $self->installvars),
                    qw(
               PERL_LIB
-              PERL_ARCHLIB
+              PERL_ARCHLIB PERL_ARCHLIBDEP
               LIBPERL_A MYEXTLIB
               FIRST_MAKEFILE MAKEFILE_OLD MAKE_APERL_FILE
-              PERLMAINCC PERL_SRC PERL_INC
+              PERLMAINCC PERL_SRC PERL_INC PERL_INCDEP
               PERL            FULLPERL          ABSPERL
               PERLRUN         FULLPERLRUN       ABSPERLRUN
               PERLRUNINST     FULLPERLRUNINST   ABSPERLRUNINST
@@ -404,6 +421,8 @@ sub constants {
         # pathnames can have sharp signs in them; escape them so
         # make doesn't think it is a comment-start character.
         $self->{$macro} =~ s/#/\\#/g;
+       $self->{$macro} = $self->quote_dep($self->{$macro})
+         if $ExtUtils::MakeMaker::macro_dep{$macro};
        push @m, "$macro = $self->{$macro}\n";
     }
 
@@ -443,7 +462,7 @@ MAN3PODS = ".$self->wraplist(sort keys 
%{$self->{MAN3PODS}})."
 
     push @m, q{
 # Where is the Config information that we are using/depend on
-CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
+CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h
 } if -e File::Spec->catfile( $self->{PERL_INC}, 'config.h' );
 
 
@@ -460,11 +479,11 @@ INST_DYNAMIC     = $self->{INST_DYNAMIC}
 INST_BOOT        = $self->{INST_BOOT}
 };
 
-
     push @m, qq{
 # Extra linker info
 EXPORT_LIST        = $self->{EXPORT_LIST}
 PERL_ARCHIVE       = $self->{PERL_ARCHIVE}
+PERL_ARCHIVEDEP    = $self->{PERL_ARCHIVEDEP}
 PERL_ARCHIVE_AFTER = $self->{PERL_ARCHIVE_AFTER}
 };
 
@@ -878,8 +897,8 @@ $(BOOTSTRAP) : $(FIRST_MAKEFILE) $(BOOTDEP) 
$(INST_ARCHAUTODIR)$(DFSEP).exists
        $(NOECHO) $(PERLRUN) \
                "-MExtUtils::Mkbootstrap" \
                -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');"
-       $(NOECHO) $(TOUCH) %s
-       $(CHMOD) $(PERM_RW) %s
+       $(NOECHO) $(TOUCH) "%s"
+       $(CHMOD) $(PERM_RW) "%s"
 MAKE_FRAG
 }
 
@@ -911,7 +930,7 @@ OTHERLDFLAGS = '.$ld_opt.$otherldflags.'
 INST_DYNAMIC_DEP = '.$inst_dynamic_dep.'
 INST_DYNAMIC_FIX = '.$ld_fix.'
 
-$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists 
$(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists 
$(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
 ');
     if ($armaybe ne ':'){
        $ldfrom = 'tmp$(LIB_EXT)';
@@ -940,13 +959,13 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) 
$(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPO
        # platforms.  We peek at lddlflags to see if we need -Wl,-R
        # or -R to add paths to the run-time library search path.
         if ($Config{'lddlflags'} =~ /-Wl,-R/) {
-            $libs .= ' -L$(PERL_INC) -Wl,-R$(INSTALLARCHLIB)/CORE 
-Wl,-R$(PERL_ARCHLIB)/CORE -lperl';
+            $libs .= ' "-L$(PERL_INC)" "-Wl,-R$(INSTALLARCHLIB)/CORE" 
"-Wl,-R$(PERL_ARCHLIB)/CORE" -lperl';
         } elsif ($Config{'lddlflags'} =~ /-R/) {
-            $libs .= ' -L$(PERL_INC) -R$(INSTALLARCHLIB)/CORE 
-R$(PERL_ARCHLIB)/CORE -lperl';
+            $libs .= ' "-L$(PERL_INC)" "-R$(INSTALLARCHLIB)/CORE" 
"-R$(PERL_ARCHLIB)/CORE" -lperl';
         } elsif ( $Is{Android} ) {
             # The Android linker will not recognize symbols from
             # libperl unless the module explicitly depends on it.
-            $libs .= ' -L$(PERL_INC) -lperl';
+            $libs .= ' "-L$(PERL_INC)" -lperl';
         }
     }
 
@@ -1043,7 +1062,7 @@ WARNING
             next unless $self->maybe_command($abs);
             print "Executing $abs\n" if ($trace >= 2);
 
-            my $version_check = qq{$abs -le "require $ver; print qq{VER_OK}"};
+            my $version_check = qq{"$abs" -le "require $ver; print 
qq{VER_OK}"};
 
             # To avoid using the unportable 2>&1 to suppress STDERR,
             # we close it before running the command.
@@ -1191,10 +1210,6 @@ sub _fixin_replace_shebang {
             $shb .= ' ' . $arg if defined $arg;
             $shb .= "\n";
         }
-        $shb .= qq{
-eval 'exec $interpreter $arg -S \$0 \${1+"\$\@"}'
-    if 0; # not running under some shell
-} unless $Is{Win32};    # this won't work on win32, so don't
     }
     else {
         warn "Can't find $cmd in PATH, $file unchanged"
@@ -1712,6 +1727,8 @@ EOP
        $self->{PERL_LIB} = File::Spec->rel2abs($self->{PERL_LIB});
        $self->{PERL_ARCHLIB} = File::Spec->rel2abs($self->{PERL_ARCHLIB});
     }
+    $self->{PERL_INCDEP} = $self->{PERL_INC};
+    $self->{PERL_ARCHLIBDEP} = $self->{PERL_ARCHLIB};
 
     # We get SITELIBEXP and SITEARCHEXP directly via
     # Get_from_Config. When we are running standard modules, these
@@ -1805,6 +1822,7 @@ Unix has no need of special linker flags.
 sub init_linker {
     my($self) = shift;
     $self->{PERL_ARCHIVE} ||= '';
+    $self->{PERL_ARCHIVEDEP} ||= '';
     $self->{PERL_ARCHIVE_AFTER} ||= '';
     $self->{EXPORT_LIST}  ||= '';
 }
@@ -1909,8 +1927,20 @@ sub init_PERL {
 
     $self->{PERL} ||=
         $self->find_perl(5.0, \@perls, \@defpath, $Verbose );
-    # don't check if perl is executable, maybe they have decided to
-    # supply switches with perl
+
+    my $perl = $self->{PERL};
+    $perl =~ s/^"//;
+    my $has_mcr = $perl =~ s/^MCR\s*//;
+    my $perlflags = '';
+    my $stripped_perl;
+    while ($perl) {
+       ($stripped_perl = $perl) =~ s/"$//;
+       last if -x $stripped_perl;
+       last unless $perl =~ s/(\s+\S+)$//;
+       $perlflags = $1.$perlflags;
+    }
+    $self->{PERL} = $stripped_perl;
+    $self->{PERL} = 'MCR '.$self->{PERL} if $has_mcr || $Is{VMS};
 
     # When built for debugging, VMS doesn't create perl.exe but ndbgperl.exe.
     my $perl_name = 'perl';
@@ -1920,13 +1950,18 @@ sub init_PERL {
     # XXX This logic is flawed.  If "miniperl" is anywhere in the path
     # it will get confused.  It should be fixed to work only on the filename.
     # Define 'FULLPERL' to be a non-miniperl (used in test: target)
-    ($self->{FULLPERL} = $self->{PERL}) =~ 
s/\Q$miniperl\E$/$perl_name$Config{exe_ext}/i
-       unless $self->{FULLPERL};
+    unless ($self->{FULLPERL}) {
+      ($self->{FULLPERL} = $self->{PERL}) =~ 
s/\Q$miniperl\E$/$perl_name$Config{exe_ext}/i;
+      $self->{FULLPERL} = qq{"$self->{FULLPERL}"}.$perlflags;
+    }
+    # Can't have an image name with quotes, and findperl will have
+    # already escaped spaces.
+    $self->{FULLPERL} =~ tr/"//d if $Is{VMS};
 
     # Little hack to get around VMS's find_perl putting "MCR" in front
     # sometimes.
     $self->{ABSPERL} = $self->{PERL};
-    my $has_mcr = $self->{ABSPERL} =~ s/^MCR\s*//;
+    $has_mcr = $self->{ABSPERL} =~ s/^MCR\s*//;
     if( $self->file_name_is_absolute($self->{ABSPERL}) ) {
         $self->{ABSPERL} = '$(PERL)';
     }
@@ -1939,6 +1974,11 @@ sub init_PERL {
 
         $self->{ABSPERL} = 'MCR '.$self->{ABSPERL} if $has_mcr;
     }
+    $self->{PERL} = qq{"$self->{PERL}"}.$perlflags;
+
+    # Can't have an image name with quotes, and findperl will have
+    # already escaped spaces.
+    $self->{PERL} =~ tr/"//d if $Is{VMS};
 
     # Are we building the core?
     $self->{PERL_CORE} = $ENV{PERL_CORE} unless exists $self->{PERL_CORE};
@@ -1948,14 +1988,15 @@ sub init_PERL {
     foreach my $perl (qw(PERL FULLPERL ABSPERL)) {
         my $run  = $perl.'RUN';
 
-        $self->{$run}  = "\$($perl)";
+        $self->{$run}  = qq{\$($perl)};
 
         # Make sure perl can find itself before it's installed.
         $self->{$run} .= q{ "-I$(PERL_LIB)" "-I$(PERL_ARCHLIB)"}
           if $self->{UNINSTALLED_PERL} || $self->{PERL_CORE};
 
         $self->{$perl.'RUNINST'} =
-          sprintf q{$(%sRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"}, $perl;
+          sprintf q{$(%sRUN)%s "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"},
+           $perl, $perlflags;
     }
 
     return 1;
@@ -2079,54 +2120,54 @@ pure_perl_install :: all
 };
 
     push @m,
-q{             read 
}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
-               write 
}.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+q{             read 
"}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{" \
+               write 
"}.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{" \
 } unless $self->{NO_PACKLIST};
 
     push @m,
-q{             $(INST_LIB) $(DESTINSTALLPRIVLIB) \
-               $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
-               $(INST_BIN) $(DESTINSTALLBIN) \
-               $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
-               $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
-               $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+q{             "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \
+               "$(INST_ARCHLIB)" "$(DESTINSTALLARCHLIB)" \
+               "$(INST_BIN)" "$(DESTINSTALLBIN)" \
+               "$(INST_SCRIPT)" "$(DESTINSTALLSCRIPT)" \
+               "$(INST_MAN1DIR)" "$(DESTINSTALLMAN1DIR)" \
+               "$(INST_MAN3DIR)" "$(DESTINSTALLMAN3DIR)"
        $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
-               }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{
+               "}.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{"
 
 
 pure_site_install :: all
        $(NOECHO) $(MOD_INSTALL) \
 };
     push @m,
-q{             read 
}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
-               write 
}.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \
+q{             read 
"}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \
+               write 
"}.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{" 
\
 } unless $self->{NO_PACKLIST};
 
     push @m,
-q{             $(INST_LIB) $(DESTINSTALLSITELIB) \
-               $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
-               $(INST_BIN) $(DESTINSTALLSITEBIN) \
-               $(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \
-               $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
-               $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+q{             "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \
+               "$(INST_ARCHLIB)" "$(DESTINSTALLSITEARCH)" \
+               "$(INST_BIN)" "$(DESTINSTALLSITEBIN)" \
+               "$(INST_SCRIPT)" "$(DESTINSTALLSITESCRIPT)" \
+               "$(INST_MAN1DIR)" "$(DESTINSTALLSITEMAN1DIR)" \
+               "$(INST_MAN3DIR)" "$(DESTINSTALLSITEMAN3DIR)"
        $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
-               }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
+               "}.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{"
 
 pure_vendor_install :: all
        $(NOECHO) $(MOD_INSTALL) \
 };
     push @m,
-q{             read 
}.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
-               write 
}.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ 
\
+q{             read 
"}.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \
+               write 
"}.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{"
 \
 } unless $self->{NO_PACKLIST};
 
     push @m,
-q{             $(INST_LIB) $(DESTINSTALLVENDORLIB) \
-               $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
-               $(INST_BIN) $(DESTINSTALLVENDORBIN) \
-               $(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \
-               $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
-               $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+q{             "$(INST_LIB)" "$(DESTINSTALLVENDORLIB)" \
+               "$(INST_ARCHLIB)" "$(DESTINSTALLVENDORARCH)" \
+               "$(INST_BIN)" "$(DESTINSTALLVENDORBIN)" \
+               "$(INST_SCRIPT)" "$(DESTINSTALLVENDORSCRIPT)" \
+               "$(INST_MAN1DIR)" "$(DESTINSTALLVENDORMAN1DIR)" \
+               "$(INST_MAN3DIR)" "$(DESTINSTALLVENDORMAN3DIR)"
 
 };
 
@@ -2144,37 +2185,37 @@ doc_vendor_install :: all
 
     push @m, q{
 doc_perl_install :: all
-       $(NOECHO) $(ECHO) Appending installation info to 
$(DESTINSTALLARCHLIB)/perllocal.pod
-       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       $(NOECHO) $(ECHO) Appending installation info to 
"$(DESTINSTALLARCHLIB)/perllocal.pod"
+       -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)"
        -$(NOECHO) $(DOC_INSTALL) \
                "Module" "$(NAME)" \
-               "installed into" "$(INSTALLPRIVLIB)" \
+               "installed into" $(INSTALLPRIVLIB) \
                LINKTYPE "$(LINKTYPE)" \
                VERSION "$(VERSION)" \
                EXE_FILES "$(EXE_FILES)" \
-               >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+               >> 
"}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{"
 
 doc_site_install :: all
-       $(NOECHO) $(ECHO) Appending installation info to 
$(DESTINSTALLARCHLIB)/perllocal.pod
-       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       $(NOECHO) $(ECHO) Appending installation info to 
"$(DESTINSTALLARCHLIB)/perllocal.pod"
+       -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)"
        -$(NOECHO) $(DOC_INSTALL) \
                "Module" "$(NAME)" \
-               "installed into" "$(INSTALLSITELIB)" \
+               "installed into" $(INSTALLSITELIB) \
                LINKTYPE "$(LINKTYPE)" \
                VERSION "$(VERSION)" \
                EXE_FILES "$(EXE_FILES)" \
-               >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+               >> 
"}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{"
 
 doc_vendor_install :: all
-       $(NOECHO) $(ECHO) Appending installation info to 
$(DESTINSTALLARCHLIB)/perllocal.pod
-       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       $(NOECHO) $(ECHO) Appending installation info to 
"$(DESTINSTALLARCHLIB)/perllocal.pod"
+       -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)"
        -$(NOECHO) $(DOC_INSTALL) \
                "Module" "$(NAME)" \
-               "installed into" "$(INSTALLVENDORLIB)" \
+               "installed into" $(INSTALLVENDORLIB) \
                LINKTYPE "$(LINKTYPE)" \
                VERSION "$(VERSION)" \
                EXE_FILES "$(EXE_FILES)" \
-               >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+               >> 
"}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{"
 
 } unless $self->{NO_PERLLOCAL};
 
@@ -2183,13 +2224,13 @@ uninstall :: uninstall_from_$(INSTALLDIRS)dirs
        $(NOECHO) $(NOOP)
 
 uninstall_from_perldirs ::
-       $(NOECHO) $(UNINSTALL) 
}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
+       $(NOECHO) $(UNINSTALL) 
"}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{"
 
 uninstall_from_sitedirs ::
-       $(NOECHO) $(UNINSTALL) 
}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
+       $(NOECHO) $(UNINSTALL) 
"}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{"
 
 uninstall_from_vendordirs ::
-       $(NOECHO) $(UNINSTALL) 
}.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{
+       $(NOECHO) $(UNINSTALL) 
"}.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{"
 };
 
     join("",@m);
@@ -2343,7 +2384,7 @@ $(MAP_TARGET) :: static $(MAKE_APERL_FILE)
 $(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
        $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
        $(NOECHO) $(PERLRUNINST) \
-               Makefile.PL DIR=}, $dir, q{ \
+               Makefile.PL DIR="}, $dir, q{" \
                MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
                MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=};
 
@@ -2521,20 +2562,20 @@ $tmp/perlmain.c: $makefilename}, q{
                -e "writemain(grep s#.*/auto/##s, split(q| |, 
q|$(MAP_STATIC)|))" > $@t && $(MV) $@t $@
 
 };
-    push @m, "\t", q{$(NOECHO) $(PERL) $(INSTALLSCRIPT)/fixpmain
+    push @m, "\t", q{$(NOECHO) $(PERL) "$(INSTALLSCRIPT)/fixpmain"
 } if (defined (&Dos::UseLFN) && Dos::UseLFN()==0);
 
 
     push @m, q{
 doc_inst_perl :
-       $(NOECHO) $(ECHO) Appending installation info to 
$(DESTINSTALLARCHLIB)/perllocal.pod
-       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       $(NOECHO) $(ECHO) Appending installation info to 
"$(DESTINSTALLARCHLIB)/perllocal.pod"
+       -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)"
        -$(NOECHO) $(DOC_INSTALL) \
                "Perl binary" "$(MAP_TARGET)" \
                MAP_STATIC "$(MAP_STATIC)" \
                MAP_EXTRA "`cat $(INST_ARCHAUTODIR)/extralibs.all`" \
                MAP_LIBPERL "$(MAP_LIBPERL)" \
-               >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+               >> 
"}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{"
 
 };
 
@@ -2542,7 +2583,7 @@ doc_inst_perl :
 inst_perl : pure_inst_perl doc_inst_perl
 
 pure_inst_perl : $(MAP_TARGET)
-       }.$self->{CP}.q{ $(MAP_TARGET) 
}.$self->catfile('$(DESTINSTALLBIN)','$(MAP_TARGET)').q{
+       }.$self->{CP}.q{ $(MAP_TARGET) 
"}.$self->catfile('$(DESTINSTALLBIN)','$(MAP_TARGET)').q{"
 
 clean :: map_clean
 
@@ -2651,17 +2692,24 @@ sub parse_abstract {
     local $/ = "\n";
     open(my $fh, '<', $parsefile) or die "Could not open '$parsefile': $!";
     my $inpod = 0;
+    my $pod_encoding;
     my $package = $self->{DISTNAME};
     $package =~ s/-/::/g;
     while (<$fh>) {
         $inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;
         next if !$inpod;
         chop;
+
+        if ( /^=encoding\s*(.*)$/i ) {
+            $pod_encoding = $1;
+        }
+
         if ( /^($package(?:\.pm)? \s+ -+ \s+)(.*)/x ) {
           $result = $2;
           next;
         }
         next unless $result;
+
         if ( $result && ( /^\s*$/ || /^\=/ ) ) {
           last;
         }
@@ -2669,6 +2717,11 @@ sub parse_abstract {
     }
     close $fh;
 
+    if ( $pod_encoding and !( $] < 5.008 or !$Config{useperlio} ) ) {
+        require Encode;
+        $result = Encode::decode($pod_encoding, $result);
+    }
+
     return $result;
 }
 
@@ -2721,43 +2774,32 @@ sub parse_version {
 
     if ( defined $result && $result !~ /^v?[\d_\.]+$/ ) {
       require version;
-      my $normal = eval { version->parse( $result ) };
+      my $normal = eval { version->new( $result ) };
       $result = $normal if defined $normal;
     }
     $result = "undef" unless defined $result;
     return $result;
 }
 
-sub get_version
-{
-       my ($self, $parsefile, $sigil, $name) = @_;
-       my $eval = qq{
-               package ExtUtils::MakeMaker::_version;
-               no strict;
-               BEGIN { eval {
-                       # Ensure any version() routine which might have leaked
-                       # into this package has been deleted.  Interferes with
-                       # version->import()
-                       undef *version;
-                       require version;
-                       "version"->import;
-               } }
-
-               local $sigil$name;
-               \$$name=undef;
-               do {
-                       $_
-               };
-               \$$name;
-       };
-  $eval = $1 if $eval =~ m{^(.+)}s;
-       local $^W = 0;
-       my $result = eval($eval);  ## no critic
-       warn "Could not eval '$eval' in $parsefile: $@" if $@;
-       $result;
+sub get_version {
+    my ($self, $parsefile, $sigil, $name) = @_;
+    my $line = $_; # from the while() loop in parse_version
+    {
+        package ExtUtils::MakeMaker::_version;
+        undef *version; # in case of unexpected version() sub
+        eval {
+            require version;
+            version::->import;
+        };
+        no strict;
+        local *{$name};
+        local $^W = 0;
+        $line = $1 if $line =~ m{^(.+)}s;
+        eval($line); ## no critic
+        return ${$name};
+    }
 }
 
-
 =item pasthru (o)
 
 Defines the string that is passed to recursive make calls in
@@ -2821,7 +2863,7 @@ sub perldepend {
 # Check for unpropogated config.sh changes. Should never happen.
 # We do NOT just update config.h because that is not sufficient.
 # An out of date config.h is not fatal but complains loudly!
-$(PERL_INC)/config.h: $(PERL_SRC)/config.sh
+$(PERL_INCDEP)/config.h: $(PERL_SRC)/config.sh
        -$(NOECHO) $(ECHO) "Warning: $(PERL_INC)/config.h out of date with 
$(PERL_SRC)/config.sh"; $(FALSE)
 
 $(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
@@ -2837,7 +2879,7 @@ MAKE_FRAG
         push @m, $self->_perl_header_files_fragment("/"); # Directory 
separator between $(PERL_INC)/header.h
     }
 
-    push @m, join(" ", values %{$self->{XS}})." : \$(XSUBPPDEPS)\n"  if 
%{$self->{XS}};
+    push @m, join(" ", sort values %{$self->{XS}})." : \$(XSUBPPDEPS)\n"  if 
%{$self->{XS}};
 
     return join "\n", @m;
 }
@@ -2960,11 +3002,11 @@ PPD_PERLVERS
     foreach my $prereq (sort keys %prereqs) {
         my $name = $prereq;
         $name .= '::' unless $name =~ /::/;
-        my $version = $prereqs{$prereq}+0;  # force numification
+        my $version = $prereqs{$prereq};
 
         my %attrs = ( NAME => $name );
         $attrs{VERSION} = $version if $version;
-        my $attrs = join " ", map { qq[$_="$attrs{$_}"] } keys %attrs;
+        my $attrs = join " ", map { qq[$_="$attrs{$_}"] } sort keys %attrs;
         $ppd_xml .= qq(        <REQUIRE $attrs />\n);
     }
 
@@ -3198,6 +3240,17 @@ sub oneliner {
 
 =item quote_literal
 
+Quotes macro literal value suitable for being used on a command line so
+that when expanded by make, will be received by command as given to
+this method:
+
+  my $quoted = $mm->quote_literal(q{it isn't});
+  # returns:
+  #   'it isn'\''t'
+  print MAKEFILE "target:\n\techo $quoted\n";
+  # when run "make target", will output:
+  #   it isn't
+
 =cut
 
 sub quote_literal {
@@ -3287,7 +3340,7 @@ END
     # If this extension has its own library (eg SDBM_File)
     # then copy that to $(INST_STATIC) and add $(OBJECT) into it.
     push(@m, <<'MAKE_FRAG') if $self->{MYEXTLIB};
-       $(CP) $(MYEXTLIB) $@
+       $(CP) $(MYEXTLIB) "$@"
 MAKE_FRAG
 
     my $ar;
@@ -3301,12 +3354,12 @@ MAKE_FRAG
     push @m, sprintf <<'MAKE_FRAG', $ar;
        $(%s) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@
        $(CHMOD) $(PERM_RWX) $@
-       $(NOECHO) $(ECHO) "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.ld
+       $(NOECHO) $(ECHO) "$(EXTRALIBS)" > "$(INST_ARCHAUTODIR)/extralibs.ld"
 MAKE_FRAG
 
     # Old mechanism - still available:
     push @m, <<'MAKE_FRAG' if $self->{PERL_SRC} && $self->{EXTRALIBS};
-       $(NOECHO) $(ECHO) "$(EXTRALIBS)" >> $(PERL_SRC)/ext.libs
+       $(NOECHO) $(ECHO) "$(EXTRALIBS)" >> "$(PERL_SRC)/ext.libs"
 MAKE_FRAG
 
     join('', @m);
@@ -3420,6 +3473,8 @@ sub test {
     elsif (!$tests && -d 't') {
         $tests = $self->find_tests;
     }
+    # have to do this because nmake is broken
+    $tests =~ s!/!\\!g if $self->is_make_type('nmake');
     # note: 'test.pl' name is also hardcoded in init_dirscan()
     my(@m);
     push(@m,"
@@ -3545,7 +3600,8 @@ sub tool_xsubpp {
         }
     }
     push(@tmdeps, "typemap") if -f "typemap";
-    my(@tmargs) = map("-typemap $_", @tmdeps);
+    my @tmargs = map(qq{-typemap "$_"}, @tmdeps);
+    $_ = $self->quote_dep($_) for @tmdeps;
     if( exists $self->{XSOPT} ){
         unshift( @tmargs, $self->{XSOPT} );
     }
@@ -3561,17 +3617,19 @@ sub tool_xsubpp {
 
 
     $self->{XSPROTOARG} = "" unless defined $self->{XSPROTOARG};
+    my $xsdirdep = $self->quote_dep($xsdir);
+    # -dep for use when dependency not command
 
     return qq{
 XSUBPPDIR = $xsdir
-XSUBPP = \$(XSUBPPDIR)\$(DFSEP)xsubpp
+XSUBPP = "\$(XSUBPPDIR)\$(DFSEP)xsubpp"
 XSUBPPRUN = \$(PERLRUN) \$(XSUBPP)
 XSPROTOARG = $self->{XSPROTOARG}
-XSUBPPDEPS = @tmdeps \$(XSUBPP)
+XSUBPPDEPS = @tmdeps $xsdirdep\$(DFSEP)xsubpp
 XSUBPPARGS = @tmargs
 XSUBPP_EXTRA_ARGS =
 };
-};
+}
 
 
 =item all_target
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
index 331cbcd..13900b2 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
@@ -15,7 +15,7 @@ BEGIN {
 
 use File::Basename;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
@@ -1893,6 +1893,7 @@ sub init_linker {
           $ENV{$shr} ? $ENV{$shr} : "Sys\$Share:$shr.$Config{'dlext'}";
     }
 
+    $self->{PERL_ARCHIVEDEP} ||= '';
     $self->{PERL_ARCHIVE_AFTER} ||= '';
 }
 
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
index 648ba54..0d0dab5 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
@@ -1,7 +1,7 @@
 package ExtUtils::MM_VOS;
 
 use strict;
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
index e056d2e..1f6d833 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
@@ -27,7 +27,7 @@ use ExtUtils::MakeMaker qw( neatvalue );
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 $ENV{EMXSHELL} = 'sh'; # to run `commands`
 
@@ -128,7 +128,7 @@ sub maybe_command {
 
 =item B<init_DIRFILESEP>
 
-Using \ for Windows.
+Using \ for Windows, except for "gmake" where it is /.
 
 =cut
 
@@ -137,7 +137,8 @@ sub init_DIRFILESEP {
 
     # The ^ makes sure its not interpreted as an escape in nmake
     $self->{DIRFILESEP} = $self->is_make_type('nmake') ? '^\\' :
-                          $self->is_make_type('dmake') ? '\\\\'
+                          $self->is_make_type('dmake') ? '\\\\' :
+                          $self->is_make_type('gmake') ? '/'
                                                        : '\\';
 }
 
@@ -154,7 +155,7 @@ sub init_tools {
     $self->{DEV_NULL} ||= '> NUL';
 
     $self->{FIXIN}    ||= $self->{PERL_CORE} ?
-      "\$(PERLRUN) $self->{PERL_SRC}/win32/bin/pl2bat.pl" :
+      "\$(PERLRUN) $self->{PERL_SRC}\\win32\\bin\\pl2bat.pl" :
       'pl2bat.bat';
 
     $self->SUPER::init_tools;
@@ -346,27 +347,27 @@ sub dynamic_lib {
 OTHERLDFLAGS = '.$otherldflags.'
 INST_DYNAMIC_DEP = '.$inst_dynamic_dep.'
 
-$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) 
$(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVE) 
$(INST_DYNAMIC_DEP)
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) 
$(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) 
$(INST_DYNAMIC_DEP)
 ');
     if ($GCC) {
       push(@m,
        q{      }.$DLLTOOL.q{ --def $(EXPORT_LIST) --output-exp dll.exp
-       $(LD) -o $@ -Wl,--base-file -Wl,dll.base $(LDDLFLAGS) }.$ldfrom.q{ 
$(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) dll.exp
+       $(LD) -o $@ -Wl,--base-file -Wl,dll.base $(LDDLFLAGS) }.$ldfrom.q{ 
$(OTHERLDFLAGS) $(MYEXTLIB) "$(PERL_ARCHIVE)" $(LDLOADLIBS) dll.exp
        }.$DLLTOOL.q{ --def $(EXPORT_LIST) --base-file dll.base --output-exp 
dll.exp
-       $(LD) -o $@ $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) $(MYEXTLIB) 
$(PERL_ARCHIVE) $(LDLOADLIBS) dll.exp });
+       $(LD) -o $@ $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) $(MYEXTLIB) 
"$(PERL_ARCHIVE)" $(LDLOADLIBS) dll.exp });
     } elsif ($BORLAND) {
       push(@m,
        q{      $(LD) $(LDDLFLAGS) $(OTHERLDFLAGS) }.$ldfrom.q{,$@,,}
        .($self->is_make_type('dmake')
-                ? q{$(PERL_ARCHIVE:s,/,\,) $(LDLOADLIBS:s,/,\,) }
+                ? q{"$(PERL_ARCHIVE:s,/,\,)" $(LDLOADLIBS:s,/,\,) }
                 .q{$(MYEXTLIB:s,/,\,),$(EXPORT_LIST:s,/,\,)}
-               : q{$(subst /,\,$(PERL_ARCHIVE)) $(subst /,\,$(LDLOADLIBS)) }
+               : q{"$(subst /,\,$(PERL_ARCHIVE))" $(subst /,\,$(LDLOADLIBS)) }
                 .q{$(subst /,\,$(MYEXTLIB)),$(subst /,\,$(EXPORT_LIST))})
        .q{,$(RESFILES)});
     } else {   # VC
       push(@m,
        q{      $(LD) -out:$@ $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) }
-      .q{$(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) -def:$(EXPORT_LIST)});
+      .q{$(MYEXTLIB) "$(PERL_ARCHIVE)" $(LDLOADLIBS) -def:$(EXPORT_LIST)});
 
       # Embed the manifest file if it exists
       push(@m, q{
@@ -401,6 +402,7 @@ sub init_linker {
     my $self = shift;
 
     $self->{PERL_ARCHIVE}       = "\$(PERL_INC)\\$Config{libperl}";
+    $self->{PERL_ARCHIVEDEP}    = "\$(PERL_INCDEP)\\$Config{libperl}";
     $self->{PERL_ARCHIVE_AFTER} = '';
     $self->{EXPORT_LIST}        = '$(BASEEXT).def';
 }
@@ -421,6 +423,29 @@ sub perl_script {
     return;
 }
 
+sub can_dep_space {
+    my $self = shift;
+    1; # with Win32::GetShortPathName
+}
+
+=item quote_dep
+
+=cut
+
+sub quote_dep {
+    my ($self, $arg) = @_;
+    if ($arg =~ / / and not $self->is_make_type('gmake')) {
+        require Win32;
+        $arg = Win32::GetShortPathName($arg);
+        die <<EOF if not defined $arg or $arg =~ / /;
+Tried to use make dependency with space for non-GNU make:
+  '$arg'
+Fallback to short pathname failed.
+EOF
+        return $arg;
+    }
+    return $self->SUPER::quote_dep($arg);
+}
 
 =item xs_o
 
@@ -622,16 +647,7 @@ PERLTYPE = $self->{PERLTYPE}
 
 }
 
-sub is_make_type {
-    my($self, $type) = @_;
-    return !! ($self->make =~ /\b$type(?:\.exe)?$/);
-}
-
 1;
 __END__
 
 =back
-
-=cut
-
-
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
index 9c79580..8f0ceb9 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_Win95;
 
 use strict;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 require ExtUtils::MM_Win32;
 our @ISA = qw(ExtUtils::MM_Win32);
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
index 37f0e9e..f946e83 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
@@ -3,7 +3,7 @@ package ExtUtils::MY;
 use strict;
 require ExtUtils::MM;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 our @ISA = qw(ExtUtils::MM);
 
 {
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
index d2fabf6..028925b 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
@@ -7,8 +7,12 @@ BEGIN {require 5.006;}
 
 require Exporter;
 use ExtUtils::MakeMaker::Config;
+use ExtUtils::MakeMaker::version; # ensure we always have or fake version.pm
 use Carp;
 use File::Path;
+my $CAN_DECODE = eval { require ExtUtils::MakeMaker::Locale; }; # 2 birds, 1 
stone
+eval { ExtUtils::MakeMaker::Locale::reinit('UTF-8') }
+  if $CAN_DECODE and $ExtUtils::MakeMaker::Locale::ENCODING_LOCALE eq 
'US-ASCII';
 
 our $Verbose = 0;       # exported
 our @Parent;            # needs to be localized
@@ -17,8 +21,10 @@ our @MM_Sections;
 our @Overridable;
 my @Prepend_parent;
 my %Recognized_Att_Keys;
+our %macro_fsentity; # whether a macro is a filesystem name
+our %macro_dep; # whether a macro is a dependency
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 $VERSION = eval $VERSION;  ## no critic [BuiltinFunctions::ProhibitStringyEval]
 
 # Emulate something resembling CVS $Revision$
@@ -28,7 +34,7 @@ $Revision = int $Revision * 10000;
 our $Filename = __FILE__;   # referenced outside MakeMaker
 
 our @ISA = qw(Exporter);
-our @EXPORT    = qw(&WriteMakefile &writeMakefile $Verbose &prompt);
+our @EXPORT    = qw(&WriteMakefile $Verbose &prompt);
 our @EXPORT_OK = qw($VERSION &neatvalue &mkbootstrap &mksymlists
                     &WriteEmptyMakefile);
 
@@ -36,6 +42,7 @@ our @EXPORT_OK = qw($VERSION &neatvalue &mkbootstrap 
&mksymlists
 # purged.
 my $Is_VMS     = $^O eq 'VMS';
 my $Is_Win32   = $^O eq 'MSWin32';
+my $UNDER_CORE = $ENV{PERL_CORE};
 
 full_setup();
 
@@ -250,14 +257,12 @@ my $PACKNAME = 'PACK000';
 sub full_setup {
     $Verbose ||= 0;
 
-    my @attrib_help = qw/
+    my @dep_macros = qw/
+    PERL_INCDEP        PERL_ARCHLIBDEP     PERL_ARCHIVEDEP
+    /;
 
-    AUTHOR ABSTRACT ABSTRACT_FROM BINARY_LOCATION
-    C CAPI CCFLAGS CONFIG CONFIGURE DEFINE DIR DISTNAME DISTVNAME
-    DL_FUNCS DL_VARS
-    EXCLUDE_EXT EXE_FILES FIRST_MAKEFILE
-    FULLPERL FULLPERLRUN FULLPERLRUNINST
-    FUNCLIST H IMPORTS
+    my @fs_macros = qw/
+    FULLPERL XSUBPPDIR
 
     INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB INST_MAN1DIR INST_MAN3DIR
     INSTALLDIRS
@@ -273,22 +278,41 @@ sub full_setup {
     PERL_LIB        PERL_ARCHLIB
     SITELIBEXP      SITEARCHEXP
 
-    INC INCLUDE_EXT LDFROM LIB LIBPERL_A LIBS LICENSE
-    LINKTYPE MAKE MAKEAPERL MAKEFILE MAKEFILE_OLD MAN1PODS MAN3PODS MAP_TARGET
+    MAKE LIBPERL_A LIB PERL_SRC PERL_INC
+    PPM_INSTALL_EXEC PPM_UNINSTALL_EXEC
+    PPM_INSTALL_SCRIPT PPM_UNINSTALL_SCRIPT
+    /;
+
+    my @attrib_help = qw/
+
+    AUTHOR ABSTRACT ABSTRACT_FROM BINARY_LOCATION
+    C CAPI CCFLAGS CONFIG CONFIGURE DEFINE DIR DISTNAME DISTVNAME
+    DL_FUNCS DL_VARS
+    EXCLUDE_EXT EXE_FILES FIRST_MAKEFILE
+    FULLPERLRUN FULLPERLRUNINST
+    FUNCLIST H IMPORTS
+
+    INC INCLUDE_EXT LDFROM LIBS LICENSE
+    LINKTYPE MAKEAPERL MAKEFILE MAKEFILE_OLD MAN1PODS MAN3PODS MAP_TARGET
     META_ADD META_MERGE MIN_PERL_VERSION BUILD_REQUIRES CONFIGURE_REQUIRES
     MYEXTLIB NAME NEEDS_LINKING NOECHO NO_META NO_MYMETA NO_PACKLIST 
NO_PERLLOCAL
     NORECURS NO_VC OBJECT OPTIMIZE PERL_MALLOC_OK PERL PERLMAINCC PERLRUN
     PERLRUNINST PERL_CORE
-    PERL_SRC PERM_DIR PERM_RW PERM_RWX MAGICXS
-    PL_FILES PM PM_FILTER PMLIBDIRS PMLIBPARENTDIRS POLLUTE PPM_INSTALL_EXEC 
PPM_UNINSTALL_EXEC
-    PPM_INSTALL_SCRIPT PPM_UNINSTALL_SCRIPT PREREQ_FATAL PREREQ_PM 
PREREQ_PRINT PRINT_PREREQ
+    PERM_DIR PERM_RW PERM_RWX MAGICXS
+    PL_FILES PM PM_FILTER PMLIBDIRS PMLIBPARENTDIRS POLLUTE
+    PREREQ_FATAL PREREQ_PM PREREQ_PRINT PRINT_PREREQ
     SIGN SKIP TEST_REQUIRES TYPEMAPS UNINST VERSION VERSION_FROM XS XSOPT 
XSPROTOARG
     XS_VERSION clean depend dist dynamic_lib linkext macro realclean
     tool_autosplit
 
+    MAN1EXT MAN3EXT
+
     MACPERL_SRC MACPERL_LIB MACLIBS_68K MACLIBS_PPC MACLIBS_SC MACLIBS_MRC
     MACLIBS_ALL_68K MACLIBS_ALL_PPC MACLIBS_SHARED
         /;
+    push @attrib_help, @fs_macros;
+    @macro_fsentity{@fs_macros, @dep_macros} = (1) x (@fs_macros+@dep_macros);
+    @macro_dep{@dep_macros} = (1) x @dep_macros;
 
     # IMPORTS is used under OS/2 and Win32
 
@@ -381,26 +405,6 @@ sub full_setup {
     );
 }
 
-sub writeMakefile {
-    die <<END;
-
-The extension you are trying to build apparently is rather old and
-most probably outdated. We detect that from the fact, that a
-subroutine "writeMakefile" is called, and this subroutine is not
-supported anymore since about October 1994.
-
-Please contact the author or look into CPAN (details about CPAN can be
-found in the FAQ and at http:/www.perl.com) for a more recent version
-of the extension. If you're really desperate, you can try to change
-the subroutine name from writeMakefile to WriteMakefile and rerun
-'perl Makefile.PL', but you're most probably left alone, when you do
-so.
-
-The MakeMaker team
-
-END
-}
-
 sub new {
     my($class,$self) = @_;
     my($key);
@@ -449,7 +453,7 @@ sub new {
             # simulate "use warnings FATAL => 'all'" for vintage perls
             die @_;
         };
-        version->parse( $self->{MIN_PERL_VERSION} )
+        version->new( $self->{MIN_PERL_VERSION} )
       };
       $self->{MIN_PERL_VERSION} = $normal if defined $normal && !$@;
     }
@@ -502,7 +506,7 @@ END
           if ( defined $required_version && $required_version =~ /^v?[\d_\.]+$/
                || $required_version !~ /^v?[\d_\.]+$/ ) {
             require version;
-            my $normal = eval { version->parse( $required_version ) };
+            my $normal = eval { version->new( $required_version ) };
             $required_version = $normal if defined $normal;
           }
           $installed_file = $prereq;
@@ -585,10 +589,7 @@ END
 
             $self->{$key} = $self->{PARENT}{$key};
 
-            unless ($Is_VMS && $key =~ /PERL$/) {
-                $self->{$key} = $self->catdir("..",$self->{$key})
-                  unless $self->file_name_is_absolute($self->{$key});
-            } else {
+            if ($Is_VMS && $key =~ /PERL$/) {
                 # PERL or FULLPERL will be a command verb or even a
                 # command with an argument instead of a full file
                 # specification under VMS.  So, don't turn the command
@@ -598,6 +599,14 @@ END
                 $cmd[1] = $self->catfile('[-]',$cmd[1])
                   unless (@cmd < 2) || $self->file_name_is_absolute($cmd[1]);
                 $self->{$key} = join(' ', @cmd);
+            } else {
+                my $value = $self->{$key};
+                # not going to test in FS so only stripping start
+                $value =~ s/^"// if $key =~ /PERL$/;
+                $value = $self->catdir("..", $value)
+                  unless $self->file_name_is_absolute($value);
+                $value = qq{"$value} if $key =~ /PERL$/;
+                $self->{$key} = $value;
             }
         }
         if ($self->{PARENT}) {
@@ -821,7 +830,7 @@ END
 
     foreach my $key (sort keys %$att){
         next if $key eq 'ARGS';
-        my ($v) = neatvalue($att->{$key});
+        my $v;
         if ($key eq 'PREREQ_PM') {
             # CPAN.pm takes prereqs from this field in 'Makefile'
             # and does not know about BUILD_REQUIRES
@@ -938,6 +947,7 @@ sub check_manifest {
 
 sub parse_args{
     my($self, @args) = @_;
+    @args = map { Encode::decode(locale => $_) } @args if $CAN_DECODE;
     foreach (@args) {
         unless (m/(.*?)=(.*)/) {
             ++$Verbose if m/^verb/;
@@ -1162,8 +1172,13 @@ sub flush {
     unlink($finalname, "MakeMaker.tmp", $Is_VMS ? 'Descrip.MMS' : ());
     open(my $fh,">", "MakeMaker.tmp")
         or die "Unable to open MakeMaker.tmp: $!";
+    binmode $fh, ':encoding(locale)' if $CAN_DECODE;
 
     for my $chunk (@{$self->{RESULT}}) {
+        my $to_write = "$chunk\n";
+        if (!$CAN_DECODE && $] > 5.008) {
+            utf8::encode $to_write;
+        }
         print $fh "$chunk\n"
             or die "Can't write to MakeMaker.tmp: $!";
     }
@@ -1242,28 +1257,62 @@ sub neatvalue {
         push @m, "]";
         return join "", @m;
     }
-    return "$v" unless $t eq 'HASH';
+    return $v unless $t eq 'HASH';
     my(@m, $key, $val);
-    while (($key,$val) = each %$v){
+    for my $key (sort keys %$v) {
         last unless defined $key; # cautious programming in case (undef,undef) 
is true
-        push(@m,"$key=>".neatvalue($val)) ;
+        push @m,"$key=>".neatvalue($v->{$key});
     }
     return "{ ".join(', ',@m)." }";
 }
 
+sub _find_magic_vstring {
+    my $value = shift;
+    return $value if $UNDER_CORE;
+    my $tvalue = '';
+    require B;
+    my $sv = B::svref_2object(\$value);
+    my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef;
+    while ( $magic ) {
+        if ( $magic->TYPE eq 'V' ) {
+            $tvalue = $magic->PTR;
+            $tvalue =~ s/^v?(.+)$/v$1/;
+            last;
+        }
+        else {
+            $magic = $magic->MOREMAGIC;
+        }
+    }
+    return $tvalue;
+}
+
+
 # Look for weird version numbers, warn about them and set them to 0
 # before CPAN::Meta chokes.
 sub clean_versions {
     my($self, $key) = @_;
-
     my $reqs = $self->{$key};
     for my $module (keys %$reqs) {
-        my $version = $reqs->{$module};
-
-        if( !defined $version or $version !~ /^v?[\d_\.]+$/ ) {
-            carp "Unparsable version '$version' for prerequisite $module";
+        my $v = $reqs->{$module};
+        my $printable = _find_magic_vstring($v);
+        $v = $printable if length $printable;
+        my $version = eval {
+            local $SIG{__WARN__} = sub {
+              # simulate "use warnings FATAL => 'all'" for vintage perls
+              die @_;
+            };
+            version->new($v)->stringify;
+        };
+        if( $@ || $reqs->{$module} eq '' ) {
+            if ( $] < 5.008 && $v !~ /^v?[\d_\.]+$/ ) {
+               $v = sprintf "v%vd", $v unless $v eq '';
+            }
+            carp "Unparsable version '$v' for prerequisite $module";
             $reqs->{$module} = 0;
         }
+        else {
+            $reqs->{$module} = $version;
+        }
     }
 }
 
@@ -1318,15 +1367,19 @@ won't have to face the possibly bewildering errors 
resulting from
 using the wrong one.
 
 On POSIX systems, that program will likely be GNU Make; on Microsoft
-Windows, it will be either Microsoft NMake or DMake. Note that this
-module does not support generating Makefiles for GNU Make on Windows.
+Windows, it will be either Microsoft NMake, DMake or GNU Make.
 See the section on the L</"MAKE"> parameter for details.
 
-MakeMaker is object oriented. Each directory below the current
+ExtUtils::MakeMaker (EUMM) is object oriented. Each directory below the current
 directory that contains a Makefile.PL is treated as a separate
 object. This makes it possible to write an unlimited number of
 Makefiles with a single invocation of WriteMakefile().
 
+All inputs to WriteMakefile are Unicode characters, not just octets. EUMM
+seeks to handle all of these correctly. It is currently still not possible
+to portably use Unicode characters in module names, because this requires
+Perl to handle Unicode filenames, which is not yet the case on Windows.
+
 =head2 How To Write A Makefile.PL
 
 See L<ExtUtils::MakeMaker::Tutorial>.
@@ -1375,6 +1428,11 @@ It is possible to use globbing with this mechanism.
 
   make test TEST_FILES='t/foobar.t t/dagobah*.t'
 
+Windows users who are using C<nmake> should note that due to a bug in C<nmake>,
+when specifying C<TEST_FILES> you must use back-slashes instead of 
forward-slashes.
+
+  nmake test TEST_FILES='t\foobar.t t\dagobah*.t'
+
 =head2 make testdb
 
 A useful variation of the above is the target C<testdb>. It runs the
@@ -2195,6 +2253,20 @@ own.  META_MERGE will merge its value with the default.
 Unless you want to override the defaults, prefer META_MERGE so as to
 get the advantage of any future defaults.
 
+Where prereqs are concerned, if META_MERGE is used, prerequisites are merged
+with their counterpart C<WriteMakefile()> argument
+(PREREQ_PM is merged into {prereqs}{runtime}{requires},
+BUILD_REQUIRES into C<{prereqs}{build}{requires}>,
+CONFIGURE_REQUIRES into C<{prereqs}{configure}{requires}>,
+and TEST_REQUIRES into C<{prereqs}{test}{requires})>.
+When prereqs are specified with META_ADD, the only prerequisites added to the
+file come from the metadata, not C<WriteMakefile()> arguments.
+
+Note that these configuration options are only used for generating F<META.yml>
+and F<META.json> -- they are NOT used for F<MYMETA.yml> and F<MYMETA.json>.
+Therefore data in these fields should NOT be used for dynamic (user-side)
+configuration.
+
 By default CPAN Meta specification C<1.4> is used. In order to use
 CPAN Meta specification C<2.0>, indicate with C<meta-spec> the version
 you want to use.
@@ -2232,9 +2304,9 @@ name of the library (see SDBM_File)
 
 The package representing the distribution. For example, C<Test::More>
 or C<ExtUtils::MakeMaker>. It will be used to derive information about
-the distribution such as the L<DISTNAME>, installation locations
+the distribution such as the L</DISTNAME>, installation locations
 within the Perl library and where XS files will be looked for by
-default (see L<XS>).
+default (see L</XS>).
 
 C<NAME> I<must> be a valid Perl package name and it I<must> have an
 associated C<.pm> file. For example, C<Foo::Bar> is a valid C<NAME>
@@ -3092,6 +3164,12 @@ If no $default is provided an empty string will be used 
instead.
 
 =back
 
+=head2 Supported versions of Perl
+
+Please note that while this module works on Perl 5.6, it is no longer
+being routinely tested on 5.6 - the earliest Perl version being routinely
+tested, and expressly supported, is 5.8.1. However, patches to repair
+any breakage on 5.6 are still being accepted.
 
 =head1 ENVIRONMENT
 
@@ -3130,6 +3208,13 @@ help you setup your distribution.
 
 L<CPAN::Meta> and L<CPAN::Meta::Spec> explain CPAN Meta files in detail.
 
+L<File::ShareDir::Install> makes it easy to install static, sometimes
+also referred to as 'shared' files. L<File::ShareDir> helps accessing
+the shared files after installation.
+
+L<Dist::Zilla> makes it easy for the module author to create MakeMaker-based
+distributions with lots of bells and whistles.
+
 =head1 AUTHORS
 
 Andy Dougherty C<dough...@lafayette.edu>, Andreas KE<ouml>nig
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
index 5c703f0..35179c4 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
@@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Config;
 
 use strict;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 use Config ();
 
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod
index e5acb6a..a758a63 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod
@@ -1,6 +1,6 @@
 package ExtUtils::MakeMaker::FAQ;
 
-our $VERSION = '6.98';
+our $VERSION = '7.02';
 
 1;
 __END__
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm 
b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm
new file mode 100644
index 0000000..9e79a7e
--- /dev/null
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm
@@ -0,0 +1,348 @@
+package ExtUtils::MakeMaker::Locale;
+
+use strict;
+our $VERSION = "7.02";
+
+use base 'Exporter';
+our @EXPORT_OK = qw(
+    decode_argv env
+    $ENCODING_LOCALE $ENCODING_LOCALE_FS
+    $ENCODING_CONSOLE_IN $ENCODING_CONSOLE_OUT
+);
+
+use Encode ();
+use Encode::Alias ();
+
+our $ENCODING_LOCALE;
+our $ENCODING_LOCALE_FS;
+our $ENCODING_CONSOLE_IN;
+our $ENCODING_CONSOLE_OUT;
+
+sub DEBUG () { 0 }
+
+sub _init {
+    if ($^O eq "MSWin32") {
+       unless ($ENCODING_LOCALE) {
+           # Try to obtain what the Windows ANSI code page is
+           eval {
+               unless (defined &GetACP) {
+                   require Win32::API;
+                   Win32::API->Import('kernel32', 'int GetACP()');
+               };
+               if (defined &GetACP) {
+                   my $cp = GetACP();
+                   $ENCODING_LOCALE = "cp$cp" if $cp;
+               }
+           };
+       }
+
+       unless ($ENCODING_CONSOLE_IN) {
+           # If we have the Win32::Console module installed we can ask
+           # it for the code set to use
+           eval {
+               require Win32::Console;
+               my $cp = Win32::Console::InputCP();
+               $ENCODING_CONSOLE_IN = "cp$cp" if $cp;
+               $cp = Win32::Console::OutputCP();
+               $ENCODING_CONSOLE_OUT = "cp$cp" if $cp;
+           };
+           # Invoking the 'chcp' program might also work
+           if (!$ENCODING_CONSOLE_IN && (qx(chcp) || '') =~ /^Active code 
page: (\d+)/) {
+               $ENCODING_CONSOLE_IN = "cp$1";
+           }
+       }
+    }
+
+    unless ($ENCODING_LOCALE) {
+       eval {
+           require I18N::Langinfo;
+           $ENCODING_LOCALE = 
I18N::Langinfo::langinfo(I18N::Langinfo::CODESET());
+
+           # Workaround of Encode < v2.25.  The "646" encoding  alias was
+           # introduced in Encode-2.25, but we don't want to require that 
version
+           # quite yet.  Should avoid the CPAN testers failure reported from
+           # openbsd-4.7/perl-5.10.0 combo.
+           $ENCODING_LOCALE = "ascii" if $ENCODING_LOCALE eq "646";
+
+           # https://rt.cpan.org/Ticket/Display.html?id=66373
+           $ENCODING_LOCALE = "hp-roman8" if $^O eq "hpux" && $ENCODING_LOCALE 
eq "roman8";
+       };
+       $ENCODING_LOCALE ||= $ENCODING_CONSOLE_IN;
**** PATCH TRUNCATED AT 2000 LINES -- 1829 NOT SHOWN ****

--
Perl5 Master Repository

Reply via email to