The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Module::Build;
use FindBin;
use File::Spec::Functions qw(catfile);

# VOS and VMS can't handle dodgy plugin names
# and VOS can't even unpack them so we create them on the
# fly and only run the tests if they're present
my %dodgy_files = (
    catfile(qw(OddTest Plugin -Dodgy.pm))   => 'OddTest::Plugin::-Dodgy',
    catfile(qw(EditorJunk Plugin #Bar.pm#)) => 'EditorJunk::Bar',
    catfile(qw(EditorJunk Plugin .#Bar.pm)) => 'EditorJunk::Bar',
);

my $core = grep { $_ eq 'PERL_CORE=1' } @ARGV;
my @path = $core ? (File::Spec->updir, File::Spec->updir, File::Spec->updir,
                   "t", "Module_Pluggable") : ($FindBin::Bin,"t");

my @files;
unless (grep { lc($^O) eq $_ } qw(vms vos)) {
    foreach my $test (keys %dodgy_files) {
        my ($file) = (catfile(@path, "lib", $test)=~/^(.*)$/);
        if (open(FH, ">$file")) {
            my $name = $dodgy_files{$test};
            print FH "package $name;\nsub new {}\n1;";
            close(FH);
            push @files, $file;
        }
    }
}

my $build = Module::Build
  ->new( module_name => "Module::Pluggable",
         license     => 'perl',
         requires    => {
             'if'              => '0',
             'File::Basename'  => '0',
             'File::Spec'      => '3.00',
         },
         configure_requires => {
              'Module::Build'  => '0.38', 
         },
         build_requires => {
             'Test::More'      => '0.62',
         },
         create_makefile_pl    => 'small',
         installdirs           => ((($] >= 5.008009) && ($] < 5.011)) ? 'core' : 'site'),
       );

$build->add_to_cleanup(@files);
$build->build_elements([grep { $_ ne 'pod' } @{$build->build_elements}]) if $core;
$build->create_build_script;