%PDF- %PDF-
| Direktori : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/BSON-XS-v0.6.0/inc/ |
| Current File : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/BSON-XS-v0.6.0/inc/MakeMaker.pm |
package inc::MakeMaker;
use Moose;
extends 'Dist::Zilla::Plugin::MakeMaker::Awesome';
Dist::Zilla::Plugin::MakeMaker::Awesome->VERSION("0.35");
override _build_MakeFile_PL_template => sub {
my $self = shift;
my $tmpl = super();
# strip "generated by" boilerplate
$tmpl =~ s/\A.*?^use strict;/use strict;/ms;
my $assert_compiler = << 'HERE';
use lib 'inc';
use BSONConfig;
BSONConfig::check_for_compiler();
HERE
# splice in our stuff after the preamble bits
# TODO - MMA ought to make this easier.
$tmpl =~ m/use warnings;\n\n/g;
$tmpl =
substr( $tmpl, 0, pos($tmpl) ) . $assert_compiler . substr( $tmpl, pos($tmpl) );
# add our custom config
my $mutator = "BSONConfig::configure(\\%WriteMakefileArgs);\n\n";
unless ( $tmpl =~ s{^(WriteMakefile\(%WriteMakefileArgs\))}{$mutator$1}ms ) {
die "Can't fix Makefile.PL:\n $tmpl\n";
}
return $tmpl;
};
override _build_WriteMakefile_args => sub {
my $self = shift;
my $args = super();
return { %{$args}, _mm_args(), };
};
override test => sub {
my $self = shift;
local $ENV{PERL5LIB} = join ':',
grep { defined } @ENV{ 'PERL5LIB', 'DZIL_TEST_INC' };
super();
};
sub _mm_args {
my ( @object, %xs );
for my $xs ( glob "xs/*.xs" ) {
( my $c = $xs ) =~ s/\.xs$/.c/i;
( my $o = $xs ) =~ s/\.xs$/\$(OBJ_EXT)/i;
$xs{$xs} = $c;
push @object, $o;
}
for my $c ( glob("*.c"), glob("bson/*.c") ) {
( my $o = $c ) =~ s/\.c$/\$(OBJ_EXT)/i;
push @object, $o;
}
return (
clean => { FILES => join( q{ }, @object ) },
OBJECT => join( q{ }, @object ),
XS => \%xs,
);
}
sub _MY_package_subs {
my $str = do { local ( @ARGV, $/ ) = "inc/MM_pkg_MY.pl"; <> };
$str =~ s{^use strict;\n^use warnings;\n}{}m;
return $str;
}
1;