use ExtUtils::MakeMaker; require 5; use Config; use Getopt::Long; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. %MakeParams = InitMakeParams(); WriteMakefile(%MakeParams); sub InitMakeParams { my $opts; my %Params = ( 'NAME' => 'NetSNMP::ASN', 'VERSION_FROM' => 'ASN.pm', # finds $VERSION 'XSPROTOARG' => '-prototypes', 'PREREQ_PM' => {}, ); my ($snmp_lib, $snmp_llib, $sep); $opts = NetSNMPGetOpts(); $Params{'LIBS'} = `$opts->{'nsconfig'} --libs`; chomp($Params{'LIBS'}); $Params{'CCFLAGS'} = `$opts->{'nsconfig'} --cflags`; chomp($Params{'CCFLAGS'}); $Params{'CCFLAGS'} .= " " . $Config{'ccflags'}; if ($opts->{'insource'} eq "true") { $Params{'LIBS'} = "-L../../snmplib/.libs -L../../snmplib/ " . $Params{'LIBS'}; $Params{'CCFLAGS'} = "-I../../include " . $Params{'CCFLAGS'}; } $Params{'CCFLAGS'} =~ s/ -W[-\w]+//g; # ignore developer warnings if ($Params{'LIBS'} eq "" || $Params{'CCFLAGS'} eq "") { die "You need to install net-snmp first (I can't find net-snmp-config)"; } return (%Params); } # common subroutines -- DO NOT EDIT. # They are imported from the Makefile.subs.pl file sub NetSNMPGetOpts { my %ret; my $rootpath = shift; $rootpath = "../" if (!$rootpath); $rootpath .= '/' if ($rootpath !~ /\/$/); if ($ENV{'NET-SNMP-CONFIG'} && $ENV{'NET-SNMP-IN-SOURCE'}) { # have env vars, pull from there $ret{'nsconfig'} = $ENV{'NET-SNMP-CONFIG'}; $ret{'insource'} = $ENV{'NET-SNMP-IN-SOURCE'}; } else { # don't have env vars, pull from command line and put there GetOptions("NET-SNMP-CONFIG=s" => \$ret{'nsconfig'}, "NET-SNMP-IN-SOURCE=s" => \$ret{'insource'}); if ($ret{'insource'} eq "true" && $ret{'nsconfig'} eq "") { $ret{'nsconfig'}="sh ROOTPATH../net-snmp-config"; } elsif ($ret{'nsconfig'} eq "") { $ret{'nsconfig'}="net-snmp-config"; } $ENV{'NET-SNMP-CONFIG'} = $ret{'nsconfig'}; $ENV{'NET-SNMP-IN-SOURCE'} = $ret{'insource'}; } $ret{'nsconfig'} =~ s/ROOTPATH/$rootpath/; $ret{'rootpath'} = $rootpath; \%ret; }