summaryrefslogtreecommitdiff
path: root/win32/build.pl
diff options
context:
space:
mode:
Diffstat (limited to 'win32/build.pl')
-rw-r--r--win32/build.pl338
1 files changed, 338 insertions, 0 deletions
diff --git a/win32/build.pl b/win32/build.pl
new file mode 100644
index 0000000..196b779
--- /dev/null
+++ b/win32/build.pl
@@ -0,0 +1,338 @@
+#!/usr/bin/perl
+#
+# Build script for Net-SNMP and MSVC
+# Written by Alex Burger - alex_b@users.sourceforge.net
+# March 12th, 2004
+#
+use strict;
+my $openssl = "disabled";
+my $b_ipv6 = "disabled";
+my $b_winextdll = "disabled";
+my $sdk = "disabled";
+my $default_install_base = "c:/usr";
+my $install_base = $default_install_base;
+my $install = "enabled";
+my $install_devel = "disabled";
+my $perl = "disabled";
+my $perl_install = "disabled";
+my $logging = "enabled";
+my $debug = "disabled";
+my $configOpts = "";
+my $cTmp = "";
+my $linktype = "static";
+my $option;
+
+# Prepend win32\ if running from main directory
+my $current_pwd = `%COMSPEC% /c cd`;
+chomp $current_pwd;
+if (! ($current_pwd =~ /\\win32$/)) {
+ chdir ("win32");
+ $current_pwd = `%COMSPEC% /c cd`;
+ chomp $current_pwd;
+}
+
+if ( -d $ENV{MSVCDir} || -d $ENV{VCINSTALLDIR}) {
+}
+else {
+ print "\nPlease run VCVARS32.BAT first to set up the Visual Studio build\n" .
+ "environment.\n\n";
+ system("pause");
+ exit;
+}
+
+while (1) {
+ print "\n\nNet-SNMP build and install options\n";
+ print "==================================\n\n";
+ print "1. OpenSSL support: " . $openssl. "\n";
+ print "2. Platform SDK support: " . $sdk . "\n";
+ print "\n";
+ print "3. Install path: " . $install_base . "\n";
+ print "4. Install after build: " . $install . "\n";
+ print "\n";
+ print "5. Perl modules: " . $perl . "\n";
+ print "6. Install perl modules: " . $perl_install . "\n";
+ print "\n";
+ print "7. Quiet build (logged): " . $logging . "\n";
+ print "8. Debug mode: " . $debug . "\n";
+ print "\n";
+ print "9. IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
+ print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
+ print "\n";
+ print "11. Link type: " . $linktype . "\n";
+ print "\n";
+ print "12. Install development files " . $install_devel . "\n";
+ print "\nF. Finished - start build\n";
+ print "Q. Quit - abort build\n\n";
+ print "Select option to set / toggle: ";
+
+ chomp ($option = <>);
+ if ($option eq "1") {
+ if ($openssl eq "enabled") {
+ $openssl = "disabled";
+ }
+ else {
+ $openssl = "enabled";
+ }
+ }
+ elsif ($option eq "2") {
+ if ($sdk eq "enabled") {
+ $sdk = "disabled";
+ }
+ else {
+ $sdk = "enabled";
+ }
+ }
+ elsif ($option eq "9") {
+ if ($b_ipv6 eq "enabled") {
+ $b_ipv6 = "disabled";
+ }
+ else {
+ $b_ipv6 = "enabled";
+ if ($sdk = "disabled") {
+ print "\n\n* SDK required for IPv6 and has been automatically enabled";
+ $sdk = "enabled";
+ }
+ }
+ }
+ elsif ($option eq "10") {
+ if ($b_winextdll eq "enabled") {
+ $b_winextdll = "disabled";
+ }
+ else {
+ $b_winextdll = "enabled";
+ if ($sdk = "disabled") {
+ print "\n\n* SDK required for IPv6 and has been automatically enabled";
+ $sdk = "enabled";
+ }
+ }
+ }
+ elsif ($option eq "3") {
+ print "Please enter the new install path [$default_install_base]: ";
+ chomp ($install_base = <>);
+ if ($install_base eq "") {
+ $install_base = $default_install_base;
+ }
+ $install_base =~ s/\\/\//g;
+ }
+ elsif ($option eq "4") {
+ if ($install eq "enabled") {
+ $install = "disabled";
+ }
+ else {
+ $install = "enabled";
+ }
+ }
+ elsif ($option eq "12") {
+ if ($install_devel eq "enabled") {
+ $install_devel = "disabled";
+ }
+ else {
+ $install_devel = "enabled";
+ }
+ }
+ elsif ($option eq "5") {
+ if ($perl eq "enabled") {
+ $perl = "disabled";
+ }
+ else {
+ $perl = "enabled";
+ }
+ }
+ elsif ($option eq "6") {
+ if ($perl_install eq "enabled") {
+ $perl_install = "disabled";
+ }
+ else {
+ $perl_install = "enabled";
+ }
+ }
+ elsif ($option eq "7") {
+ if ($logging eq "enabled") {
+ $logging = "disabled";
+ }
+ else {
+ $logging = "enabled";
+ }
+ }
+ elsif ($option eq "8") {
+ if ($debug eq "enabled") {
+ $debug = "disabled";
+ }
+ else {
+ $debug = "enabled";
+ }
+ }
+ elsif ($option eq "11") {
+ if ($linktype eq "static") {
+ $linktype = "dynamic";
+ }
+ else {
+ $linktype = "static";
+ }
+ }
+ elsif (lc($option) eq "f") {
+ last;
+ }
+ elsif (lc($option) eq "q") {
+ exit;
+ }
+}
+
+$cTmp = ($openssl eq "enabled" ? "--with-ssl" : "" );
+$configOpts = "$cTmp";
+$cTmp = ($sdk eq "enabled" ? "--with-sdk" : "" );
+$configOpts = "$configOpts $cTmp";
+$cTmp = ($b_ipv6 eq "enabled" ? "--with-ipv6" : "" );
+$configOpts = "$configOpts $cTmp";
+$cTmp = ($b_winextdll eq "enabled" ? "--with-winextdll" : "" );
+$configOpts = "$configOpts $cTmp";
+$cTmp = ($debug eq "enabled" ? "--config=debug" : "--config=release" );
+$configOpts = "$configOpts $cTmp";
+
+# Set environment variables
+
+# Set to not search for non-existent ".dep" files
+$ENV{NO_EXTERNAL_DEPS}="1";
+
+# Set PATH environment variable so Perl make tests can locate the DLL
+$ENV{PATH} = "$current_pwd\\bin\\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
+
+# Set MIBDIRS environment variable so Perl make tests can locate the mibs
+my $temp_mibdir = "$current_pwd/../mibs";
+$temp_mibdir =~ s/\\/\//g;
+$ENV{MIBDIRS}=$temp_mibdir;
+
+# Set SNMPCONFPATH environment variable so Perl conf.t test can locate
+# the configuration files.
+# See the note about environment variables in the Win32 section of
+# perl/SNMP/README for details on why this is needed.
+$ENV{SNMPCONFPATH}="t";$ENV{SNMPCONFPATH};
+
+print "\nBuilding...\n";
+
+if ($logging eq "enabled") {
+ print "\nCreating *.out log files.\n\n";
+}
+
+if ($logging eq "enabled") {
+ print "Deleting old log files...\n";
+ system("del *.out > NUL: 2>&1");
+
+ # Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
+ system("del ..\\include\\net-snmp\\net-snmp-config.h > NUL: 2>&1");
+ unlink "../snmplib/transports/snmp_transport_inits.h";
+
+ print "Running Configure...\n";
+ system("perl Configure $configOpts --linktype=$linktype --prefix=\"$install_base\" > configure.out 2>&1") == 0 || die "Build error (see configure.out)";
+
+ print "Cleaning...\n";
+ system("nmake /nologo clean > clean.out 2>&1") == 0 || die "Build error (see clean.out)";
+
+ print "Building main package...\n";
+ system("nmake /nologo > make.out 2>&1") == 0 || die "Build error (see make.out)";
+
+ if ($perl eq "enabled") {
+ if ($linktype eq "static") {
+ print "Running Configure for DLL...\n";
+ system("perl Configure $configOpts --linktype=dynamic --prefix=\"$install_base\" > perlconfigure.out 2>&1") == 0 || die "Build error (see perlconfigure.out)";
+
+ print "Cleaning libraries...\n";
+ system("nmake /nologo libs_clean >> clean.out 2>&1") == 0 || die "Build error (see clean.out)";
+
+ print "Building DLL libraries...\n";
+ system("nmake /nologo libs > dll.out 2>&1") == 0 || die "Build error (see dll.out)";
+ }
+
+ print "Cleaning Perl....\n";
+ system("nmake /nologo perl_clean >> clean.out 2>&1"); # If already cleaned, Makefile is gone so don't worry about errors!
+
+ print "Building Perl modules...\n";
+ system("nmake /nologo perl > perlmake.out 2>&1") == 0 || die "Build error (see perlmake.out)";
+
+ print "Testing Perl modules...\n";
+ system("nmake /nologo perl_test > perltest.out 2>&1"); # Don't die if all the tests don't pass..
+
+ if ($perl_install eq "enabled") {
+ print "Installing Perl modules...\n";
+ system("nmake /nologo perl_install > perlinstall.out 2>&1") == 0 || die "Build error (see perlinstall.out)";
+ }
+
+ print "\nSee perltest.out for Perl test results\n";
+ }
+
+ print "\n";
+ if ($install eq "enabled") {
+ print "Installing main package...\n";
+ system("nmake /nologo install > install.out 2>&1") == 0 || die "Build error (see install.out)";
+ }
+ else {
+ print "Type nmake install to install the package to $install_base\n";
+ }
+
+ if ($install_devel eq "enabled") {
+ print "Installing development files...\n";
+ system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
+ }
+ else {
+ print "Type nmake install_devel to install the development files to $install_base\n";
+ }
+
+ if ($perl_install eq "disabled" && $perl eq "enabled") {
+ print "Type nmake perl_install to install the Perl modules\n";
+ }
+}
+else {
+ system("del *.out");
+
+ # Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
+ system("del ..\\include\\net-snmp\\net-snmp-config.h > NUL: 2>&1");
+
+ system("perl Configure $configOpts --linktype=$linktype --prefix=\"$install_base\"") == 0 || die "Build error (see above)";
+ system("nmake /nologo clean") == 0 || die "Build error (see above)";
+ system("nmake /nologo") == 0 || die "Build error (see above)";
+
+ if ($perl eq "enabled") {
+ if ($linktype eq "static") {
+ system("perl Configure $configOpts --linktype=dynamic --prefix=\"$install_base\"") == 0 || die "Build error (see above)";
+ system("nmake /nologo libs_clean") == 0 || die "Build error (see above)";
+ system("nmake /nologo libs") == 0 || die "Build error (see above)";
+ }
+
+ system("nmake /nologo perl_clean"); # If already cleaned, Makefile is gone so don't worry about errors!
+ system("nmake /nologo perl") == 0 || die "Build error (see above)";
+
+ my $path_old = $ENV{PATH};
+ $ENV{PATH} = "$current_pwd\\bin\\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
+ system("nmake /nologo perl_test"); # Don't die if all the tests don't pass..
+ $ENV{PATH} = $path_old;
+
+ if ($perl_install eq "enabled") {
+ print "Installing Perl modules...\n";
+ system("nmake /nologo perl_install") == 0 || die "Build error (see above)";
+ }
+ }
+
+ print "\n";
+ if ($install eq "enabled") {
+ print "Installing main package...\n";
+ system("nmake /nologo install") == 0 || die "Build error (see above)";
+ }
+ else {
+ print "Type nmake install to install the package to $install_base\n";
+ }
+
+ if ($install_devel eq "enabled") {
+ print "Installing development files...\n";
+ system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
+ }
+ else {
+ print "Type nmake install_devel to install the development files to $install_base\n";
+ }
+
+ if ($perl_install eq "disabled" && $perl eq "enabled") {
+ print "Type nmake perl_install to install the Perl modules\n";
+ }
+}
+
+print "\nDone!\n";
+