⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile.pl

📁 snmp的源代码,已经在我的ubuntu下编译通过
💻 PL
字号:
use ExtUtils::MakeMaker;require 5;use Config;use Getopt::Long;my %MakeParams = ();my $opts;# See lib/ExtUtils/MakeMaker.pm for details of how to influence# the contents of the Makefile that is written.%MakeParams = InitMakeParams();WriteMakefile(%MakeParams);GetTestInfo();sub InitMakeParams {    my %Params = (		  NAME         => 'SNMP',		  dist         => { SUFFIX => "gz", COMPRESS => "gzip -9f"},		  MAN3PODS => { 'SNMP.pm' => '$(INST_MAN3DIR)/SNMP.3' },		  XSPROTOARG   => '-noprototypes', 	# XXX remove later?		  VERSION_FROM => 'SNMP.pm',		  realclean        => { FILES => 'host' },		  );    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';      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";      }      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";      }      $Params{'INC'} = "-I$basedir\\include\\ -I$basedir\\include\\net-snmp\\ -I$basedir\\win32\\ ";    }    else {	$opts = NetSNMPGetOpts();	if (!$ENV{'NETSNMP_LIBS'}) {	    $Params{'LIBS'}    = `$opts->{'nsconfig'} --libs`;	    chomp($Params{'LIBS'});	} else {	    $Params{'LIBS'} = $ENV{'NETSNMP_LIBS'};	}	if (!$ENV{'NETSNMP_CCFLAGS'}) {	    $Params{'CCFLAGS'} = `$opts->{'nsconfig'} --cflags`;	    chomp($Params{'CCFLAGS'});	    $Params{'CCFLAGS'} .= " " . $Config{'ccflags'};	} else {	    $Params{'CCFLAGS'} = $ENV{'NETSNMP_CCFLAGS'};	}	if (lc($opts->{'insource'}) eq "true") {	    $Params{'LIBS'} = "-L../../snmplib/.libs -L../../snmplib/ " . $Params{'LIBS'};	    $Params{'CCFLAGS'} = "-I../../include " . $Params{'CCFLAGS'};#	} else {#	    $Params{'PREREQ_PM'} = { 'NetSNMP::default_store' => 0.01 };	}	$Params{'CCFLAGS'} =~ s/ -W[-\w]+//g; # ignore developer warnings	if (!$ENV{'NETSNMP_PREFIX'}) {	    $prefix            = `$opts->{'nsconfig'} --prefix`;	    chomp($prefix);	    $sep = '/';	} else {	    $prefix = $ENV{'NETSNMP_PREFIX'};	}	if ($Params{'LIBS'} eq "" || $Params{'CCFLAGS'} eq "") {	    die "You need to install net-snmp first (I can't find net-snmp-config)";	}    }    return(%Params);}sub GetTestInfo {    my $sep = ($^O =~ /win32/i ? '\\' : '/');    my $info_file = "t${sep}snmptest.cmd";    my $snmpd_path1 = "${prefix}${sep}sbin";    my $snmpd_path2 = "${sep}usr${sep}sbin";    my $snmpd_path3 = "${sep}usr${sep}bin";    my $win32_snmpd_path = $ENV{'NET-SNMP-PATH'} . $sep . "bin";    open(H, ">$info_file") || die "Error: could not open file '$info_file'($!)";    my ($mibdir, $snmpd, $snmptrapd);        # Windows        if ($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys') {          if (lc ($opts->{'insource'}) eq "true") {            $mibdir = "../../mibs";            if (lc($opts->{'debug'}) eq "true") {              $snmpd = "../../win32/bin/debug";              $snmptrapd = "../../win32/bin/debug";            }            else {              $snmpd = "../../win32/bin/release";              $snmptrapd = "../../win32/bin/release";            }          } else {            $mibdir = $ENV{'NET-SNMP-PATH'} . "${sep}share${sep}snmp${sep}mibs";            $snmpd = find_files(["snmpd.exe"], [$win32_snmpd_path]);            $snmptrapd = find_files(["snmptrapd.exe"], [$win32_snmpd_path]);          }        }        # Unix        else {          if (lc($opts->{'insource'}) eq "true") {            $mibdir = "../../mibs";            $snmpd = "../../agent/snmpd";            $snmptrapd = "../../apps/snmptrapd";          } else {            $mibdir = "${prefix}${sep}share${sep}snmp${sep}mibs";            $snmpd = find_files(["snmpd"], [$snmpd_path1, $snmpd_path2]);            $snmptrapd = find_files(["snmptrapd"], [$snmpd_path1, $snmpd_path2]);          }        }	$mibdir = find_files(["NET-SNMP-MIB.txt"],[$mibdir]);	$mibdir ||= prompt("Unable to locate the MIBs, Please enter the path: ",			   $mibdir);	$snmpd ||= prompt("Unable to locate \"snmpd\". Please enter the path: ",			  $snmpd_path1);	$snmptrapd ||=	    prompt("Unable to locate \"snmptrapd\". Please enter the path: ",		   $snmpd_path1);        if ($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys') {          $snmpd = $snmpd . $sep . "snmpd.exe";          $snmptrapd = $snmptrapd . $sep . "snmptrapd.exe";        }        else {          if ($ENV{'OSTYPE'} eq 'msys') {            $snmpd =~ s/snmpd$/snmpd.exe/;            $snmptrapd =~ s/snmptrapd$/snmptrapd.exe/;          }          else          {            $snmpd =~ s/($sep)?(snmpd)?$/${sep}snmpd/;            $snmptrapd =~ s/($sep)?(snmptrapd)?$/${sep}snmptrapd/;          }        }	print H "SNMPD => $snmpd\n";	print H "SNMPTRAPD => $snmptrapd\n";	print H "MIBDIR => $mibdir\n";	if (!(lc($opts->{'insource'}) eq "true")) {	    if (-e $snmpd and -r $snmpd) {		if (not -x $snmpd) {		    warn("Error: $snmpd not executable. 'make test' will not work.\n");		}	    } else {		warn("Error: $snmpd does not exist or is unreadable. 'make test' will not work.\n");	    }	    if (-e $snmptrapd and -r $snmptrapd) {		if (not -x $snmptrapd) {		    warn("Error: $snmptrapd not executable. 'make test' will not work.\n");		}	    } else {		warn("Error: $snmptrapd does not exist or is unreadable. 'make test' will not work.\n");	    }	}# end of else    close H;}sub HasSSL {    my $config_header = shift;    my $has_ssl;    unless (open(C,"<$config_header")) {	warn("Unable to open $config_header, assuming no SSL\n");	return undef;    }    while (<C>) {	$has_ssl++, last if /^\s*#define\s+USE_OPENSSL/;    }    close C;    return $has_ssl;}# common subroutines -- DO NOT EDIT.# They are imported from the Makefile.subs.pl filesub 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: $basedir\n";    }    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;	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -