]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
Apply fixes for buffering of headers, and a test module both by psychon
[user/henk/code/inspircd.git] / configure
index 5e598074da3c0d445e9baa34597ac50cdf4bf64e..43586040511b1050c500631fe2644ebbb94e5b68 100755 (executable)
--- a/configure
+++ b/configure
@@ -2,7 +2,7 @@
 
 # InspIRCd Configuration Script
 #
-# Copyright 2002-2006 The ChatSpike Development Team
+# Copyright 2002-2007 The ChatSpike Development Team
 # <brain@chatspike.net>
 # <Craig@chatspike.net>
 #
 
 
 require 5.6.0;
+use Socket;
 use Cwd;
 use Getopt::Long;
 
+# Utility functions for our buildsystem
+use make::utilities;
+use make::configure;
+
 GetOptions (
        'enable-gnutls' => \$opt_use_gnutls,
        'enable-openssl' => \$opt_use_openssl,
@@ -25,7 +30,7 @@ GetOptions (
        'with-channel-length=i' => \$opt_chan_length,
        'with-max-channels=i' => \$opt_maxchans,
        'with-max-oper-channels=i' => \$opt_opermaxchans,
-       'with-max-clients' => \$opt_maxclients,
+       'with-max-clients=i' => \$opt_maxclients,
        'enable-epoll' => \$opt_epoll,
        'enable-kqueue' => \$opt_kqueue,
        'disable-epoll' => \$opt_noepoll,
@@ -209,6 +214,7 @@ $config{STATIC_LINK}            = "no";                                             # are doing static modules?
 chomp($config{MAX_CLIENT_T} = `sh -c \"ulimit -n\"`);                          # FD Limit
 chomp($config{MAX_DESCRIPTORS} = `sh -c \"ulimit -n\"`);                       # Hard FD Limit
 chomp($config{GCCVER}       = `g++ -dumpversion | cut -c 1`);                  # Major GCC Version
+$config{_SOMAXCONN} = SOMAXCONN;                                               # Max connections in accept queue
 $config{OSNAME}            = $^O;                                              # Operating System Name
 $config{CC}                = "g++";                                            # C++ compiler
 if (defined $opt_cc)
@@ -250,8 +256,6 @@ if (defined $opt_away)
        $config{MAX_AWAY} = $opt_away;
 }
 
-$no_svn = 0;
-
 $config{HAS_OPENSSL} =~ /OpenSSL ([-[:digit:].]+)([a-z])?(\-[a-z][0-9])? (\w{3}|[0-9]+) (\w{3}|[0-9]+) [0-9]{4}/;
 $config{HAS_OPENSSL} = $1;
 
@@ -262,7 +266,7 @@ if ($config{GCCVER} eq "") {
 
 # Minihack! Convert Cygwin to 'Cyg-Static' so i can
 # Keep my dynamic module experiments here for later
-# concideration!
+# consideration!
 
 if ($config{OSNAME} =~ /CYGWIN/i)
 {
@@ -426,7 +430,7 @@ if (!$fail) {
 if ($has_epoll) {
        my $kernel = `uname -r`;
        chomp($kernel);
-       if (($kernel =~ /2\.0/) || ($kernel =~ /2\.2/) || ($kernel =~ /2\.4/)) {
+       if (($kernel =~ /^2\.0\./) || ($kernel =~ /^2\.2\./) || ($kernel =~ /^2\.4\./)) {
                $has_epoll = 0;
        }
 }
@@ -588,262 +592,24 @@ should NOT be used. You should probably specify a newer compiler.\n\n";
        print "different servers on the network.\n\n";
 
        # File Descriptor Settings..
-       my $continue = 0;
-       while (!$continue) {
-               print "Maximum number of clients at any one time ($config{MAX_CLIENT_T})\n";
-               print "[\033[1;32m$config{MAX_CLIENT}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAX_CLIENT};
-               }
-               if ($var =~ /^\d+$/) {
-                       if (($var > $config{MAX_CLIENT_T}) && ($fd_scan_fail ne "true")) {
-                               # Client has entered a larger number than the 'discovered' value
-                               # Confirm.
-                               print "WARNING: Our scans have indicated that you are attempting
-to use more sockets than there are avaliable. Are you sure
-you wish to do this? It may cause the IRCd to malfunction [y/n]
-[\033[1;32mn\033[0m] -> $c";
-                               chomp($tmp = <STDIN>);
-                               if ($tmp ne "y") {
-                                       print "Please enter the correct value.\n\n";
-                                       next;
-                               }
-                       }
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-                       next;
-               }
-               # If we get here, we should be good to go.
-               $config{MAX_CLIENT} = $var;
-               $config{MAX_DESCRIPTORS} = $var;
-               $continue = 1;
-               print "\n";
-       }
-
-       my $continue = 0;
-       while (!$continue) {
-               print "What is the maximum length of nicknames?\n";
-               print "[\033[1;32m$config{NICK_LENGT}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{NICK_LENGT};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{NICK_LENGT} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
-
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum length of channel names?\n";
-               print "[\033[1;32m$config{CHAN_LENGT}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{CHAN_LENGT};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{CHAN_LENGT} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
-
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum number of channels a normal user may join at any one time?\n";
-               print "[\033[1;32m$config{MAX_CHANNE}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAX_CHANNE};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{MAX_CHANNE} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
-
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum number of channels an oper may join at any one time?\n";
-               print "[\033[1;32m$config{MAX_OPERCH}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAX_OPERCH};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{MAX_OPERCH} = $var;
-                       $continue = 1;
-                       print "\n";
-               }
-       }
-
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum number of mode changes in one line?\n";
-               print "[\033[1;32m$config{MAXI_MODES}\033[0m] -> ";
-                       chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAXI_MODES};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{MAXI_MODES} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
-
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum length of an ident (username)?\n";
-               print "[\033[1;32m$config{MAX_IDENT}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAX_IDENT};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{MAX_IDENT} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
-
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum length of a quit message?\n";
-               print "[\033[1;32m$config{MAX_QUIT}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAX_QUIT};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{MAX_QUIT} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
-
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum length of a channel topic?\n";
-               print "[\033[1;32m$config{MAX_TOPIC}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAX_TOPIC};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{MAX_TOPIC} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
-
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum length of a kick message?\n";
-               print "[\033[1;32m$config{MAX_KICK}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAX_KICK};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{MAX_KICK} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
-
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum length of a GECOS (real name) field?\n";
-               print "[\033[1;32m$config{MAX_GECOS}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAX_GECOS};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{MAX_GECOS} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
+       promptnumeric("number of clients at any one time", "MAX_CLIENT_T");
+       $config{MAX_CLIENT} = $config{MAX_CLIENT_T};
+       $config{MAX_DESCRIPTORS} = $config{MAX_CLIENT_T};
 
-       $continue = 0;
-       while (!$continue) {
-               print "What is the maximum length of an away message?\n";
-               print "[\033[1;32m$config{MAX_AWAY}\033[0m] -> ";
-               chomp($var = <STDIN>);
-               if ($var eq "") {
-                       $var = $config{MAX_AWAY};
-               }
-               if ($var =~ /^\d+$/) {
-                       # We don't care what the number is, set it and be on our way.
-                       $config{MAX_AWAY} = $var;
-                       $continue = 1;
-                       print "\n";
-               } else {
-                       print "You must enter a number in this field. Please try again.\n\n";
-               }
-       }
+       promptnumeric("length of nicknames", "NICK_LENGT");
+       promptnumeric("length of channel names", "CHAN_LENGT");
+       promptnumeric("number of channels a normal user may join at any one time", "MAX_CHANNE");
+       promptnumeric("number of channels an oper may join at any one time", "MAX_OPERCH");
+       promptnumeric("number of mode changes in one line", "MAXI_MODES");
+       promptnumeric("length of an ident (username)", "MAX_IDENT");
+       promptnumeric("length of a quit message", "MAX_QUIT");
+       promptnumeric("length of a channel topic", "MAX_TOPIC");
+       promptnumeric("length of a kick message", "MAX_KICK");
+       promptnumeric("length of a GECOS (real name)", "MAX_GECOS");
+       promptnumeric("length of an away message", "MAX_AWAY");
 }
 
-print "\n\033[1;32mPre-build configuration is complete!\033[0m\n\n";
-print "\033[0mBase install path:\033[1;32m\t\t$config{BASE_DIR}\033[0m\n";
-print "\033[0mConfig path:\033[1;32m\t\t\t$config{CONFIG_DIR}\033[0m\n";
-print "\033[0mModule path:\033[1;32m\t\t\t$config{MODULE_DIR}\033[0m\n";
-print "\033[0mLibrary path:\033[1;32m\t\t\t$config{LIBRARY_DIR}\033[0m\n";
-print "\033[0mMax connections:\033[1;32m\t\t$config{MAX_CLIENT}\033[0m\n";
-print "\033[0mMax User Channels:\033[1;32m\t\t$config{MAX_CHANNE}\033[0m\n";
-print "\033[0mMax Oper Channels:\033[1;32m\t\t$config{MAX_OPERCH}\033[0m\n";
-print "\033[0mMax nickname length:\033[1;32m\t\t$config{NICK_LENGT}\033[0m\n";
-print "\033[0mMax channel length:\033[1;32m\t\t$config{CHAN_LENGT}\033[0m\n";
-print "\033[0mMax mode length:\033[1;32m\t\t$config{MAXI_MODES}\033[0m\n";
-print "\033[0mMax ident length:\033[1;32m\t\t$config{MAX_IDENT}\033[0m\n";
-print "\033[0mMax quit length:\033[1;32m\t\t$config{MAX_QUIT}\033[0m\n";
-print "\033[0mMax topic length:\033[1;32m\t\t$config{MAX_TOPIC}\033[0m\n";
-print "\033[0mMax kick length:\033[1;32m\t\t$config{MAX_KICK}\033[0m\n";
-print "\033[0mMax name length:\033[1;32m\t\t$config{MAX_GECOS}\033[0m\n";
-print "\033[0mMax away length:\033[1;32m\t\t$config{MAX_AWAY}\033[0m\n";
-print "\033[0mGCC Version Found:\033[1;32m\t\t$config{GCCVER}.x\033[0m\n";
-# and not echo it out so we don't get some ricer fuck complaining
-#print "\033[0mOptimization Flag:\033[1;32m\t\t$config{OPTIMISATI}\033[0m\n";
-print "\033[0mCompiler program:\033[1;32m\t\t$config{CC}\033[0m\n";
-print "\033[0mStatic modules:\033[1;32m\t\t\t$config{STATIC_LINK}\033[0m\n";
-print "\033[0mIPv6 Support:\033[1;32m\t\t\t$config{IPV6}\033[0m\n";
-print "\033[0mIPv6 to IPv4 Links:\033[1;32m\t\t$config{SUPPORT_IP6LINKS}\033[0m\n";
-print "\033[0mGnuTLS Support:\033[1;32m\t\t\t$config{USE_GNUTLS}\033[0m\n";
-print "\033[0mOpenSSL Support:\033[1;32m\t\t$config{USE_OPENSSL}\033[0m\n\n";
+dumphash();
 
 if (($config{USE_GNUTLS} eq "y") && ($config{HAS_GNUTLS} ne "y"))
 {
@@ -1117,55 +883,6 @@ sub getosflags {
        return $config{OSNAME};
 }
 
-sub is_dir {
-       my ($path) = @_;
-       if (chdir($path)) {
-               chdir($this);
-               return 1;
-       } else {
-               # Just in case..
-               chdir($this);
-               return 0;
-       }
-}
-
-sub getmodules {
-       my $i = 0;
-       print "Detecting modules ";
-       opendir(DIRHANDLE, "src/modules");
-       foreach $name (sort readdir(DIRHANDLE)) {
-               if ($name =~ /^m_(.+)\.cpp$/)
-               {
-                       $mod = $1;
-                       if ($mod !~ /_static$/) {
-                               $modlist[$i++] = $mod;
-                               print ".";
-                       }
-               }
-       }
-       closedir(DIRHANDLE);
-       print "\nOk, $i modules.\n";
-}
-
-sub getrevision {
-       if ($no_svn) {
-               return "0";
-       }
-       my $data = `svn info`;
-       
-       if ($data eq "") {
-               $no_svn = 1;
-               $rev = "0";
-               return $rev;
-       }
-       $data =~ /Revision: (\d+)/;
-       my $rev = $1;
-       if (!defined($rev)) {
-               $rev = "0";
-       }
-       return $rev;
-}
-
 sub writefiles {
        my($writeheader) = @_;
        # First File.. inspircd_config.h
@@ -1190,6 +907,8 @@ sub writefiles {
 #define VERSION "$version"
 #define REVISION "$revision2"
 #define MAXCLIENTS $config{MAX_CLIENT}
+#define MAXCLIENTS_S "$config{MAX_CLIENT}"
+#define SOMAXCONN_S "$config{_SOMAXCONN}"
 #define MAX_DESCRIPTORS $config{MAX_DESCRIPTORS}
 #define NICKMAX $NL
 #define CHANMAX $CL
@@ -1288,6 +1007,17 @@ EOF
        }
        chomp($modules);   # Remove Redundant whitespace..
 
+       opendir(DIRHANDLE, "src/modules");
+       foreach $name (sort readdir(DIRHANDLE)) {
+               if ($name =~ /^m_(.+?)$/) {
+                       if (opendir(MDIRHANDLE, "src/modules/$name") != 0) {
+                               closedir(MDIRHANDLE);
+                               $modules .= "$name.so ";
+                       }
+               }
+       }
+       closedir(DIRHANDLE);
+
 
        # Write all .in files.
        my $tmp = "";
@@ -1363,64 +1093,6 @@ EOF
        }
 }
 
-sub getcompilerflags {
-       my ($file) = @_;
-       open(FLAGS, $file);
-       while (<FLAGS>) {
-       if ($_ =~ /^\/\* \$CompileFlags: (.+) \*\/$/) {
-               close(FLAGS);
-                       return $1;
-               }
-       }
-       close(FLAGS);
-       return undef;
-}
-
-sub getlinkerflags {
-       my ($file) = @_;
-       open(FLAGS, $file);
-       while (<FLAGS>) {
-               if ($_ =~ /^\/\* \$LinkerFlags: (.+) \*\/$/) {
-                       close(FLAGS);
-                       return $1;
-               }
-       }
-       close(FLAGS);
-       return undef;
-}
-
-sub getdependencies {
-       my ($file) = @_;
-       open(FLAGS, $file);
-       while (<FLAGS>) {
-               if ($_ =~ /^\/\* \$ModDep: (.+) \*\/$/) {
-                       close(FLAGS);
-                       return $1;
-               }
-       }
-       close(FLAGS);
-       return undef;
-}
-
-sub resolve_directory {
-       use File::Spec;
-       return File::Spec->rel2abs($_[0]);
-}
-
-sub yesno {
-       my ($flag,$prompt) = @_;
-       print "$prompt [\033[1;32m$config{$flag}\033[0m] -> ";
-       chomp($tmp = <STDIN>);
-       if ($tmp eq "") { $tmp = $config{$flag} }
-
-       if (($tmp eq "") || ($tmp =~ /^y/i)) {
-               $config{$flag} = "y";
-       } else {
-               $config{$flag} = "n";
-        }
-       return;
-}
-
 sub write_static_modules_makefile {
        # Modules Makefile..
        print "Writing \033[1;32msrc/modules/Makefile\033[0m\n";
@@ -1484,6 +1156,8 @@ HEADER
                        $liflags = getlinkerflags("src/modules/m_".$i.".cpp");
                        $deps = getdependencies("src/modules/m_".$i.".cpp");
 
+                       #print "file: $i: cmflags=$cmflags; liflags=$liflags; deps=$deps\n";
+
                        ###
                        # Write Entry to the Makefile
                        ###
@@ -1511,6 +1185,7 @@ EOENT
                        print "done\n";
                }
        }
+
        print MODLIST "{0}};\n\n#endif\n";
        close(MODLIST);
 }
@@ -1551,23 +1226,61 @@ EOF
        my $crud = "";
 
        foreach $i (@modlist) {
-       ###
-       # Write Entry to the MakeFile
-       ###
-       $cmflags = getcompilerflags("src/modules/m_".$i.".cpp");
-       $liflags = getlinkerflags("src/modules/m_".$i.".cpp");
-       $deps = getdependencies("src/modules/m_".$i.".cpp");
-       print FILEHANDLE <<EOCHEESE;
+               ###
+               # Write Entry to the MakeFile
+               ###
+               $cmflags = getcompilerflags("src/modules/m_".$i.".cpp");
+               $liflags = getlinkerflags("src/modules/m_".$i.".cpp");
+               $deps = getdependencies("src/modules/m_".$i.".cpp");
+       
+               #print "file: $i: cmflags=$cmflags; liflags=$liflags; deps=$deps\n";
+       
+               print FILEHANDLE <<EOCHEESE;
 m_$i.so: m_$i.cpp ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h ../../include/inspircd_config.h ../../include/inspircd.h ../../include/configreader.h $deps
        \$(CC) -pipe -I../../include \$(FLAGS) $cmflags -export-dynamic -c m_$i.cpp
        \$(CC) -pipe \$(FLAGS) -shared $liflags -o m_$i.so m_$i.o $extra
 
 EOCHEESE
-       $crud = $crud . "       install -m 0700 m_$i.so \$(MODPATH)\n";
+               $crud = $crud . "       install -m \$(INSTMODE) m_$i.so \$(MODPATH)\n";
 ###
-       # End Write Entry to the MakeFile
-       ###
+               # End Write Entry to the MakeFile
+               ###
        }
+
+       opendir(DIRHANDLE, "src/modules");
+       foreach $name (sort readdir(DIRHANDLE)) {
+               if ($name =~ /^m_(.+?)$/) {
+                       $crapola = "";
+                       $crap3 = "";
+                       # A module made of multiple files, in a dir, e.g. src/modules/m_spanningtree/
+                       if (opendir(MDIRHANDLE, "src/modules/$name") != 0) {
+                               print "Composing Makefile rules for directory \033[1;32m$name\033[0m... ";
+                               my $i = 0;
+                               print FILEHANDLE "$name.so: ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h ../../include/inspircd_config.h ../../include/inspircd.h ../../include/configreader.h"; 
+                               foreach $fname (sort readdir(MDIRHANDLE)) {
+                                       if ($fname =~ /\.cpp$/) {
+                                               $cmflags = getcompilerflags("src/modules/$name/$fname");
+                                               $liflags = getlinkerflags("src/modules/$name/$fname");
+                                               $deps = getdependencies("src/modules/$name/$fname");
+                                               $oname = $fname;
+                                               $oname =~ s/\.cpp$/.o/g;
+                                               print FILEHANDLE " $name/$oname";
+                                               $crapola = $crapola .  "$name/$oname: $name/$fname ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h ../../include/inspircd_config.h ../../include/inspircd.h ../../include/configreader.h $deps\n";
+                                               $crapola = $crapola .  "        \$(CC) -pipe -I../../include -I. \$(FLAGS) $cmflags -export-dynamic -o $name/$oname -c $name/$fname\n\n";
+                                               $crap3 = $crap3 . " $name/$oname";
+                                               $i++;
+                                       }
+                               }
+                               print "(\033[1;32m$i files found\033[0m)\n";
+                               print FILEHANDLE "\n    \$(CC) -pipe \$(FLAGS) -shared $liflags -o $name.so $crap3\n";
+                               print FILEHANDLE "\n$crapola\n";
+                               closedir(MDIRHANDLE);
+                               $crud = $crud . "       install -m \$(INSTMODE) $name.so \$(MODPATH)\n";
+                       }
+               }
+       }
+       closedir(DIRHANDLE);
+
        print FILEHANDLE "modinst:\n    \@echo \"Installing modules...\"\n" . $crud;
 }
 
@@ -1677,7 +1390,7 @@ xline.o: xline.cpp ../include/base.h ../include/xline.h ../include/inspircd.h ..
 inspstring.o: inspstring.cpp ../include/base.h ../include/inspstring.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c inspstring.cpp
 
-dns.o: dns.cpp ../include/base.h ../include/dns.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
+dns.o: dns.cpp ../include/base.h ../include/dns.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c dns.cpp
 
 base.o: base.cpp ../include/base.h ../include/globals.h ../include/inspircd_config.h
@@ -1686,16 +1399,16 @@ base.o: base.cpp ../include/base.h ../include/globals.h ../include/inspircd_conf
 configreader.o: configreader.cpp ../include/base.h ../include/configreader.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c configreader.cpp
 
-commands.o: commands.cpp ../include/base.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h $srcobjs
+commands.o: commands.cpp ../include/base.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h $srcobjs
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c commands.cpp $cmdobjs
 
 dynamic.o: dynamic.cpp ../include/base.h ../include/dynamic.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c dynamic.cpp
 
-users.o: users.cpp ../include/base.h ../include/users.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
+users.o: users.cpp ../include/base.h ../include/users.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c users.cpp
 
-modules.o: modules.cpp ../include/base.h ../include/modules.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
+modules.o: modules.cpp ../include/base.h ../include/modules.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c modules.cpp
 
 wildcard.o: wildcard.cpp ../include/base.h ../include/wildcard.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
@@ -1704,10 +1417,10 @@ wildcard.o: wildcard.cpp ../include/base.h ../include/wildcard.h ../include/insp
 socket.o: socket.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c socket.cpp
        
-inspsocket.o: inspsocket.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h
+inspsocket.o: inspsocket.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c inspsocket.cpp
 
-timer.o: timer.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h
+timer.o: timer.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c timer.cpp
 
 EOM
@@ -1804,7 +1517,7 @@ libIRCDmode.so: mode.cpp ../include/base.h ../include/mode.h ../include/inspircd
        \${MAKE} -C "modes" DIRNAME="src/modes" CC="\$(CC)" \$(MAKEARGS) CPPFILES="\$(CPPFILES)"
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDmode.so mode.o modes/modeclasses.a
 
-libIRCDxline.so: xline.cpp ../include/base.h ../include/xline.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
+libIRCDxline.so: xline.cpp ../include/base.h ../include/xline.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c xline.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDxline.so xline.o
 
@@ -1812,7 +1525,7 @@ libIRCDstring.so: inspstring.cpp ../include/base.h ../include/inspstring.h ../in
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c inspstring.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDstring.so inspstring.o
 
-libIRCDasyncdns.so: dns.cpp ../include/base.h ../include/dns.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
+libIRCDasyncdns.so: dns.cpp ../include/base.h ../include/dns.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c dns.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDasyncdns.so dns.o
 
@@ -1824,7 +1537,7 @@ libIRCDconfigreader.so: configreader.cpp ../include/base.h ../include/configread
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c configreader.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDconfigreader.so configreader.o
 
-libIRCDcommands.so: commands.cpp ../include/base.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
+libIRCDcommands.so: commands.cpp ../include/base.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c commands.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDcommands.so commands.o
 
@@ -1832,11 +1545,11 @@ libIRCDdynamic.so: dynamic.cpp ../include/base.h ../include/dynamic.h ../include
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c dynamic.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDdynamic.so dynamic.o
 
-libIRCDusers.so: users.cpp ../include/base.h ../include/users.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
+libIRCDusers.so: users.cpp ../include/base.h ../include/users.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c users.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDusers.so users.o
 
-libIRCDmodules.so: modules.cpp ../include/base.h ../include/modules.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h
+libIRCDmodules.so: modules.cpp ../include/base.h ../include/modules.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c modules.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDmodules.so modules.o
 
@@ -1848,11 +1561,11 @@ libIRCDsocket.so: socket.cpp ../include/base.h ../include/inspircd.h ../include/
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c socket.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDsocket.so socket.o
 
-libIRCDinspsocket.so: inspsocket.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h
+libIRCDinspsocket.so: inspsocket.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c inspsocket.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDinspsocket.so inspsocket.o
 
-libIRCDtimer.so: timer.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h
+libIRCDtimer.so: timer.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h ../include/timer.h
        \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c timer.cpp
        \$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDtimer.so timer.o
 
@@ -1868,78 +1581,3 @@ ITEM
        close(FH);
 }
 
-sub showhelp
-{
-       chomp($PWD = `pwd`);
-       print "Usage: configure [options]
-
-*** NOTE: NON-INTERACTIVE CONFIGURE IS *NOT* SUPPORTED BY THE ***
-*** INSPIRCD DEVELOPMENT TEAM. DO NOT ASK FOR HELP REGARDING  ***
-***     NON-INTERACTIVE CONFIGURE ON THE FORUMS OR ON IRC!    ***
-
-Options: [defaults in brackets after descriptions]
-
-When no options are specified, interactive
-configuration is started and you must specify
-any required values manually. If one or more
-options are specified, non-interactive configuration
-is started, and any omitted values are defaulted.
-
-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-max-channels=[n]      Specify max. number of channels
-                               a normal user may join [20]
-  --with-max-oper-channels=[n] Specify max. number of channels
-                               an irc operator may join [60]
-  --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]
-  --disable-epoll              Do not enable epoll(), fall back
-                               to select() [not set]
-  --disable-kqueue             Do not enable kqueue(), fall back
-                               to select() [not set]
-  --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]
-  --with-cc=[filename]         Use an alternative g++ binary to
-                               build InspIRCd [g++]
-  --with-ident-length=[n]      Specify max length of ident [12]
-  --with-quit-length=[n]       Specify max length of quit [200]
-  --with-topic-length=[n]      Specify max length of topic [350]
-  --with-kick-length=[n]       Specify max length of kick [200]
-  --with-gecos-length=[n]      Specify max length of gecos [150]
-  --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 (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);
-}