The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
use Module::Build 0.26; # for autosplit to work correctly
use File::Spec::Functions qw( catfile );

use lib '.';
use Generate qw( %GENERATE );

my $class = Module::Build->subclass
  (
   class => 'CMM::AutoSplit',
   code  => q{
              sub ACTION_code {
                my ($self) = @_;
                # All installable stuff gets created in blib/ .
                # Create blib/arch to keep blib.pm happy
                my $blib = $self->blib;
                $self->add_to_cleanup($blib);
                File::Path::mkpath( File::Spec->catdir($blib, 'arch') );

                foreach my $element (@{$self->build_elements}) {
                  my $method = "process_${element}_files";
                  $self->$method();
                }
                if ( my $autosplit = $self->autosplit ) {
                  if ( ref $autosplit eq 'ARRAY' ) {
                    $self->autosplit_file($_, $blib)
                      for @$autosplit;
                  } else {
                    $self->autosplit_file($autosplit, $blib);
                  }
                }
              }
            },
           );

my $build = $class->new(
                         module_name   => 'Class::MethodMaker',
                         dist_name     => 'Class-MethodMaker',
                         license       => 'perl',
                         dist_version  => '2.10',
                         sign          => 1,
                         dist_author   => 'Martyn J. Pearce <fluffy@cpan.org>',
                         dist_abstract => 'create generic class accessor methods',
                         PL_files      => +{ 'generate.PL', [ values %GENERATE ] },
                         autosplit     => [ values %GENERATE,
                                            catfile(qw(lib Class MethodMaker Engine.pm )) ],
                         xs_files      => +{ 'MethodMaker.xs' => 'lib/Class/MethodMaker.xs' },
                       );

$build->create_build_script;