Configure
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:9k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #!/usr/bin/perl
  2. # Configure script for Net-SNMP and MSVC
  3. # Written by Alex Burger
  4. # March 5th, 2004
  5. #
  6. use Getopt::Long;
  7. my $config;
  8. my $sdk = 0;
  9. my $linktype;
  10. my $prefix;
  11. my $openssl = 0;
  12. my $b_ipv6 = 0;
  13. my $help = 0;
  14. GetOptions      ('config=s' => $config,
  15.                  'with-sdk' => $sdk,
  16.                  'linktype=s' => $linktype,
  17.                  'destdir=s' => $prefix,
  18.                  'prefix=s' => $prefix,
  19.                  'with-ssl' => $openssl,
  20.                  'with-ipv6' => $b_ipv6,
  21.                  'help' => $help);
  22. if ($help == 1)
  23. {
  24. $USAGE = qq/
  25. Usage:
  26.     perl Configure [<options>] 
  27.     
  28. Options:
  29.     --config=[release | debug]       Compile as release or with debug symbols
  30.     --with-sdk                       Link against MS Platform SDK
  31.     --linktype=[static | dynamic]    Build static or dynamic (DLL)
  32.     --prefix="path"                  Set INSTALL_BASE path (install path)
  33.     --destdir="path"                 Same as --prefix
  34.     --with-ssl                       Link against OpenSSL
  35.     --with-ipv6                      Build in IPv6 transports
  36.     --help                           This help screen
  37. /;
  38.   print $USAGE;
  39.   exit(0);
  40. }
  41.                
  42. $config = lc($config);  
  43. if (($config ne "debug") && ($config ne "release")) {
  44.   $config = "release";
  45. }
  46. $linktype = lc($linktype);              
  47. if (($linktype ne "static") && ($linktype ne "dynamic")) {
  48.   $linktype = "static";
  49. }
  50. if ($prefix eq "") {
  51.   $prefix = "c:/usr";
  52. }
  53. # Make sure prefix only contains forward slashes
  54. $prefix =~ s/\///g;
  55. $prefixdos = ""$prefix"";
  56. # Make sure prefixdos only contains backward slashes
  57. $prefixdos =~ s///\/g;
  58. print "nn";
  59. ###############################################
  60. #
  61. # Create main Makefile
  62. #
  63. ###############################################
  64. {  
  65.   my $makefile_out = "Makefile";
  66.   my $makefile_in  = "Makefile.in";
  67.   open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_outn";
  68.   open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_inn";
  69.   print "creating $makefile_outn";
  70.   
  71.   while (<MAKE_IN>)
  72.   {
  73.     chomp;
  74.     if ($sdk == 1) {
  75.       s/^SDK=/SDK=true/;
  76.     }
  77.     else {
  78.       s/^SDK=/SDK=false/;
  79.     }
  80.     
  81.     s/^LINKTYPE=/LINKTYPE=$linktype/;
  82.     s/^CFG=/CFG=$config/;
  83.     s/^PREFIX=/PREFIX=$prefix/;    
  84.     s/^PREFIX_DOS=/PREFIX_DOS=$prefixdos/;    
  85.     s/^SSL=.*/SSL=$openssl/;
  86.     print MAKE_OUT $_ . "n";
  87.   }
  88. }
  89. ###############################################
  90. #
  91. # Create Makefiles for applications from 
  92. # Makefile-apps.in
  93. # (except for snmpnetstat)
  94. #
  95. ###############################################
  96. my @programs = qw 
  97. /encode_keychange
  98. snmpbulkget
  99. snmpbulkwalk
  100. snmpdelta
  101. snmpdf
  102. snmpget
  103. snmpgetnext
  104. snmpset
  105. snmpstatus
  106. snmptable
  107. snmptest
  108. snmptranslate
  109. snmptrap
  110. snmpusm
  111. snmpvacm
  112. snmpwalk
  113. /;
  114. foreach my $progName (@programs) {
  115.   
  116.   my $makefile_out = "$progName\Makefile";
  117.   my $makefile_in = "Makefile-apps.in";
  118.   my $outdir = $config;
  119.   my $intdir = $config;
  120.   
  121.   open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_outn";
  122.   open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_inn";
  123.   print "creating $makefile_outn";
  124.   
  125.   while (<MAKE_IN>)
  126.   {
  127.     chomp;
  128.     
  129.     s/^LINKTYPE=/LINKTYPE=$linktype/;
  130.     s/^PROGNAME=/PROGNAME=$progName/;
  131.     s/^CFG=/CFG=$config/;
  132.     s/^OUTDIR=/OUTDIR=.\$outdir/;
  133.     s/^INTDIR=/INTDIR=.\$intdir/;
  134.     s/^SSL=.*/SSL=$openssl/;
  135.     print MAKE_OUT $_ . "n";
  136.   }
  137. }
  138. ###############################################
  139. #
  140. # Create Makefiles for snmpnetstat from
  141. # snmpnetstatMakefile.in
  142. #
  143. ###############################################
  144. my @programs = qw 
  145. /snmpnetstat
  146. /;
  147. foreach my $progName (@programs) {
  148.   
  149.   my $makefile_out = "$progName\Makefile";
  150.   my $makefile_in = "$progName\Makefile.in";
  151.   my $outdir = $config;
  152.   my $intdir = $config;
  153.   
  154.   open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_outn";
  155.   open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_inn";
  156.   print "creating $makefile_outn";
  157.   
  158.   while (<MAKE_IN>)
  159.   {
  160.     chomp;
  161.     s/^LINKTYPE=/LINKTYPE=$linktype/;    
  162.     s/^PROGNAME=/PROGNAME=$progName/;
  163.     s/^CFG=/CFG=$config/;
  164.     s/^OUTDIR=/OUTDIR=.\$outdir/;
  165.     s/^INTDIR=/INTDIR=.\$intdir/;
  166.     s/^SSL=.*/SSL=$openssl/;
  167.     print MAKE_OUT $_ . "n";
  168.   }
  169. }
  170. ###############################################
  171. #
  172. # Create Makefiles for libraries  
  173. # from nameMakefile.in
  174. #
  175. ###############################################
  176. my @programs = qw 
  177. /libagent
  178. libhelpers
  179. libnetsnmptrapd
  180. /;
  181. if ($sdk == 1) {
  182.   push (@programs, "netsnmpmibssdk");
  183. }
  184. else {
  185.   push (@programs, "netsnmpmibs");
  186. }
  187. if ($linktype eq "dynamic") {
  188.   push (@programs, "libsnmp_dll");
  189. }
  190. else {
  191.   push (@programs, "libsnmp");
  192. }
  193. foreach my $progName (@programs) {
  194.   
  195.   my $makefile_out = "$progName\Makefile";
  196.   my $makefile_in = "$progName\Makefile.in";
  197.   
  198.   my $outdir = $config;
  199.   my $intdir = $config;
  200.   
  201.   open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_outn";
  202.   open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_inn";
  203.   print "creating $makefile_outn";
  204.   
  205.   while (<MAKE_IN>)
  206.   {
  207.     chomp;
  208.     
  209.     s/^PROGNAME=/PROGNAME=$progName/;
  210.     s/^CFG=/CFG=$config/;
  211.     s/^OUTDIR=/OUTDIR=.\$outdir/;
  212.     s/^INTDIR=/INTDIR=.\$intdir/;
  213.     s/^SSL=.*/SSL=$openssl/;
  214.     print MAKE_OUT $_ . "n";
  215.   }
  216. }
  217. ###############################################
  218. #
  219. # Create Makefiles for daemons
  220. # from nameMakefile.in
  221. #
  222. ###############################################
  223. my @programs = qw 
  224. /snmptrapd
  225. /;
  226. if ($sdk == 1) {
  227.   push (@programs, "snmpdsdk");
  228. }
  229. else {
  230.   push (@programs, "snmpd");
  231. }
  232. foreach my $progName (@programs) {
  233.   
  234.   my $makefile_out = "$progName\Makefile";
  235.   my $makefile_in = "$progName\Makefile.in";
  236.   
  237.   my $outdir = $config;
  238.   my $intdir = $config;
  239.   
  240.   open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_outn";
  241.   open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_inn";
  242.   print "creating $makefile_outn";
  243.   
  244.   while (<MAKE_IN>)
  245.   {
  246.     chomp;
  247.     
  248.     s/^LINKTYPE=/LINKTYPE=$linktype/;
  249.     s/^PROGNAME=/PROGNAME=$progName/;
  250.     s/^CFG=/CFG=$config/;
  251.     s/^OUTDIR=/OUTDIR=.\$outdir/;
  252.     s/^INTDIR=/INTDIR=.\$intdir/;
  253.     s/^SSL=.*/SSL=$openssl/;
  254.     print MAKE_OUT $_ . "n";
  255.   }
  256. }
  257. ###############################################
  258. #
  259. # Create Makefile for Perl scripts in local
  260. # from localMakefile.in
  261. #
  262. ###############################################
  263.   
  264. my $makefile_out = "local\Makefile";
  265. my $makefile_in = "local\Makefile.in";
  266. my $outdir = $config;
  267. open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_outn";
  268. open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_inn";
  269. print "creating $makefile_outn";
  270. while (<MAKE_IN>)
  271. {
  272.   chomp;
  273.   
  274.   s/^OUTDIR=/OUTDIR=.\$outdir/;
  275.   s/^PREFIX=/PREFIX=$prefix/;   
  276.   s/^PREFIX_DOS=/PREFIX_DOS=$prefixdos/;    
  277.   
  278.   print MAKE_OUT $_ . "n";
  279. }
  280. ###############################################
  281. #
  282. # Create net-snmp-config.h
  283. #
  284. ###############################################
  285. {
  286.   my $file_out = "net-snmp\net-snmp-config.h";
  287.   my $file_in = "net-snmp\net-snmp-config.h.in";
  288.   open (FILE_OUT, ">$file_out") || die "Can't Open $file_outn";
  289.   open (FILE_IN, "<$file_in") || die "Can't Open $file_inn";
  290.   
  291.   print "creating $file_outn";
  292.   while (<FILE_IN>)
  293.   {
  294.     chomp;
  295.     if ($prefix ne "") {
  296.       s/^#define INSTALL_BASE.*/#define INSTALL_BASE "$prefix"/;
  297.     }
  298.     if ($linktype eq "dynamic") {
  299.       s/^.*#undef NETSNMP_USE_DLL.*/#define NETSNMP_USE_DLL 1/;
  300.     }
  301.     if ($sdk == 1) {
  302.       s/^.*#undef HAVE_WIN32_PLATFORM_SDK.*/#define HAVE_WIN32_PLATFORM_SDK 1/;
  303.     }
  304.     if ($openssl == 1) {
  305.       s/^.*#undef USE_OPENSSL.*/#define USE_OPENSSL 1/;
  306.     }
  307.     if ($b_ipv6 == 1) {
  308.       s/^.*#undef INET6.*/#define INET6 1/;
  309.     }
  310.     print FILE_OUT $_ . "n";
  311.   }
  312. }
  313. ###############################################
  314. #
  315. # Create libsnmp.def file for libsnmp_dll
  316. #
  317. ###############################################
  318. if ($linktype eq "dynamic")
  319. {
  320.   my $file_out = "libsnmp_dll\libsnmp.def";
  321.   my $file_in = "libsnmp_dll\libsnmp.def.in";
  322.   open (FILE_OUT, ">$file_out") || die "Can't Open $file_outn";
  323.   open (FILE_IN, "<$file_in") || die "Can't Open $file_inn";
  324.   
  325.   print "creating $file_outn";
  326.   while (<FILE_IN>)
  327.   {
  328.     chomp;
  329.     if ($b_ipv6 == "1") {
  330.       s/^;ipv6//i;
  331.     }
  332.     print FILE_OUT $_ . "n";
  333.   }
  334. }
  335. print qq/
  336. ---------------------------------------------------------
  337.             Net-SNMP configuration summary:
  338. ---------------------------------------------------------
  339. /;
  340. print "  Config type:                $confign";
  341. print "  SDK:                        " . ($sdk == 1 ? "enabled" : "disabled") . "n";
  342. print "  Link type:                  $linktypen";
  343. print "  Prefix / Destdir:           " . ($prefix ne "" ? $prefix : "(default)") . "n";
  344. print "  OpenSSL:                    " . ($openssl == 1 ? "enabled" : "disabled") . "n";
  345. print "  IPv6 transport:             " . ($b_ipv6 == 1 ? "enabled" : "disabled") . "n";
  346. if ($ENV{INCLUDE} eq "") {
  347.   print "nnVisual Studio environment not detected.  Please run VCVARS32.BAT beforen";
  348.   print "running nmakenn";
  349. }