The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use ExtUtils::MakeMaker;
use Config;
use strict;

my @program = qw(ppm.pl);

WriteMakefile(
    'NAME'          => 'PPM',
    'VERSION_FROM'  => 'bin/ppm.pl', # finds $VERSION
    'ABSTRACT_FROM' => 'bin/ppm.pl',
    'EXE_FILES'     => [ "bin/ppm.pl" ],
    'AUTHOR'        => 'Murray Nesbitt <murray@cpan.org>',
    'PREREQ_PM'     => { 'Archive::Tar'     => 0,
                         'Compress::Zlib'   => 0,
                         'XML::Parser'      => 2.09,
                       },
    'dist'          =>  { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
);

ppm_config();

sub MY::postamble {

my $copy = $^O eq 'MSWin32' ? 'copy ppm.xml blib\lib' : 'cp ppm.xml blib/lib';
my $postamble = '
all ::';

$postamble .= '
	mv blib/script/ppm.pl blib/script/ppm
	mv blib/man1/ppm.pl.1 blib/man1/ppm.1' unless ($^O eq 'MSWin32');

$postamble .= "
	$copy" unless -f "$Config{sitelib}/ppm.xml";

    $postamble;
}

sub ppm_config {
   my $ppm = 'ppm.xml';
   my $copy = $ppm . '.in';
   my $location = ($] < 5.008) ?
       'http://ppm.ActiveState.com/cgibin/PPM/ppmserver.pl?urn:/PPMServer' :
           'http://ppm.ActiveState.com/cgibin/PPM/ppmserver-5.8-windows.pl?urn:/PPMServer';
   my $codebase = ($] < 5.008) ?
       'http://ppm.ActiveState.com/PPMPackages/5.6plus/MSWin32-x86-multi-thread' :
           'http://ppm.activestate.com/PPMPackages/5.8-windows/MSWin32-x86-multi-thread-5.8';
   rename $ppm, $copy unless (-f $copy);
   my %subs = ( '%OSNAME%'    => $Config{osname},
                '%OSVERSION%' => '4,0,0,0',
                '%TEMP%'      => $ENV{TMP} || $ENV{TEMP},
                '%SITELIB%'   => $Config{sitelib},
                '%PERLDIR%'   => $Config{prefix},
                '%LOCATION%'  => $location,
                '%CODEBASE%'  => $codebase,
              );
   open(OLD, $copy) or die "Cannot open $copy: $!";
   open(NEW, ">$ppm") or die "Cannot open $ppm: $!";
   while(<OLD>) {
      foreach my $key (keys %subs) {
         s/$key/$subs{$key}/g;
      }
      print NEW $_;
   }
   close OLD;
   close NEW;
}