# InspIRCd Configuration Script
#
-# Copyright 2003 The ChatSpike Development Team
+# Copyright 2002-2006 The ChatSpike Development Team
# <brain@chatspike.net>
# <Craig@chatspike.net>
#
#
########################################
+require 5.6.0;
use Cwd;
use Getopt::Long;
GetOptions (
'enable-gnutls' => \$opt_use_gnutls,
'enable-openssl' => \$opt_use_openssl,
+ 'disable-interactive' => \$opt_nointeractive,
'with-nick-length=i' => \$opt_nick_length,
'with-channel-length=i' => \$opt_chan_length,
'with-max-channels=i' => \$opt_maxchans,
'binary-dir=s' => \$opt_binary_dir,
'library-dir=s' => \$opt_library_dir,
'help' => sub { showhelp(); },
- 'modupdate' => sub { update(); },
- 'update' => sub { modupdate(); },
+ 'modupdate' => sub { modupdate(); },
+ 'update' => sub { update(); },
'svnupdate' => sub { svnupdate(); },
'clean' => sub { clean(); },
);
(defined $opt_module_dir) ||
(defined $opt_base_dir) ||
(defined $opt_binary_dir) ||
+ (defined $opt_nointeractive) ||
(defined $opt_away) ||
(defined $opt_gecos) ||
(defined $opt_kick) ||
sub update
{
+ getmodules();
# Does the cache file exist?
if (!getcache()) {
# No, No it doesn't.. *BASH*
sub modupdate
{
+ getmodules();
# Does the cache file exist?
if (!getcache()) {
# No, No it doesn't.. *BASH*
}
print "Running non-interactive configure...\n" unless $interactive;
-
-print "Checking for cache from previous configure...\n";
-getcache();
-print "Checking operating system version...\n";
-getosflags();
+print "Checking for cache from previous configure... ";
+print ((getcache() eq "true") ? "found\n" : "not found\n");
+print "Checking operating system version... ";
+print getosflags() . "\n";
if (defined $opt_maxclients)
{
if ($interactive)
{
system("clear");
- # Display Splash Logo..
- show_splash();
- chomp($wholeos = `uname -mnr`);
+ chomp($wholeos = `uname -sr`);
my $rev = getrevision();
# Display Introduction Message..
print "
-Welcome to the InspIRCd Configuration program!
+Welcome to the \033[1mInspIRCd\033[0m Configuration program! (\033[1minteractive mode\033[0m)
+\033[1mPackage maintainers: Type ./configure --help for non-interactive help\033[0m
*** If you are unsure of any of these values, leave it blank for ***
*** standard settings that will work, and your server will run ***
-*** using them. If you are running this server as part of a ***
-*** larger network, you must consult with your network admins ***
-*** for the proper values to use, or server links will be unstable! ***
+*** using them. Please consult your IRC network admin if in doubt. ***
Press \033[1m<RETURN>\033[0m to accept the default for any option, or enter
a new value. Please note: You will \033[1mHAVE\033[0m to read the docs
dir, otherwise you won't have a config file!
-Your operating system is: \033[1;32m$config{OSNAME}\033[0m ($wholeos), fdmax: $config{MAX_CLIENT_T}
+Your operating system is: \033[1;32m$config{OSNAME}\033[0m ($wholeos)
+Maximum file descriptors: \033[1;32m$config{MAX_CLIENT_T}\033[0m
Your InspIRCd revision ID is \033[1;32mr$rev\033[0m";
if ($rev eq "r0") {
print " (Non-SVN build)";
$config{CC} = "eg++";
chomp($config{GCCVER} = `eg++ -dumpversion | cut -c 1`); # we must redo these if we change the compiler path
}
+ return "OpenBSD";
}
+ return $config{OSNAME};
} else {
$config{LDLIBS} = "-ldl -lstdc++";
$config{FLAGS} = "-fPIC -Wall -Woverloaded-virtual $config{OPTIMISATI}";
$config{LDLIBS} = "";
$config{MAKEPROG} = "/usr/bin/make";
$config{MAKEORDER} = "ircd mods";
+ return "Cygwin";
} elsif ($config{OSNAME} eq "CYG-STATIC") {
$config{FLAGS} = "-Wall -Woverloaded-virtual $config{OPTIMISATI}";
$config{LDLIBS} = "";
$config{MAKEORDER} = "mods ircd";
$config{STATICLIBS} = "modules/mods.a";
$config{STATIC_LINK} = "yes";
+ return "Cygwin-Static";
}
+ return "Linux";
}
if ($config{OSNAME} =~ /SunOS/)
# rt = POSIX realtime extensions
# resolv = inet_aton only (why isnt this in nsl?!)
$config{LDLIBS} = $config{LDLIBS} . " -lsocket -lnsl -lrt -lresolv";
+ return "Solaris";
}
if($config{OSNAME} eq "MINGW32")
{
# All code is position-independent on windows
$config{FLAGS} =~ s/-fPIC //;
+ return "MinGW";
}
}
return undef;
}
-sub show_splash {
- print "'\033[1;33m####\033[0m:'\033[1;33m##\033[0m::: \033[1;33m##\033[0m::'\033[1;33m######\033[0m::'\033[1;33m########\033[0m::'\033[1;33m####\033[0m:'\033[1;33m########\033[0m:::'\033[1;33m######\033[0m::'\033[1;33m########\033[0m::\n";
- print ". \033[1;33m##\033[0m:: \033[1;33m###\033[0m:: \033[1;33m##\033[0m:'\033[1;33m##\033[0m... \033[1;33m##\033[0m: \033[1;33m##\033[0m.... \033[1;33m##\033[0m:. \033[1;33m##\033[0m:: \033[1;33m##\033[0m.... \033[1;33m##\033[0m:'\033[1;33m##\033[0m... \033[1;33m##\033[0m: \033[1;33m##\033[0m.... \033[1;33m##\033[0m:\n";
- print ": \033[1;33m##\033[0m:: \033[1;33m####\033[0m: \033[1;33m##\033[0m: \033[1;33m##\033[0m:::..:: \033[1;33m##\033[0m:::: \033[1;33m##\033[0m:: \033[1;33m##\033[0m:: \033[1;33m##\033[0m:::: \033[1;33m##\033[0m: \033[1;33m##\033[0m:::..:: \033[1;33m##\033[0m:::: \033[1;33m##\033[0m:\n";
- print ": \033[1;33m##\033[0m:: \033[1;33m##\033[0m \033[1;33m##\033[0m \033[1;33m##\033[0m:. \033[1;33m######\033[0m:: \033[1;33m########\033[0m::: \033[1;33m##\033[0m:: \033[1;33m########\033[0m:: \033[1;33m##\033[0m::::::: \033[1;33m##\033[0m:::: \033[1;33m##\033[0m:\n";
- print ": \033[1;33m##\033[0m:: \033[1;33m##\033[0m. \033[1;33m####\033[0m::..... \033[1;33m##\033[0m: \033[1;33m##\033[0m.....:::: \033[1;33m##\033[0m:: \033[1;33m##\033[0m.. \033[1;33m##\033[0m::: \033[1;33m##\033[0m::::::: \033[1;33m##\033[0m:::: \033[1;33m##\033[0m:\n";
- print ": \033[1;33m##\033[0m:: \033[1;33m##\033[0m:. \033[1;33m###\033[0m:'\033[1;33m##\033[0m::: \033[1;33m##\033[0m: \033[1;33m##\033[0m::::::::: \033[1;33m##\033[0m:: \033[1;33m##\033[0m::. \033[1;33m##\033[0m:: \033[1;33m##\033[0m::: \033[1;33m##\033[0m: \033[1;33m##\033[0m:::: \033[1;33m##\033[0m:\n";
- print "'\033[1;33m####\033[0m: \033[1;33m##\033[0m::. \033[1;33m##\033[0m:. \033[1;33m######\033[0m:: \033[1;33m##\033[0m::::::::'\033[1;33m####\033[0m: \033[1;33m##\033[0m:::. \033[1;33m##\033[0m:. \033[1;33m######\033[0m:: \033[1;33m########\033[0m::\n";
- print "\033[0m\033[0m....::..::::..:::......:::..:::::::::....::..:::::..:::......:::........:::\n\n";
-}
-
sub resolve_directory {
use File::Spec;
return File::Spec->rel2abs($_[0]);
sub showhelp
{
+ chomp($PWD = `pwd`);
print "Usage: configure [options]
Options: [defaults in brackets after descriptions]
options are specified, non-interactive configuration
is started, and any omitted values are defaulted.
-Interactive configuration and reconfiguration:
-
- --update Update makefiles
- --modupdate Detect new modules
- --svnupdate {rebuild} Update working copy
- {and optionally rebuild}
- --clean Remove .config.cache
-
- Arguments with a single \"-\" symbol, as in
- InspIRCd 1.0.x, are also allowed.
-
-Non-interactive and initial configuration:
+Arguments with a single \"-\" symbol, as in
+InspIRCd 1.0.x, are also allowed.
+ --disable-interactive Sets no options intself, but
+ will disable any interactive prompting.
+ --update Update makefiles and dependencies
+ --modupdate Detect new modules and write makefiles
+ --svnupdate {rebuild} Update working copy via subversion
+ {and optionally rebuild it}
+ --clean Remove .config.cache file and go interactive
--enable-gnutls Enable GnuTLS module [no]
--enable-openssl Enable OpenSSL module [no]
--with-nick-length=[n] Specify max. nick length [32]
- --with-channel-length=[n] Specify max. channel length
- [64]
+ --with-channel-length=[n] Specify max. channel length [64]
--with-max-channels=[n] Specify max. number of channels
a normal user may join [20]
--with-max-oper-channels=[n] Specify max. number of channels
--with-max-clients=[n] Specify maximum number of users
which may connect locally
--enable-optimization=[n] Optimize using -O[n] gcc flag
- --enable-epoll Enable epoll() where supported
- [set]
- --enable-kqueue Enable kqueue() where supported
- [set]
+ --enable-epoll Enable epoll() where supported [set]
+ --enable-kqueue Enable kqueue() where supported [set]
--disable-epoll Do not enable epoll(), fall back
to select() [not set]
--disable-kqueue Do not enable kqueue(), fall back
--enable-ipv6 Build ipv6 native InspIRCd [no]
--enable-remote-ipv6 Build with ipv6 support for remote
servers on the network [yes]
- --disable-remote-ipv6 Do not allow remote ipv6 servers
- [not set]
+ --disable-remote-ipv6 Do not allow remote ipv6 servers [not set]
--with-cc=[filename] Use an alternative g++ binary to
build InspIRCd [g++]
--with-ident-length=[n] Specify max length of ident [12]
--with-away-length=[n] Specify max length of away [150]
--with-max-modes=[n] Specify max modes per line which
have parameters [20]
- --prefix=[directory] Base directory to install into
- [current directory]
- --config-dir=[directory] Config file directory [prefix/conf]
- --module-dir=[directory] Modules directory [prefix/modules]
- --binary-dir=[directory] Binaries directory [prefix/bin]
- --library-dir=[directory] Library directory [prefix/lib]
- --help Show this help text
+ --prefix=[directory] Base directory to install into (if defined,
+ can automatically define config, module, bin
+ and library dirs as subdirectories of prefix)
+ [$PWD]
+ --config-dir=[directory] Config file directory for config and SSL certs
+ [$PWD/conf]
+ --module-dir=[directory] Modules directory for loadable modules
+ [$PWD/modules]
+ --binary-dir=[directory] Binaries directory for core binary
+ [$PWD/bin]
+ --library-dir=[directory] Library directory for core libraries
+ [$PWD/lib]
+ --help Show this help text and exit
+
";
exit(0);
}