use warnings;
use Getopt::Long;
-use Pod::Usage;
use File::Spec;
+use File::Compare qw( compare );
use File::Copy qw( copy );
use File::Basename qw( dirname );
my $rootdir = dirname($0);
-unshift @INC, File::Spec->catfile($rootdir, 't', 'lib');
+unshift @INC, File::Spec->catdir($rootdir, qw(cpan ExtUtils-MakeMaker t lib));
eval q{ use MakeMaker::Test::Utils qw( which_perl ) };
$@ and die $@;
clean => 0,
);
-GetOptions(\%opt, qw( clean list=s )) or pod2usage(2);
+unless ( GetOptions(\%opt, qw( clean list=s )) ) {
+ require Pod::Usage;
+ Pod::Usage::pod2usage(2);
+}
my $absroot = File::Spec->rel2abs($rootdir);
my @destdirs = readlist($opt{list});
# Change to Devel::PPPort directory, as it needs the stuff
# from the parts/ directory
-chdir File::Spec->catdir($rootdir, 'ext', 'Devel', 'PPPort');
+chdir File::Spec->catdir($rootdir, 'cpan', 'Devel-PPPort');
# Capture and remove temporary files
my @unlink;
# Now install the created ppport.h into extension directories
iterdirs {
my($dir, $fulldir) = @_;
- print "installing ppport.h for $dir\n";
my $dest = File::Spec->catfile($fulldir, 'ppport.h');
- copy('ppport.h', $dest) or die "copying ppport.h to $dest failed: $!\n";
+ if (compare('ppport.h', $dest)) {
+ print "installing ppport.h for $dir\n";
+ copy('ppport.h', $dest) or die "copying ppport.h to $dest failed: $!\n";
+ }
+ else {
+ print "ppport.h in $dir is up-to-date\n";
+ }
};
exit 0;
#----------------------------------------------
sub run
{
- my @args = ("-I" . File::Spec->catdir((File::Spec->updir) x 3, 'lib'), @_);
+ my @args = ("-I" . File::Spec->catdir((File::Spec->updir) x 2, 'lib'), @_);
my $run = $perl =~ m/\s/ ? qq("$perl") : $perl;
for (@args) {
$_ = qq("$_") if $^O eq 'VMS' && /^[^"]/;
B<mkppport> generates a I<ppport.h> file using Devel::PPPort
and distributes it to the various extension directories that
-need it to build.
+need it to build. On certain Win32 builds, this script is not
+used and an alternative mechanism is used to create I<ppport.h>.
=head1 OPTIONS