Makefile.PL
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:5k
- use ExtUtils::MakeMaker;
- require 5;
- use Config;
- use Getopt::Long;
- my %MakeParams = ();
- %MakeParams = InitMakeParams();
- WriteMakefile(%MakeParams);
- sub InitMakeParams {
- my $opts;
- my %Params = (
- 'NAME' => 'NetSNMP::agent',
- 'VERSION_FROM' => 'agent.pm', # finds $VERSION
- 'XSPROTOARG' => '-prototypes',
- 'PM' => {
- 'agent.pm' => '$(INST_LIBDIR)/agent.pm',
- 'netsnmp_request_infoPtr.pm' =>
- '$(INST_LIBDIR)/agent/netsnmp_request_infoPtr.pm'
- },
- 'PREREQ_PM' => {},
- );
- if ($ENV{'OSTYPE'} eq 'msys') {
- $Params{'DEFINE'} = "-DMINGW_PERL";
- }
-
- my ($snmp_lib, $snmp_llib, $sep);
- if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
- $opts = NetSNMPGetOpts();
- $Params{'DEFINE'} = "-DMSVC_PERL";
- $sep = '\';
- $snmp_lib_file = 'netsnmp.lib';
- $snmp_link_lib = 'netsnmp';
- $agent_link_lib = 'netsnmpagent';
- $helpers_link_lib = 'netsnmphelpers';
- $mibs_link_lib = 'netsnmpmibs';
- if (lc($opts->{'debug'}) eq "true") {
- $lib_dir = 'lib\debug';
- }
- else {
- $lib_dir = 'lib\release';
- }
-
- if (lc($opts->{'insource'}) eq "true") {
- $Params{'LIBS'} = "-L$basedir\win32\$lib_dir\ -l$snmp_link_lib -l$agent_link_lib -l$helpers_link_lib " .
- "-l$mibs_link_lib";
- }
- else {
- my @LibDirs = split (';',$ENV{LIB});
- my $LibDir;
- if ($opts->{'prefix'}) {
- push (@LibDirs,"$ENV{'NET-SNMP-PATH'}${sep}lib");
- }
- $noLibDir = 1;
- while ($noLibDir) {
- $LibDir = find_files(["$snmp_lib_file"],@LibDirs);
- if ($LibDir ne '') {
- $noLibDir = 0;
- # Put quotes around LibDir to allow spaces in paths
- $LibDir = '"' . $LibDir . '"';
- }
- else
- {
- @LibDirs = ();
- @LibDirs[0] = prompt("The Net-SNMP library ($snmp_lib_file) could not be found.nPlease enter the directory where it is located:");
- @LibDirs[0] =~ s/\$//;
- }
- }
- $Params{LIBS} = "-L$LibDir -l$snmp_link_lib -l$agent_link_lib -l$helpers_link_lib -l$mibs_link_lib";
- }
- $Params{'INC'} = "-I$basedir\include\ -I$basedir\include\net-snmp\ -I$basedir\win32\ ";
- }
- else {
- $opts = NetSNMPGetOpts();
- $Params{'LIBS'} = `$opts->{'nsconfig'} --agent-libs`;
- chomp($Params{'LIBS'});
- $Params{'CCFLAGS'} = `$opts->{'nsconfig'} --cflags`;
- chomp($Params{'CCFLAGS'});
- $Params{'CCFLAGS'} .= " " . $Config{'ccflags'};
- if (lc($opts->{'insource'}) eq "true") {
- $Params{'LIBS'} = "-L../../snmplib/.libs -L../../snmplib/ -L../../agent/.libs -L../../agent/ -L../../agent/helpers/.libs -L../../agent/helpers/ " . $Params{'LIBS'};
- $Params{'CCFLAGS'} = "-I../../include " . $Params{'CCFLAGS'};
- # } else {
- # $Params{'PREREQ_PM'} = {'NetSNMP::OID' => '0.1'};
- }
- $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 (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
- # Grab command line options first. Only used if environment variables are not set
- GetOptions("NET-SNMP-IN-SOURCE=s" => $ret{'insource'},
- "NET-SNMP-PATH=s" => $ret{'prefix'},
- "NET-SNMP-DEBUG=s" => $ret{'debug'});
- if ($ENV{'NET-SNMP-IN-SOURCE'})
- {
- $ret{'insource'} = $ENV{'NET-SNMP-IN-SOURCE'};
- undef ($ret{'prefix'});
- }
- elsif ($ENV{'NET-SNMP-PATH'})
- {
- $ret{'prefix'} = $ENV{'NET-SNMP-PATH'};
- }
- if ($ENV{'NET-SNMP-DEBUG'})
- {
- $ret{'debug'} = $ENV{'NET-SNMP-DEBUG'};
- }
- # Update environment variables in case they are needed
- $ENV{'NET-SNMP-IN-SOURCE'} = $ret{'insource'};
- $ENV{'NET-SNMP-PATH'} = $ret{'prefix'};
- $ENV{'NET-SNMP-DEBUG'} = $ret{'debug'};
-
- $basedir = `%COMSPEC% /c cd`;
- chomp $basedir;
- $basedir =~ /(.*?)\perl.*/;
- $basedir = $1;
- print "Net-SNMP base directory: $basedirn";
- if ($basedir =~ / /) {
- die "nA space has been detected in the base directory. This is not " .
- "supportednPlease rename the folder and try again.nn";
- }
- }
- else
- {
- 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 (lc($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;
- }
- sub find_files {
- my($f,$d) = @_;
- my ($dir,$found,$file);
- for $dir (@$d){
- $found = 0;
- for $file (@$f) {
- $found++ if -f "$dir/$file";
- }
- if ($found == @$f) {
- return $dir;
- }
- }
- }