1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
use Module::Build;
my $class = Module::Build->subclass(
code => q{
use Devel::PPPort;
use ExtUtils::Constant;
sub ACTION_build {
my $self = shift;
$self->depends_on('ppport_h','constants');
$self->SUPER::ACTION_build;
}
sub ACTION_ppport_h {
my $self = shift;
my $filepath = 'lib/Socket/ppport.h';
unless (-e $filepath) {
print "Writing $filepath\n";
Devel::PPPort::WriteFile($filepath);
}
$self->add_to_cleanup($filepath);
}
sub ACTION_constants {
my $self = shift;
my $c_file_path = 'lib/Socket/const-c.inc';
my $xs_file_path = 'lib/Socket/const-xs.inc';
unless (-e $c_file_path && -e $xs_file_path) {
print "Writing $c_file_path and $xs_file_path\n";
ExtUtils::Constant::WriteConstants(
NAME => 'Socket::Multicast6',
NAMES => [qw(
IP_MULTICAST_IF
IP_MULTICAST_TTL
IP_MULTICAST_LOOP
IP_ADD_MEMBERSHIP
IP_DROP_MEMBERSHIP
IP_ADD_SOURCE_MEMBERSHIP
IP_DROP_SOURCE_MEMBERSHIP
IPV6_MULTICAST_IF
IPV6_MULTICAST_HOPS
IPV6_MULTICAST_LOOP
IPV6_JOIN_GROUP
IPV6_LEAVE_GROUP
MCAST_JOIN_GROUP
MCAST_BLOCK_SOURCE
MCAST_UNBLOCK_SOURCE
MCAST_LEAVE_GROUP
MCAST_JOIN_SOURCE_GROUP
MCAST_LEAVE_SOURCE_GROUP
)],
C_FILE => $c_file_path,
XS_FILE => $xs_file_path
);
}
$self->add_to_cleanup($c_file_path);
$self->add_to_cleanup($xs_file_path);
}
},
);
my $build = $class->new
(
module_name => 'Socket::Multicast6',
license => 'perl',
build_requires => {
'Module::Build' => '0.20',
'ExtUtils::Constant' => 0,
'ExtUtils::CBuilder' => 0,
'Devel::PPPort' => 0,
},
requires => {
'perl' => '5.6.1',
'Socket' => 0,
'Test::More' => 0,
'Socket' => 0,
'Socket6' => 0.19,
}
);
$build->create_build_script;
|