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

SNMP编程

开发平台:

Unix_Linux

  1. #!/usr/bin/perl
  2. # Build script for Net-SNMP and MSVC
  3. # Written by Alex Burger - alex_b@users.sourceforge.net
  4. # March 12th, 2004
  5. #
  6. my $openssl = "disabled";
  7. my $b_ipv6 = "disabled";
  8. my $sdk = "disabled";
  9. my $default_install_base = "c:/usr";
  10. my $install_base = $default_install_base;
  11. my $install = "enabled";
  12. my $install_devel = "disabled";
  13. my $perl = "disabled";
  14. my $perl_install = "disabled";
  15. my $logging = "enabled";
  16. my $debug = "disabled";
  17. my $configOpts = "";
  18. my $cTmp = "";
  19. # Prepend win32 if running from main directory
  20. my $current_pwd = `%COMSPEC% /c cd`;
  21. chomp $current_pwd;
  22. if (! ($current_pwd =~ /\win32$/)) {
  23.   chdir ("win32");
  24.   $current_pwd = `%COMSPEC% /c cd`;
  25.   chomp $current_pwd;
  26. }
  27. if (! (-d $ENV{MSVCDir})) {
  28.   print "nPlease run VCVARS32.BAT first to set up the Visual Studio buildn" .
  29.         "environment.nn";
  30.   system("pause");
  31.   exit;
  32. }
  33. while (1) {
  34.   print "nnNet-SNMP build and install optionsn";
  35.   print "==================================nn";
  36.   print "1.  OpenSSL support:            " . $openssl. "n";
  37.   print "2.  Platform SDK support:       " . $sdk . "n";
  38.   print "n";
  39.   print "3.  Install path:               " . $install_base . "n";
  40.   print "4.  Install after build:        " . $install . "n";
  41.   print "n";
  42.   print "5.  Perl modules:               " . $perl . "n";
  43.   print "6.  Install perl modules:       " . $perl_install . "n";
  44.   print "n";
  45.   print "7.  Quiet build (logged):       " . $logging . "n";
  46.   print "8.  Debug mode:                 " . $debug . "n";
  47.   print "9.  IPv6 transports:            " . $b_ipv6 . "n";
  48.   print "n";
  49.   print "10. Install development files   " . $install_devel . "n";
  50.   print "nF.  Finished - start buildn";
  51.   print "Q.  Quit - abort buildnn";
  52.   print "Select option to set / toggle: ";
  53.   chomp ($option = <>);
  54.   if ($option eq "1") {
  55.     if ($openssl eq "enabled") {
  56.       $openssl = "disabled";
  57.     }
  58.     else {
  59.       $openssl = "enabled";
  60.     }
  61.   }
  62.   elsif ($option eq "2") {
  63.     if ($sdk eq "enabled") {
  64.       $sdk = "disabled";
  65.     }
  66.     else {
  67.       $sdk = "enabled";
  68.     }
  69.   }
  70.   elsif ($option eq "9") {
  71.     if ($b_ipv6 eq "enabled") {
  72.       $b_ipv6 = "disabled";
  73.     }
  74.     else {
  75.       $b_ipv6 = "enabled";
  76.     }
  77.   }
  78.   elsif ($option eq "3") {
  79.     print "Please enter the new install path [$default_install_base]: ";
  80.     chomp ($install_base = <>);
  81.     if ($install_base eq "") {
  82.       $install_base = $default_install_base;
  83.     }
  84.     $install_base =~ s/\///g;
  85.   }
  86.   elsif ($option eq "4") {
  87.     if ($install eq "enabled") {
  88.       $install = "disabled";
  89.     }
  90.     else {
  91.       $install = "enabled";
  92.     }
  93.   }
  94.   elsif ($option eq "10") {
  95.     if ($install_devel eq "enabled") {
  96.       $install_devel = "disabled";
  97.     }
  98.     else {
  99.       $install_devel = "enabled";
  100.     }
  101.   }
  102.   elsif ($option eq "5") {
  103.     if ($perl eq "enabled") {
  104.       $perl = "disabled";
  105.     }
  106.     else {
  107.       $perl = "enabled";
  108.     }
  109.   }
  110.   elsif ($option eq "6") {
  111.     if ($perl_install eq "enabled") {
  112.       $perl_install = "disabled";
  113.     }
  114.     else {
  115.       $perl_install = "enabled";
  116.     }
  117.   }
  118.   elsif ($option eq "7") {
  119.     if ($logging eq "enabled") {
  120.       $logging = "disabled";
  121.     }
  122.     else {
  123.       $logging = "enabled";
  124.     }
  125.   }
  126.   elsif ($option eq "8") {
  127.     if ($debug eq "enabled") {
  128.       $debug = "disabled";
  129.     }
  130.     else {
  131.       $debug = "enabled";
  132.     }
  133.   }
  134.   elsif (lc($option) eq "f") {
  135.     last;
  136.   }
  137.   elsif (lc($option) eq "q") {
  138.     exit;
  139.   }
  140. }
  141. $cTmp = ($openssl eq "enabled" ? "--with-ssl" : "" );
  142. $configOpts = "$cTmp";
  143. $cTmp = ($sdk eq "enabled" ? "--with-sdk" : "" );
  144. $configOpts = "$configOpts $cTmp";
  145. $cTmp = ($b_ipv6 eq "enabled" ? "--with-ipv6" : "" );
  146. $configOpts = "$configOpts $cTmp";
  147. $cTmp = ($debug eq "enabled" ? "--config=debug" : "--config=release" );
  148. $configOpts = "$configOpts $cTmp";
  149. # Set environment variables
  150. # Set to not search for non-existent ".dep" files
  151. $ENV{NO_EXTERNAL_DEPS}="1";
  152. # Set PATH environment variable so Perl make tests can locate the DLL
  153. $ENV{PATH} = "$current_pwd\bin\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
  154. # Set MIBDIRS environment variable so Perl make tests can locate the mibs
  155. my $temp_mibdir = "$current_pwd/../mibs";
  156. $temp_mibdir =~ s/\///g;
  157. $ENV{MIBDIRS}=$temp_mibdir;
  158. # Set SNMPCONFPATH environment variable so Perl conf.t test can locate
  159. # the configuration files.
  160. # See the note about environment variables in the Win32 section of 
  161. # perl/SNMP/README for details on why this is needed. 
  162. $ENV{SNMPCONFPATH}=t;$ENV{SNMPCONFPATH};
  163. print "nBuilding...n";
  164. if ($logging eq "enabled") {
  165.   print "nCreating *.out log files.nn";
  166. }
  167. if ($logging eq "enabled") {
  168.   print "Deleting old log files...n";
  169.   system("del *.out > NUL: 2>&1");
  170.   # Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
  171.   system("del ..\include\net-snmp\net-snmp-config.h > NUL: 2>&1");
  172.   
  173.   print "Running Configure...n";
  174.   system("perl Configure $configOpts --linktype=static --prefix="$install_base" > configure.out 2>&1") == 0 || die "Build error (see configure.out)";
  175.   print "Cleaning...n";
  176.   system("nmake /nologo clean > clean.out 2>&1") == 0 || die "Build error (see clean.out)";
  177.   print "Building main package...n";
  178.   system("nmake /nologo > make.out 2>&1") == 0 || die "Build error (see make.out)";
  179.   if ($perl eq "enabled") {
  180.     print "Running Configure for DLL...n";
  181.     system("perl Configure $configOpts --linktype=dynamic --prefix="$install_base" > perlconfigure.out 2>&1") == 0 || die "Build error (see perlconfigure.out)";
  182.     print "Cleaning libraries...n";
  183.     system("nmake /nologo libs_clean >> clean.out 2>&1") == 0 || die "Build error (see clean.out)";
  184.     print "Building DLL libraries...n";
  185.     system("nmake /nologo libs > dll.out 2>&1") == 0 || die "Build error (see dll.out)";
  186.    
  187.     print "Cleaning Perl....n";
  188.     system("nmake /nologo perl_clean >> clean.out 2>&1"); # If already cleaned, Makefile is gone so don't worry about errors!
  189.     print "Building Perl modules...n";
  190.     system("nmake /nologo perl > perlmake.out 2>&1") == 0 || die "Build error (see perlmake.out)";
  191.     print "Testing Perl modules...n";
  192.     system("nmake /nologo perl_test > perltest.out 2>&1"); # Don't die if all the tests don't pass..
  193.     
  194.     if ($perl_install eq "enabled") {
  195.       print "Installing Perl modules...n";
  196.       system("nmake /nologo perl_install > perlinstall.out 2>&1") == 0 || die "Build error (see perlinstall.out)";
  197.     }
  198.       
  199.     print "nSee perltest.out for Perl test resultsn";
  200.   }
  201.   print "n";
  202.   if ($install eq "enabled") {
  203.     print "Installing main package...n";
  204.     system("nmake /nologo install > install.out 2>&1") == 0 || die "Build error (see install.out)";
  205.   }
  206.   else {
  207.     print "Type nmake install to install the package to $install_basen";
  208.   }
  209.   if ($install_devel eq "enabled") {
  210.     print "Installing development files...n";
  211.     system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
  212.   }
  213.   else {
  214.     print "Type nmake install_devel to install the development files to $install_basen";
  215.   }
  216.   
  217.   if ($perl_install eq "disabled" && $perl eq "enabled") {
  218.     print "Type nmake perl_install to install the Perl modulesn";
  219.   }
  220. }
  221. else {
  222.   system("del *.out");
  223.   # Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
  224.   system("del ..\include\net-snmp\net-snmp-config.h > NUL: 2>&1");
  225.   system("perl Configure $configOpts --linktype=static --prefix="$install_base"") == 0 || die "Build error (see above)";
  226.   system("nmake /nologo clean") == 0 || die "Build error (see above)";
  227.   system("nmake /nologo") == 0 || die "Build error (see above)";
  228.   
  229.   if ($perl eq "enabled") {
  230.     system("perl Configure $configOpts --linktype=dynamic --prefix="$install_base"") == 0 || die "Build error (see above)";
  231.     system("nmake /nologo libs_clean") == 0 || die "Build error (see above)";
  232.     system("nmake /nologo libs") == 0 || die "Build error (see above)";
  233.     
  234.     system("nmake /nologo perl_clean"); # If already cleaned, Makefile is gone so don't worry about errors!
  235.     system("nmake /nologo perl") == 0 || die "Build error (see above)";
  236.     $path_old = $ENV{PATH};
  237.     $ENV{PATH} = "$current_pwd\bin\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
  238.     system("nmake /nologo perl_test"); # Don't die if all the tests don't pass..
  239.     $ENV{PATH} = $path_old;
  240.     
  241.     if ($perl_install eq "enabled") {      
  242.       print "Installing Perl modules...n";
  243.       system("nmake /nologo perl_install") == 0 || die "Build error (see above)";
  244.     }
  245.   }
  246.   print "n";
  247.   if ($install eq "enabled") {
  248.     print "Installing main package...n";
  249.     system("nmake /nologo install") == 0 || die "Build error (see above)";
  250.   }
  251.   else {
  252.     print "Type nmake install to install the package to $install_basen";
  253.   }
  254.   if ($install_devel eq "enabled") {
  255.     print "Installing development files...n";
  256.     system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
  257.   }
  258.   else {
  259.     print "Type nmake install_devel to install the development files to $install_basen";
  260.   }
  261.   if ($perl_install eq "disabled" && $perl eq "enabled") {
  262.     print "Type nmake perl_install to install the Perl modulesn";
  263.   }
  264. }
  265. print "nDone!n";