#!perl.exe # # Douglas Thrift's Search Engine Configure Script # # Douglas Thrift # # $Id$ use strict; use Win32; use Win32::TieRegistry; my $programs = Win32::GetFolderPath(Win32::CSIDL_PROGRAM_FILES); my $prefix; my $perl; my $openssl = "no"; my $openssl_dir; my $mingw = "no"; for (my $index = 0; $index <= $#ARGV; $index++) { if ($ARGV[$index] eq "-prefix") { $prefix = $ARGV[++$index]; } elsif ($ARGV[$index] eq "-perl") { $perl = $ARGV[++$index]; } elsif ($ARGV[$index] eq "-openssl") { $openssl = "yes"; $openssl_dir = $ARGV[++$index]; } elsif ($ARGV[$index] eq "-mingw") { $mingw = "yes"; } elsif ($ARGV[$index] eq "-help") { (my $tab = "$0") =~ s/./ /g; print "Usage: $0 [-prefix path] [-perl path] [-openssl path] $tab [-mingw] [-help] Options: -prefix path Use installation directory path -perl path Use Perl executable path -openssl path Enable OpenSSL and use directory path -mingw Use MinGW make and g++ -help Display this message and exit "; exit 0; } } if ($prefix eq "") { $prefix = "$programs\\Douglas Thrift's Search Engine"; } print "prefix: $prefix "; if ($perl eq "") { my $hkey; if ($hkey = $Registry->{"CUser\\Software\\Perl"}) { $perl = $hkey->{"\\BinDir"}; } elsif ($hkey = $Registry->{"LMachine\\Software\\Perl"}) { $perl = $hkey->{"\\BinDir"}; } else { $perl = $^X; } } print "perl: $perl "; if ($openssl eq "yes" && $openssl_dir eq "") { my $message = "Couldn't find OpenSSL installation. Specify the path to OpenSSL after -openssl."; Win32::MsgBox($message, MB_ICONEXCLAMATION, "$0: Couldn't find OpenSSL"); die "$0: couldn't find openssl"; } elsif ($openssl eq "yes" && $mingw eq "yes") { $openssl_dir =~ s/\\/\//gs; } print "openssl: $openssl openssl_dir: $openssl_dir "; print "mingw: $mingw "; if ($mingw eq "no") { print "$0: creating makefile "; my $line; open(IN, "< makefile.in") || "$0: cannot open makefile.in"; open(MAKE, "> makefile") || "$0: cannot open makefile"; while ($line = ) { chomp($line); if ($line =~ /^(.*)\@CPPFLAGS\@(.*)$/) { my $openssl_include = $openssl eq "yes" ? "/I$openssl_dir\\include" : ""; $line = "$1$openssl_include$2"; } if ($line =~ /^(.*)\@OpenSSL\@(.*)$/) { my $openssl_defs = $openssl eq "yes" ? "/D_OpenSSL_" : ""; $line = "$1$openssl_defs$2"; } if ($line =~ /^(.*)\@LDFLAGS\@(.*)$/) { my $openssl_libdir = $openssl eq "yes" ? "/LIBPATH:$openssl_dir\\lib" : ""; $line = "$1$openssl_libdir$2"; } if ($line =~ /^(.*)\@LIBS\@(.*)$/) { my $openssl_libs = $openssl eq "yes" ? "ssleay32.lib libeay32.lib" : ""; $line = "$1$openssl_libs$2"; } if ($line =~ /^(.*)\@PREFIX\@(.*)$/) { $line = "$1$prefix$2"; } print MAKE "$line "; } close(IN); close(MAKE); } elsif ($mingw eq "yes") { print "$0: creating GNUmakefile "; my $line; open(IN, "< GNUmakefile.in") || "$0: cannot open GNUmakefile.in"; open(MAKE, "< makefile.in") || "$0: cannot open makefile.in"; open(GMAKE, "> GNUmakefile") || "$0: cannot open GNUmakefile"; while ($line = ) { chomp($line); if ($line =~ /^(.*)\@OBJEXT\@(.*)$/) { $line = "$1o$2"; } if ($line =~ /^(.*)\@EXEEXT\@(.*)$/) { $line = "$1.exe$2"; } if ($line =~ /^(.*)\@CXX\@(.*)$/) { $line = "$1mingw32-g++.exe$2"; } if ($line =~ /^(.*)\@CXXFLAGS\@(.*)$/) { $line = "$1-O2$2"; } if ($line =~ /^(.*)\@CPPFLAGS\@(.*)$/) { my $openssl_include = $openssl eq "yes" ? "-I$openssl_dir/include" : ""; $line = "$1$openssl_include$2"; } if ($line =~ /^(.*)\@LDFLAGS\@(.*)$/) { my $openssl_libdir = $openssl eq "yes" ? "-L$openssl_dir/lib" : ""; $line = "$1$openssl_libdir$2"; } if ($line =~ /^(.*)\@LIBS\@(.*)$/) { my $openssl_libs = $openssl eq "yes" ? "-lssl32 -leay32" : ""; $line = "$1-lws2_32 $openssl_libs$2"; } if ($line =~ /^(.*)\@OpenSSL\@(.*)$/) { my $openssl_defs = $openssl eq "yes" ? "-D_OpenSSL_" : ""; $line = "$1$openssl_defs$2"; } if ($line =~ /^(.*)\@urandomdev\@(.*)$/) { $line = "$1$2"; } if ($line =~ /^INSTALL.*$/) { until ($line !~ /^(INSTALL.*|)$/) { $line = ; chomp($line); } } if ($line eq "prefix = \@prefix\@") { until ($line eq "") { $line = ; chomp($line); } print GMAKE "PREFIX = $prefix RM = del ifeq (\$(shell del /?),) RM = rm endif "; } if ($line eq "install: installdirs") { until ($line eq "") { $line = ; chomp($line); } my $make; until ($make eq "install: installdirs") { $make = ; chomp($make); } do { $line = ; chomp($line); $make .= " $line"; } until ($line eq ""); print GMAKE "$make"; } if ($line eq "installdirs: mkinstalldirs") { until ($line eq "") { $line = ; chomp($line); } my $make; until ($make eq "installdirs:") { $make = ; chomp($make); } my $count = 0; do { $line = ; chomp($line); if ($line eq "\tperl dtse-win32.pl") { $line .= " -mingw"; $count++; } $make .= " $line"; } until ($line eq "" && $count == 1); print GMAKE "$make"; } if ($line =~ /^( -)rm( .*)$/) { $line = "$1\${RM}$2"; } print GMAKE "$line "; } close(IN); close(MAKE); close(GMAKE); } $prefix = Win32::GetShortPathName($prefix); $prefix =~ s/\\/\//gs; print "$0: creating search.cgi "; open(IN, "< search.cgi.in") || die "$0: cannot open search.cgi.in"; open(CGI, "> search.cgi") || die "$0: cannot open search.cgi"; my $line; while ($line = ) { chomp($line); if ($line =~ /^(.*)\@which_perl\@(.*)$/) { $line = "$1$perl$2"; } if ($line =~ /^(.*)\@prefix\@(.*)$/) { $line = "$1$prefix$2"; } if ($line =~ /^(.*)\@exec_prefix\@(.*)$/) { $line = "$1\${prefix}$2"; } if ($line =~ /^(.*)\@bindir\@(.*)$/) { $line = "$1\${exec_prefix}/bin$2"; } if ($line =~ /^(.*)\@EXEEXT\@(.*)$/) { $line = "$1.exe$2"; } print CGI "$line "; } close(IN); close(CGI);