summaryrefslogtreecommitdiff
path: root/win32/Configure
diff options
context:
space:
mode:
Diffstat (limited to 'win32/Configure')
-rw-r--r--win32/Configure431
1 files changed, 431 insertions, 0 deletions
diff --git a/win32/Configure b/win32/Configure
new file mode 100644
index 0000000..95e30b6
--- /dev/null
+++ b/win32/Configure
@@ -0,0 +1,431 @@
+#!/usr/bin/perl
+#
+# Configure script for Net-SNMP and MSVC
+# Written by Alex Burger
+# March 5th, 2004
+#
+use Getopt::Long;
+use strict;
+
+my $config;
+my $sdk = 0;
+my $linktype;
+my $prefix;
+my $prefixdos;
+my $openssl = 0;
+my $b_ipv6 = 0;
+my $b_winextdll = 0;
+my $help = 0;
+
+GetOptions ('config=s' => \$config,
+ 'with-sdk' => \$sdk,
+ 'linktype=s' => \$linktype,
+ 'destdir=s' => \$prefix,
+ 'prefix=s' => \$prefix,
+ 'with-ssl' => \$openssl,
+ 'with-ipv6' => \$b_ipv6,
+ 'with-winextdll' => \$b_winextdll,
+ 'help' => \$help);
+
+if ($help == 1)
+{
+my $USAGE = qq/
+Usage:
+ perl Configure [<options>]
+
+Options:
+
+ --config=[release | debug] Compile as release or with debug symbols
+ --with-sdk Link against MS Platform SDK
+ --linktype=[static | dynamic] Build static or dynamic (DLL)
+ --prefix=\"path\" Set INSTALL_BASE path (install path)
+ --destdir=\"path\" Same as --prefix
+ --with-ssl Link against OpenSSL
+ --with-ipv6 Build in IPv6 transports (enables SDK)
+ --with-winextdll Build winExtDLL agent (enables SDK, see README.win32)
+ --help This help screen
+/;
+
+ print $USAGE;
+
+ exit(0);
+
+}
+
+$config = lc($config);
+if (($config ne "debug") && ($config ne "release")) {
+ $config = "release";
+}
+
+$linktype = lc($linktype);
+if (($linktype ne "static") && ($linktype ne "dynamic")) {
+ $linktype = "static";
+}
+
+if ($prefix eq "") {
+ $prefix = "c:/usr";
+}
+
+# Make sure prefix only contains forward slashes
+$prefix =~ s/\\/\//g;
+
+$prefixdos = "\"$prefix\"";
+# Make sure prefixdos only contains backward slashes
+$prefixdos =~ s/\//\\/g;
+
+# Enable SDK for IPV6 and winExtDLL
+if ($b_ipv6 == 1) {
+ $sdk = 1;
+}
+if ($b_winextdll == 1) {
+ $sdk = 1;
+}
+
+print "\n\n";
+
+###############################################
+#
+# Create main Makefile
+#
+###############################################
+{
+ my $makefile_out = "Makefile";
+ my $makefile_in = "Makefile.in";
+
+ open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
+ open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
+
+ print "creating $makefile_out\n";
+
+ while (<MAKE_IN>)
+ {
+ chomp;
+ if ($sdk == 1) {
+ s/^SDK=/SDK=true/;
+ }
+ else {
+ s/^SDK=/SDK=false/;
+ }
+
+ s/^LINKTYPE=/LINKTYPE=$linktype/;
+ s/^CFG=/CFG=$config/;
+ s/^PREFIX=/PREFIX=$prefix/;
+ s/^PREFIX_DOS=/PREFIX_DOS=$prefixdos/;
+ s/^SSL=.*/SSL=$openssl/;
+
+ print MAKE_OUT $_ . "\n";
+ }
+}
+
+###############################################
+#
+# Create Makefiles for applications from
+# Makefile-apps.in
+# (except for snmpnetstat)
+#
+###############################################
+my @programs = qw
+/encode_keychange
+snmpbulkget
+snmpbulkwalk
+snmpdelta
+snmpdf
+snmpget
+snmpgetnext
+snmpset
+snmpstatus
+snmptable
+snmptest
+snmptranslate
+snmptrap
+snmpusm
+snmpvacm
+snmpwalk
+/;
+
+foreach my $progName (@programs) {
+
+ my $makefile_out = "$progName\\Makefile";
+ my $makefile_in = "Makefile-apps.in";
+
+ my $outdir = $config;
+ my $intdir = $config;
+
+ open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
+ open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
+
+ print "creating $makefile_out\n";
+
+ while (<MAKE_IN>)
+ {
+ chomp;
+
+ s/^LINKTYPE=/LINKTYPE=$linktype/;
+ s/^PROGNAME=/PROGNAME=$progName/;
+ s/^CFG=/CFG=$config/;
+ s/^OUTDIR=/OUTDIR=.\\$outdir/;
+ s/^INTDIR=/INTDIR=.\\$intdir/;
+ s/^SSL=.*/SSL=$openssl/;
+
+ print MAKE_OUT $_ . "\n";
+ }
+}
+
+###############################################
+#
+# Create Makefiles for snmpnetstat from
+# snmpnetstat\Makefile.in
+#
+###############################################
+my @programs = qw
+/snmpnetstat
+/;
+
+foreach my $progName (@programs) {
+
+ my $makefile_out = "$progName\\Makefile";
+ my $makefile_in = "$progName\\Makefile.in";
+
+ my $outdir = $config;
+ my $intdir = $config;
+
+ open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
+ open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
+
+ print "creating $makefile_out\n";
+
+ while (<MAKE_IN>)
+ {
+ chomp;
+
+ s/^LINKTYPE=/LINKTYPE=$linktype/;
+ s/^PROGNAME=/PROGNAME=$progName/;
+ s/^CFG=/CFG=$config/;
+ s/^OUTDIR=/OUTDIR=.\\$outdir/;
+ s/^INTDIR=/INTDIR=.\\$intdir/;
+ s/^SSL=.*/SSL=$openssl/;
+
+ print MAKE_OUT $_ . "\n";
+ }
+}
+
+
+###############################################
+#
+# Create Makefiles for libraries
+# from name\Makefile.in
+#
+###############################################
+my @programs = qw
+/libagent
+libhelpers
+libnetsnmptrapd
+/;
+
+if ($sdk == 1) {
+ push (@programs, "netsnmpmibssdk");
+}
+else {
+ push (@programs, "netsnmpmibs");
+}
+
+if ($linktype eq "dynamic") {
+ push (@programs, "libsnmp_dll");
+}
+else {
+ push (@programs, "libsnmp");
+}
+
+foreach my $progName (@programs) {
+
+ my $makefile_out = "$progName\\Makefile";
+ my $makefile_in = "$progName\\Makefile.in";
+
+ my $outdir = $config;
+ my $intdir = $config;
+
+ open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
+ open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
+
+ print "creating $makefile_out\n";
+
+ while (<MAKE_IN>)
+ {
+ chomp;
+
+ s/^PROGNAME=/PROGNAME=$progName/;
+ s/^CFG=/CFG=$config/;
+ s/^OUTDIR=/OUTDIR=.\\$outdir/;
+ s/^INTDIR=/INTDIR=.\\$intdir/;
+ s/^SSL=.*/SSL=$openssl/;
+ if ($b_winextdll == 1) {
+ s/#(.*?)\s+# uncomment for winExtDLL.*/$1/;
+ s/^LIB32_FLAGS=(.*)/LIB32_FLAGS=MgmtAPI.lib snmpapi.lib $1/;
+ }
+ print MAKE_OUT $_ . "\n";
+ }
+}
+
+###############################################
+#
+# Create Makefiles for daemons
+# from name\Makefile.in
+#
+###############################################
+my @programs = qw
+/snmptrapd
+/;
+
+if ($sdk == 1) {
+ push (@programs, "snmpdsdk");
+}
+else {
+ push (@programs, "snmpd");
+}
+
+foreach my $progName (@programs) {
+
+ my $makefile_out = "$progName\\Makefile";
+ my $makefile_in = "$progName\\Makefile.in";
+
+ my $outdir = $config;
+ my $intdir = $config;
+
+ open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
+ open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
+
+ print "creating $makefile_out\n";
+
+ while (<MAKE_IN>)
+ {
+ chomp;
+
+ s/^LINKTYPE=/LINKTYPE=$linktype/;
+ s/^PROGNAME=/PROGNAME=$progName/;
+ s/^CFG=/CFG=$config/;
+ s/^OUTDIR=/OUTDIR=.\\$outdir/;
+ s/^INTDIR=/INTDIR=.\\$intdir/;
+ s/^SSL=.*/SSL=$openssl/;
+
+ print MAKE_OUT $_ . "\n";
+ }
+}
+
+###############################################
+#
+# Create Makefile for Perl scripts in local
+# from local\Makefile.in
+#
+###############################################
+
+my $makefile_out = "local\\Makefile";
+my $makefile_in = "local\\Makefile.in";
+
+my $outdir = $config;
+
+open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
+open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
+
+print "creating $makefile_out\n";
+
+while (<MAKE_IN>)
+{
+ chomp;
+
+ s/^OUTDIR=/OUTDIR=.\\$outdir/;
+ s/^PREFIX=/PREFIX=$prefix/;
+ s/^PREFIX_DOS=/PREFIX_DOS=$prefixdos/;
+
+ print MAKE_OUT $_ . "\n";
+}
+
+
+###############################################
+#
+# Create net-snmp-config.h
+#
+###############################################
+{
+ my $file_out = "net-snmp\\net-snmp-config.h";
+ my $file_in = "net-snmp\\net-snmp-config.h.in";
+
+ open (FILE_OUT, ">$file_out") || die "Can't Open $file_out\n";
+ open (FILE_IN, "<$file_in") || die "Can't Open $file_in\n";
+
+ print "creating $file_out\n";
+
+ while (<FILE_IN>)
+ {
+ chomp;
+
+ if ($prefix ne "") {
+ s/^#define INSTALL_BASE.*/#define INSTALL_BASE \"$prefix\"/;
+ }
+ if ($linktype eq "dynamic") {
+ s/^.*#undef NETSNMP_USE_DLL.*/#define NETSNMP_USE_DLL 1/;
+ }
+ if ($sdk == 1) {
+ s/^.*#undef HAVE_WIN32_PLATFORM_SDK.*/#define HAVE_WIN32_PLATFORM_SDK 1/;
+ }
+ if ($openssl == 1) {
+ s/^.*#undef NETSNMP_USE_OPENSSL.*/#define NETSNMP_USE_OPENSSL 1/;
+ }
+ if ($b_ipv6 == 1) {
+ s/^.*#undef NETSNMP_ENABLE_IPV6.*/#define NETSNMP_ENABLE_IPV6 1/;
+ }
+ if ($b_winextdll == 1) {
+ s/^.*#undef USING_WINEXTDLL_MODULE.*/#define USING_WINEXTDLL_MODULE 1/;
+ }
+
+ print FILE_OUT $_ . "\n";
+ }
+}
+
+###############################################
+#
+# Create libsnmp.def file for libsnmp_dll
+#
+###############################################
+if ($linktype eq "dynamic")
+{
+ my $file_out = "libsnmp_dll\\libsnmp.def";
+ my $file_in = "libsnmp_dll\\libsnmp.def.in";
+
+ open (FILE_OUT, ">$file_out") || die "Can't Open $file_out\n";
+ open (FILE_IN, "<$file_in") || die "Can't Open $file_in\n";
+
+ print "creating $file_out\n";
+
+ while (<FILE_IN>)
+ {
+ chomp;
+
+ if ($b_ipv6 == "1") {
+ s/^;ipv6//i;
+ }
+
+ print FILE_OUT $_ . "\n";
+ }
+}
+
+
+print qq/
+---------------------------------------------------------
+ Net-SNMP configuration summary:
+---------------------------------------------------------
+
+/;
+
+print " Config type: $config\n";
+print " SDK: " . ($sdk == 1 ? "enabled" : "disabled") . "\n";
+print " Link type: $linktype\n";
+print " Prefix / Destdir: " . ($prefix ne "" ? $prefix : "(default)") . "\n";
+print " OpenSSL: " . ($openssl == 1 ? "enabled" : "disabled") . "\n";
+print " IPv6 transport: " . ($b_ipv6 == 1 ? "enabled" : "disabled") . "\n";
+print " winExtDLL agent: " . ($b_winextdll == 1 ? "enabled" : "disabled") . "\n";
+
+if ($ENV{INCLUDE} eq "") {
+ print "\n\nVisual Studio environment not detected. Please run VCVARS32.BAT before\n";
+ print "running nmake\n\n";
+}
+