summaryrefslogtreecommitdiff
path: root/perl/Makefile.subs.pl
diff options
context:
space:
mode:
Diffstat (limited to 'perl/Makefile.subs.pl')
-rw-r--r--perl/Makefile.subs.pl136
1 files changed, 136 insertions, 0 deletions
diff --git a/perl/Makefile.subs.pl b/perl/Makefile.subs.pl
new file mode 100644
index 0000000..817fb55
--- /dev/null
+++ b/perl/Makefile.subs.pl
@@ -0,0 +1,136 @@
+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: $basedir\n";
+ if ($basedir =~ / /) {
+ die "\nA space has been detected in the base directory. This is not " .
+ "supported\nPlease rename the folder and try again.\n\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;
+ }
+ }
+}
+
+
+sub Check_Version {
+ if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+ my $foundversion = 0;
+ return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
+ open(I,"<Makefile");
+ while (<I>) {
+ if (/^VERSION = (.*)/) {
+ my $perlver = $1;
+ my $srcver = $lib_version;
+ chomp($srcver);
+ my $srcfloat = floatize_version($srcver);
+ $perlver =~ s/pre/0./;
+ # we allow for perl/CPAN-only revisions beyond the default
+ # version formatting of net-snmp itself.
+ $perlver =~ s/(\.\d{5}).*/\1/;
+ $perlver =~ s/0*$//;
+ if ($srcfloat ne $perlver) {
+ if (!$foundversion) {
+ print STDERR "ERROR:
+Net-SNMP installed version: $srcver => $srcfloat
+Perl Module Version: $perlver
+
+These versions must match for perfect support of the module. It is possible
+that different versions may work together, but it is strongly recommended
+that you make these two versions identical. You can get the Net-SNMP
+source code and the associated perl modules directly from
+
+ http://www.net-snmp.org/
+
+If you want to continue anyway please set the NETSNMP_DONT_CHECK_VERSION
+environmental variable to 1 and re-run the Makefile.PL script.\n";
+ exit(1);
+ }
+ }
+ $foundversion = 1;
+ last;
+ }
+ }
+ close(I);
+ die "ERROR: Couldn't find version number of this module\n"
+ if (!$foundversion);
+ }
+}
+
+sub floatize_version {
+ my ($major, $minor, $patch, $opps) = ($_[0] =~ /^(\d+)\.(\d+)\.?(\d*)\.?(\d*)/);
+ return $major + $minor/100 + $patch/10000 + $opps/100000;
+}