X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=configure;h=884a5aab7a38250bc8958a05489da9839ecd1732;hb=e0e8b0df5a8fe0070d198c46991bfd371548f00c;hp=71f72d6971b90eeaf175e196bab95b3fd5e661d8;hpb=0c94779a6ebfc8369fc057e36fa02cd481748552;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/configure b/configure index 71f72d697..884a5aab7 100755 --- a/configure +++ b/configure @@ -16,6 +16,7 @@ $this = resolve_directory($topdir); # PWD, Regardless. @modlist = (); # Declare for Module List.. %config = (); # Initiate Configuration Hash.. $config{ME} = resolve_directory($topdir); # Present Working Directory +$config{BASE_DIR} = $config{ME}; # Use CWD as 'Base' Directory. $config{CONFIG_DIR} = resolve_directory($config{ME}."/conf"); # Configuration Directory $config{MODULE_DIR} = resolve_directory($config{ME}."/modules"); # Modules Directory $config{BINARY_DIR} = resolve_directory($config{ME}."/bin"); # Binary Directory @@ -24,11 +25,13 @@ $config{OPTIMITEMP} = "0"; # Default Opti $config{OPTIMISATI} = "-g"; # Optimisation Flag $config{NICK_LENGT} = "31"; # Default Nick Length $config{CHAN_LENGT} = "64"; # Default Channel Name Length -$config{MAX_CHANNE} = "20"; # Default Max. Channels per user.. +$config{MAX_CHANNE} = "20"; # Default Max. Channels per user +$config{MAX_OPERCH} = "60"; # Default Max. Channels per oper $config{MAXI_MODES} = "20"; # Default Max. Number of Modes set at once. $config{HAS_STRLCPY} = "false"; # strlcpy Check. $config{USE_KQUEUE} = "y"; # kqueue enabled $config{USE_EPOLL} = "y"; # epoll enabled +$config{THREADED_DNS} = "n"; # threaded dns (experimental) $config{STATIC_LINK} = "no"; # are doing static modules? chomp($config{MAX_CLIENT_T} = `sh -c \"ulimit -n\"`); # FD Limit chomp($config{GCCVER} = `gcc -dumpversion | cut -c 1`); # Major GCC Version @@ -150,6 +153,13 @@ if (!$fail) } close(EPOLL); } +if ($has_epoll) { + my $kernel = `uname -r`; + chomp($kernel); + if (($kernel =~ /2\.0/) || ($kernel =~ /2\.2/) || ($kernel =~ /2\.4/)) { + $has_epoll = 0; + } +} print "yes\n" if $has_epoll == 1; print "no\n" if $has_epoll == 0; @@ -189,6 +199,11 @@ Your operating system is: \033[1;32m$config{OSNAME}\033[0m ($wholeos), fdmax: $c $config{CHANGE_COMPILER} = "n"; print "I have detected the following compiler: \033[1;32m$config{CC}\033[0m (version \033[1;32m$config{GCCVER}.$config{GCC34}\033[0m)\n"; +if ($config{GCCVER} < 3) +{ + print "\033[1;32mIMPORTANT!\033[0m A GCC 2.x compiler has been detected, and +should NOT be used. You should probably specify a newer compiler.\n"; +} yesno(CHANGE_COMPILER,"Do you want to change the compiler?"); if ($config{CHANGE_COMPILER} =~ /y/i) { @@ -211,6 +226,15 @@ if ($config{CHANGE_COMPILER} =~ /y/i) print "\n"; # Directory Settings.. +my $tmpbase = $config{BASE_DIR}; +dir_check("do you wish to install the InspIRCd base", "BASE_DIR"); +if ($tmpbase ne $config{BASE_DIR}) { + $config{CONFIG_DIR} = resolve_directory($config{BASE_DIR}."/conf"); # Configuration Directory + $config{MODULE_DIR} = resolve_directory($config{BASE_DIR}."/modules"); # Modules Directory + $config{BINARY_DIR} = resolve_directory($config{BASE_DIR}."/bin"); # Binary Directory + $config{LIBRARY_DIR} = resolve_directory($config{BASE_DIR}."/lib"); # Library Directory +} + dir_check("are the configuration files", "CONFIG_DIR"); dir_check("are the modules to be compiled to", "MODULE_DIR"); dir_check("is the IRCd binary to be placed", "BINARY_DIR"); @@ -231,6 +255,9 @@ if (!$chose_hiperf) print "not to enable one. Defaulting to select() engine.\n\n"; } +yesno(THREADED_DNS,"Would you like to enable the experimental multi-threaded DNS lookup?"); +print "\n"; + print "\nThe following questions will ask you for various figures relating\n"; print "To your IRCd install. Please note that these should usually be left\n"; print "as defaults unless you have a real reason to change them. If they\n"; @@ -304,7 +331,7 @@ while (!$continue) { $continue = 0; while (!$continue) { - print "What is the maximum number of channels a user may join at any one time?\n"; + 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 = ); if ($var eq "") { $var = $config{MAX_CHANNE}; } @@ -318,6 +345,20 @@ while (!$continue) { } } +$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 = ); + 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"; @@ -462,10 +503,13 @@ if ($var eq "1") { } 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}\n"; print "\033[0mConfig path:\033[1;32m\t\t\t$config{CONFIG_DIR}\n"; print "\033[0mModule path:\033[1;32m\t\t\t$config{MODULE_DIR}\n"; +print "\033[0mLibrary path:\033[1;32m\t\t\t$config{LIBRARY_DIR}\n"; print "\033[0mMax connections:\033[1;32m\t\t$config{MAX_CLIENT}\n"; print "\033[0mMax User Channels:\033[1;32m\t\t$config{MAX_CHANNE}\n"; +print "\033[0mMax Oper Channels:\033[1;32m\t\t$config{MAX_OPERCH}\n"; print "\033[0mMax nickname length:\033[1;32m\t\t$config{NICK_LENGT}\n"; print "\033[0mMax channel length:\033[1;32m\t\t$config{CHAN_LENGT}\n"; print "\033[0mMax mode length:\033[1;32m\t\t$config{MAXI_MODES}\n"; @@ -478,7 +522,8 @@ print "\033[0mMax away length:\033[1;32m\t\t$config{MAX_AWAY}\n"; print "\033[0mGCC Version Found:\033[1;32m\t\t$config{GCCVER}.$config{GCC34}\n"; print "\033[0mOptimatizaton 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\n"; +print "\033[0mStatic modules:\033[1;32m\t\t\t$config{STATIC_LINK}\033[0m\n"; +print "\033[0mMultithread DNS:\033[1;32m\t\t$config{THREADED_DNS}\033[0m\n\n"; makecache(); writefiles(); @@ -592,7 +637,7 @@ sub dir_check { sub getosflags { if ($config{OSNAME} =~ /BSD$/) { - $config{LDLIBS} = "-Ldl"; + $config{LDLIBS} = "-Ldl -lstdc++"; $config{FLAGS} = "-fPIC -frtti $OPTIMISATI -Wall -Woverloaded-virtual $config{OPTIMISATI}"; $config{MAKEPROG} = "gmake"; if ($config{OSNAME} eq "OpenBSD") { @@ -607,7 +652,7 @@ sub getosflags { } } } else { - $config{LDLIBS} = "-ldl"; + $config{LDLIBS} = "-ldl -lstdc++"; $config{FLAGS} = "-fPIC -frtti $OPTIMISATI -Wall -Woverloaded-virtual $config{OPTIMISATI}"; $config{MAKEPROG} = "make"; if ($config{OSNAME} =~ /CYGWIN/) { @@ -677,6 +722,7 @@ sub writefiles { #define NICKMAX $NL #define CHANMAX $CL #define MAXCHANS $config{MAX_CHANNE} +#define OPERMAXCHANS $config{MAX_OPERCH} #define MAXMODES $config{MAXI_MODES} #define IDENTMAX $config{MAX_IDENT} #define MAXQUIT $config{MAX_QUIT} @@ -715,6 +761,9 @@ EOF if ($config{HAS_STRLCPY} eq "true") { print FILEHANDLE "#define HAS_STRLCPY\n"; } + if ($config{THREADED_DNS} =~ /y/i) { + print FILEHANDLE "#define THREADED_DNS\n"; + } my $use_hiperf = 0; if (($has_kqueue) && ($config{USE_KQUEUE} eq "y")) { print FILEHANDLE "#define USE_KQUEUE\n"; @@ -756,6 +805,9 @@ EOF } opendir(DIRHANDLE, $this); + if ($config{THREADED_DNS} =~ /y/i) { + $config{LDLIBS} = $config{LDLIBS} . " -pthread"; + } foreach $name (sort readdir(DIRHANDLE)) { if ($name =~ /^\.(.+)\.inc$/) { @@ -772,6 +824,7 @@ EOF $tmp =~ s/\@MAKEPROG\@/$config{MAKEPROG}/; $tmp =~ s/\@FLAGS\@/$config{FLAGS}/; $tmp =~ s/\@LDLIBS\@/$config{LDLIBS}/; + $tmp =~ s/\@BASE_DIR\@/$config{BASE_DIR}/; $tmp =~ s/\@CONFIG_DIR\@/$config{CONFIG_DIR}/; $tmp =~ s/\@MODULE_DIR\@/$config{MODULE_DIR}/; $tmp =~ s/\@BINARY_DIR\@/$config{BINARY_DIR}/; @@ -842,7 +895,7 @@ HEADER $flags = getcompilerflags("src/modules/m_".$i.".cpp"); if ($config{OSNAME} =~ /CYGWIN/) { print FILEHANDLE <