/usr/local/CPAN/Net-RawIP/Makefile.PL
use strict;
use warnings;
use Config;
use DynaLoader;
use ExtUtils::MakeMaker;
my %config = (
'linux' => [
'-D_LINUX_ -D_ETH_ -D_IFLIST_',
'RawIP.o util.o eth.o ifaddrlist.o',
'',
q{ $def .= ' -D_GLIBC_' if -e "/usr/include/net/if_packet.h" },
],
'solaris' => [
'-D_SOLARIS_ -D_IFLIST_',
'RawIP.o util.o ifaddrlist.o',
"Sorry,ethernet related methods are not implemented on Solaris\n"
. "Sorry, the rdev function is not imlemented on Solaris\n",
'',
],
'freebsd' => [
'-D_BSDRAW_ -D_ETH_ -D_BPF_ -D_IFLIST_ -DHAVE_SOCKADDR_SA_LEN',
'RawIP.o util.o ifaddrlist.o eth.o rdev.o',
'',
'',
],
'openbsd' => [
'-D_ETH_ -D_BPF_ -D_IFLIST_ -DHAVE_SOCKADDR_SA_LEN',
'RawIP.o util.o ifaddrlist.o eth.o rdev.o',
'',
q{ $def .= ' -D_BSDRAW_' if join('',(split /\./,$Config{osvers})[0,1]) < 21 },
],
'others' => [
'',
'RawIP.o util.o',
"Sorry,ethernet related methods are not implemented on this system\n"
. "Sorry, the ifaddrlist function is not imlemented on this system\n"
. "Sorry, the rdev function is not imlemented on this system\n",
'',
]
);
$config{bsdos } = $config{freebsd};
$config{darwin} = $config{freebsd};
$config{netbsd} = $config{freebsd};
my $name = $Config{osname} || "others";
my $def = $config{$name}->[0] . (defined $ENV{CFLAGS} ? " $ENV{'CFLAGS'}" : "");
my $obj = $config{$name}->[1];
print $config{$name}->[2];
eval $config{$name}->[3];
print "Compiler: $Config{cc}\n";
system "$Config{cc} --version";
locate_pcap();
WriteMakefile(
NAME => 'Net::RawIP',
LICENSE => 'perl',
AUTHOR => 'Sebastien Aperghis-Tramoni <sebastien@aperghis.net>',
VERSION_FROM => 'lib/Net/RawIP.pm',
ABSTRACT_FROM => 'lib/Net/RawIP.pm',
LIBS => ['-lpcap'],
DEFINE => $def,
INC => '',
OBJECT => $obj,
PREREQ_PM => {
# prereqs
'Carp' => 0,
'Class::Struct'=> 0,
'Data::Dumper' => 0,
'English' => 0,
'Getopt::Long' => 0,
'Socket' => 0,
# build/test prereqs
'Test::More' => 0,
},
PL_FILES => {},
);
sub locate_pcap {
# temporary; in next releases, I'll just completely remove the pcap parts
# from Net::RawIP and use Net::pcap instead
my @paths = DynaLoader::dl_findfile("-lpcap");
die <<'REASON' unless @paths;
Could not load the pcap library. Please see the README file on how
to install it. Be sure to also install the C headers (pcap.h).
REASON
}