X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=configure;h=7ac841dc752c58ab55f4c1cf2dbee89b08fa6410;hb=25d1c9c176be31458ffc264d5b6e7ccdd8660717;hp=88e86a22ad4cd828cbb24fa04885ece2e779fc2d;hpb=8f86d8aced8ab3e2d04f194d7d91389cda247c44;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/configure b/configure index 88e86a22a..7ac841dc7 100755 --- a/configure +++ b/configure @@ -25,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 @@ -224,11 +226,14 @@ 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"); -$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 +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"); @@ -250,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"; @@ -323,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}; } @@ -337,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"; @@ -481,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"; @@ -497,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(); @@ -696,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} @@ -734,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"; @@ -775,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$/) { @@ -839,7 +872,8 @@ EOF # Create a Modules List.. my $modules = ""; - my $flags = ""; + my $cmflags = ""; + my $liflags = ""; if ($config{OSNAME} =~ /CYGWIN/) { open(MODLIST,">include/modlist.h"); print MODLIST <) { + if ($_ =~ /^\/\* \$LinkerFlags: (.+) \*\/$/) { + close(FLAGS); + return $1; + } + } + close(FLAGS); + 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"; @@ -947,6 +995,21 @@ sub yesno { sub write_static_makefile { open(FH,">src/Makefile") or die("Could not write src/Makefile!"); + my $i = 0; + my @cmdlist = (); + opendir(DIRHANDLE, "src"); + foreach $name (sort readdir(DIRHANDLE)) { + if ($name =~ /^cmd_(.+)\.cpp$/) { + $cmdlist[$i++] = $1; + } + } + closedir(DIRHANDLE); + my $cmdobjs = ""; + my $srcobjs = ""; + foreach my $cmd (@cmdlist) { + $cmdobjs = $cmdobjs . "cmd_$cmd.o "; + $srcobjs = $srcobjs . "cmd_$cmd.cpp "; + } print FH <src/Makefile") or die("Could not write src/Makefile"); print FH <