X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=configure;h=7ac841dc752c58ab55f4c1cf2dbee89b08fa6410;hb=25d1c9c176be31458ffc264d5b6e7ccdd8660717;hp=a7106b50f549664fb96c8e3bb1967ce5cb49a263;hpb=5f661f1ae1a47a093f1e00b31efdccf60f585f90;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/configure b/configure index a7106b50f..7ac841dc7 100755 --- a/configure +++ b/configure @@ -16,24 +16,36 @@ $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 $config{LIBRARY_DIR} = resolve_directory($config{ME}."/lib"); # Library Directory $config{OPTIMITEMP} = "0"; # Default Optimisation Value $config{OPTIMISATI} = "-g"; # Optimisation Flag -$config{NICK_LENGT} = "32"; # Default Nick Length +$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 chomp($config{GCC34} = `gcc -dumpversion | cut -c 3`); # Minor GCC Version chomp($config{OSNAME} = `/bin/uname`); # Operating System Name $config{CC} = "g++"; # C++ compiler +$config{MAKEORDER} = "ircd mods config bininst"; # build order +$config{STATICLIBS} = ""; # library archive path +$config{MAX_IDENT} = "12"; # max ident size +$config{MAX_QUIT} = "255"; # max quit message size +$config{MAX_TOPIC} = "307"; # max topic size +$config{MAX_KICK} = "255"; # max kick message size +$config{MAX_GECOS} = "128"; # max GECOS size +$config{MAX_AWAY} = "200"; # max AWAY size if ((!$config{OSNAME}) || ($config{OSNAME} eq "")) { chomp($config{OSNAME} = `/usr/bin/uname`); @@ -63,6 +75,8 @@ if ($arg eq "-update") { # We've Loaded the cache file and all our variables.. print "Updating Files..\n"; getosflags(); + $has_epoll = $config{HAS_EPOLL}; + $has_kqueue = $config{HAS_KQUEUE}; writefiles(); print "Complete.\n"; exit; @@ -92,7 +106,7 @@ if (!$fail) { # try and find the delcaration of: # size_t strlcpy(...) - if (($line =~ /size_t(\0x9|\s)+strlcpy(\0x9|\s)+\(/) || ($line =~ /size_t(\0x9|\s)+strlcpy\(/)) + if ($line =~ /size_t(\0x9|\s)+strlcpy/) { $config{HAS_STRLCPY} = "true"; } @@ -112,7 +126,7 @@ if (!$fail) { # try and find the delcaration of: # int kqueue(void); - if (($line =~ /int(\0x9|\s)+kqueue(\0x9|\s)+\(/) || ($line =~ /int(\0x9|\s)+kqueue\(/)) + if ($line =~ /int(\0x9|\s)+kqueue/) { $has_kqueue = 1; } @@ -139,9 +153,23 @@ 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; +if ($config{OSNAME} =~ /CYGWIN/) { + $config{HAS_STRLCPY} = "true"; +} + +$config{HAS_EPOLL} = $has_epoll; +$config{HAS_KQUEUE} = $has_kqueue; + ################################################################################ # BEGIN INTERACTIVE PART # ################################################################################ @@ -168,7 +196,45 @@ 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}\n\n"; +$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) +{ + print "What command do you want to use to invoke your compiler?\n"; + print "[\033[1;32m$config{CC}\033[0m] -> "; + chomp($config{CC} = ); + if ($config{CC} eq "") { $config{CC} = "g++"; } + chomp($foo = `$config{CC} -dumpversion | cut -c 1`); + if ($foo ne "") { + chomp($config{GCCVER} = `$config{CC} -dumpversion | cut -c 1`); # we must redo these if we change + chomp($config{GCC34} = `$config{CC} -dumpversion | cut -c 3`); # the compiler path + print "Queried compiler: \033[1;32m$config{CC}\033[0m (version \033[1;32m$config{GCCVER}.$config{GCC34}\033[0m)\n"; + } + else + { + print "\033[1;32mWARNING!\033[0m Could not execute the compiler you specified. You may want to try again.\n"; + } +} + +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"); @@ -176,9 +242,11 @@ dir_check("are the IRCd libraries to be placed", "LIBRARY_DIR"); if ($has_kqueue) { yesno(USE_KQUEUE,"You are running a BSD operating system, and kqueue\nwas detected. Would you like to enable kqueue support?\nThis is likely to increase performance.\nIf you are unsure, answer yes.\n\nEnable kqueue?"); + print "\n"; } if ($has_epoll) { yesno(USE_EPOLL,"You are running a Linux 2.6+ operating system, and epoll\nwas detected. Would you like to enable epoll support?\nThis is likely to increase performance.\nIf you are unsure, answer yes.\n\nEnable epoll?"); + print "\n"; } $chose_hiperf = (($config{USE_EPOLL} eq "y") || ($config{USE_KQUEUE} eq "y")); if (!$chose_hiperf) @@ -187,6 +255,17 @@ 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"; +print "changed, then the values must be identical on all servers on your\n"; +print "network, or malfunctions and/or crashes may occur, with the exception\n"; +print "of the 'maximum number of clients' setting which may be different on\n"; +print "different servers on the network.\n\n"; + # File Descriptor Settings.. my $continue = 0; while (!$continue) { @@ -220,7 +299,7 @@ you wish to do this? It may cause the IRCd to malfunction [y/n] my $continue = 0; while (!$continue) { - print "What is the Maximum length of nicknames?\n"; + print "What is the maximum length of nicknames?\n"; print "[\033[1;32m$config{NICK_LENGT}\033[0m] -> "; chomp($var = ); if ($var eq "") { $var = $config{NICK_LENGT}; } @@ -234,9 +313,55 @@ while (!$continue) { } } -my $continue = 0; +$continue = 0; while (!$continue) { - print "What is the Maximum number of mode changes in one line?\n"; + print "What is the maximum length of channel names?\n"; + print "[\033[1;32m$config{CHAN_LENGT}\033[0m] -> "; + chomp($var = ); + 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 = ); + 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 = ); + 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 = ); if ($var eq "") { $var = $config{MAXI_MODES}; } @@ -250,14 +375,113 @@ while (!$continue) { } } +$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 = ); + 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 = ); + 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 = ); + 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 = ); + 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 = ); + 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"; + } +} + +$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 = ); + 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"; + } +} + # Code Optimisation -print "Enter the Level Of Binary optimisation. This is a number between 0 and 3 (inclusive) -The InspIRCd Team will _NOT_ support any bug reports above 0. -Also note, the IRCd behaviour will be different depending on this value. -Please read the documentation for more information. +print "Enter the Level Of Binary optimisation. This is a number between 0 and 3. +The InspIRCd Team will NOT support any bug reports above 0. Also note, +the IRCd behaviour will be different depending on this value. Please +read the documentation for more information. + +The higher the number, the more optimised your binary will be. This +value will default to 0 if you either don't enter a number, or enter +a value outside the range. -The Higher the number, the more optimised your binary will be. This value will default to 0 -If you either a) Dont enter a number, or b) Enter a value outside the range.\n"; +As always, if you are unsure, just press enter and accept the default.\n\n"; print "[\033[1;32m$config{OPTIMITEMP}\033[0m] -> "; chomp($var = ); if ($var eq "") { @@ -279,16 +503,27 @@ 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 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"; +print "\033[0mMax ident length:\033[1;32m\t\t$config{MAX_IDENT}\n"; +print "\033[0mMax quit length:\033[1;32m\t\t$config{MAX_QUIT}\n"; +print "\033[0mMax topic length:\033[1;32m\t\t$config{MAX_TOPIC}\n"; +print "\033[0mMax kick length:\033[1;32m\t\t$config{MAX_KICK}\n"; +print "\033[0mMax name length:\033[1;32m\t\t$config{MAX_GECOS}\n"; +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\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[0mMultithread DNS:\033[1;32m\t\t$config{THREADED_DNS}\033[0m\n\n"; makecache(); writefiles(); @@ -296,6 +531,28 @@ writefiles(); print "\n\n"; print "To build your server with these settings, please type '\033[1;32m$config{MAKEPROG}\033[0m' now.\n"; print "*** \033[1;32mRemember to edit your configuration files!!!\033[0m ***\n\n\n"; +if (($config{OSNAME} eq "OpenBSD") && ($config{CC} ne "eg++")) { + print "\033[1;32mWARNING!\033[0m You are running OpenBSD but you are using the base gcc package\nrather than eg++. This compile will most likely fail, but i'm letting you\ngo ahead with it anyway, just in case i'm wrong :-)\n"; +} +if ($config{OSNAME} =~ /CYGWIN/) { + print <include/inspircd_config.h"); + my $NL = $config{NICK_LENGT}+1; + my $CL = $config{CHAN_LENGT}+1; print FILEHANDLE < 3) { print FILEHANDLE "#define GCC3\n"; print FILEHANDLE "#define GCC34\n"; @@ -468,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"; @@ -482,13 +778,19 @@ EOF if (!$use_hiperf) { print FILEHANDLE "#define USE_SELECT\n"; } + print FILEHANDLE "\n#endif\n"; close(FILEHANDLE); # Create a Modules List.. my $modules = ""; foreach $i (@modlist) { - $modules .= "m_".$i.".so "; + if ($config{OSNAME} =~ /CYGWIN/) { + $modules .= "m_".$i.".o "; + } + else { + $modules .= "m_".$i.".so "; + } } chomp($modules); # Remove Redundant whitespace.. @@ -496,7 +798,16 @@ EOF # Write all .in files. my $tmp = ""; my $file = ""; + my $exe = "inspircd"; + + if ($config{OSNAME} =~ /CYGWIN/) { + $exe = "inspircd.exe"; + } + opendir(DIRHANDLE, $this); + if ($config{THREADED_DNS} =~ /y/i) { + $config{LDLIBS} = $config{LDLIBS} . " -pthread"; + } foreach $name (sort readdir(DIRHANDLE)) { if ($name =~ /^\.(.+)\.inc$/) { @@ -513,11 +824,15 @@ 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}/; $tmp =~ s/\@LIBRARY_DIR\@/$config{LIBRARY_DIR}/; $tmp =~ s/\@MODULES\@/$modules/; + $tmp =~ s/\@EXECUTABLE\@/$exe/; + $tmp =~ s/\@MAKEORDER\@/$config{MAKEORDER}/; + $tmp =~ s/\@STATICLIBS\@/$config{STATICLIBS}/; print "Writing \033[1;32m$file\033[0m\n"; open(FILEHANDLE, ">$file"); @@ -529,6 +844,16 @@ EOF # Make inspircd executable! chmod 0744, 'inspircd'; + if ($config{OSNAME} =~ /CYGWIN/) { + print "Writing static-build \033[1;32msrc/Makefile\033[0m\n"; + write_static_makefile(); + } + else { + print "Writing dynamic-build \033[1;32msrc/Makefile\033[0m\n"; + write_dynamic_makefile(); + } + + # Modules Makefile.. print "Writing \033[1;32msrc/modules/Makefile\033[0m\n"; open(FILEHANDLE, ">src/modules/Makefile"); @@ -547,18 +872,67 @@ EOF # Create a Modules List.. my $modules = ""; - my $flags = ""; + my $cmflags = ""; + my $liflags = ""; + if ($config{OSNAME} =~ /CYGWIN/) { + open(MODLIST,">include/modlist.h"); + print MODLIST <src/modules/m_".$i."_static.cpp") or die("Could not create m_".$i."_static.cpp"); + while (chomp($a = )) { + $a =~ s/init_module/$i\_init/g; + $a =~ s/Srv/$i\Srv/g; + print MUNGED "$a\n"; + } + close(MODULE); + close(MUNGED); + 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"; @@ -604,3 +991,250 @@ sub yesno { } return; } + + +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 < +# Makefile version 2 (dynamically linked core) by +# + +CC = im a cheezeball + +CXXFLAGS = -I../include \${FLAGS} + +all: aes.o command_parse.o cull_list.o userprocess.o socketengine.o socket.o hashcomp.o channels.o mode.o xline.o inspstring.o dns.o base.o inspircd_io.o message.o $cmdobjs commands.o dnsqueue.o dynamic.o users.o modules.o wildcard.o helperfuncs.o \$(MODULES) inspircd.exe + +inspircd.exe: inspircd.cpp ../include/base.h ../include/channels.h ../include/inspircd.h ../include/channels.h ../include/globals.h ../include/inspircd_config.h ../include/base.h + \$(CC) -I../include \$(FLAGS) inspircd.cpp -o inspircd.exe \$(LDLIBS) channels.o mode.o xline.o inspstring.o dns.o base.o inspircd_io.o message.o $cmdobjs commands.o dnsqueue.o dynamic.o users.o modules.o wildcard.o helperfuncs.o hashcomp.o socket.o socketengine.o userprocess.o cull_list.o command_parse.o aes.o \$(MODULES) + +cull_list.o: cull_list.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h ../include/users.h ../include/channels.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c cull_list.cpp + +command_parse.o: command_parse.cpp ../include/base.h ../include/hashcomp.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c command_parse.cpp + +userprocess.o: userprocess.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c userprocess.cpp + +socketengine.o: socketengine.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c socketengine.cpp + +hashcomp.o: hashcomp.cpp ../include/base.h ../include/hashcomp.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c hashcomp.cpp + +helperfuncs.o: helperfuncs.cpp ../include/base.h ../include/helperfuncs.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c helperfuncs.cpp + +channels.o: channels.cpp ../include/base.h ../include/channels.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c channels.cpp + +mode.o: mode.cpp ../include/base.h ../include/mode.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 mode.cpp + +xline.o: xline.cpp ../include/base.h ../include/xline.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 xline.cpp + +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 + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c dns.cpp + +base.o: base.cpp ../include/base.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c base.cpp + +inspircd_io.o: inspircd_io.cpp ../include/base.h ../include/inspircd_io.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 inspircd_io.cpp + +message.o: message.cpp ../include/base.h ../include/message.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 message.cpp + +commands.o: commands.cpp ../include/base.h ../include/commands.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h $srcobjs + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c commands.cpp $cmdobjs + +dnsqueue.o: dnsqueue.cpp ../include/base.h ../include/dnsqueue.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 dnsqueue.cpp + +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 + \$(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 + \$(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 + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c wildcard.cpp + +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 + +aes.o: aes.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c aes.cpp + +EOM + foreach my $cmd (@cmdlist) { + print FH <src/Makefile") or die("Could not write src/Makefile"); + print FH < +# Makefile version 2 (dynamically linked core) by +# + +CC = im a cheezeball + +CXXFLAGS = -I../include \${FLAGS} + +all: libIRCDaes.so libIRCDcull_list.so libIRCDuserprocess.so libIRCDsocketengine.so libIRCDsocket.so libIRCDhash.so libIRCDchannels.so libIRCDmode.so libIRCDxline.so libIRCDstring.so libIRCDasyncdns.so libIRCDbase.so libIRCDio.so libIRCDmessage.so $cmdobjs libIRCDcommands.so libIRCDdnsqueue.so libIRCDdynamic.so libIRCDusers.so libIRCDmodules.so libIRCDwildcard.so libIRCDhelper.so libIRCDcommand_parse.so inspircd + +inspircd: inspircd.cpp ../include/base.h ../include/channels.h ../include/inspircd.h ../include/channels.h ../include/globals.h ../include/inspircd_config.h ../include/socket.h + \$(CC) -I../include -Wl,--rpath -Wl,$config{LIBRARY_DIR} \$(FLAGS) -rdynamic -L. inspircd.cpp -o inspircd \$(LDLIBS) libIRCDchannels.so libIRCDmode.so libIRCDxline.so libIRCDstring.so libIRCDasyncdns.so libIRCDbase.so libIRCDio.so libIRCDmessage.so libIRCDcommands.so libIRCDdnsqueue.so libIRCDdynamic.so libIRCDusers.so libIRCDmodules.so libIRCDwildcard.so libIRCDhelper.so libIRCDhash.so libIRCDsocket.so libIRCDsocketengine.so libIRCDuserprocess.so libIRCDcull_list.so libIRCDcommand_parse.so libIRCDaes.so + +libIRCDsocketengine.so: socketengine.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c socketengine.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDsocketengine.so socketengine.o + +libIRCDcommand_parse.so: command_parse.cpp ../include/base.h ../include/hashcomp.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c command_parse.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDcommand_parse.so command_parse.o + +libIRCDcull_list.so: cull_list.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h ../include/users.h ../include/channels.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c cull_list.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDcull_list.so cull_list.o + +libIRCDuserprocess.so: userprocess.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c userprocess.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDuserprocess.so userprocess.o + +libIRCDhash.so: hashcomp.cpp ../include/base.h ../include/hashcomp.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c hashcomp.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDhash.so hashcomp.o + +libIRCDhelper.so: helperfuncs.cpp ../include/base.h ../include/helperfuncs.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c helperfuncs.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDhelper.so helperfuncs.o + +libIRCDchannels.so: channels.cpp ../include/base.h ../include/channels.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c channels.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDchannels.so channels.o + +libIRCDmode.so: mode.cpp ../include/base.h ../include/mode.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 mode.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDmode.so mode.o + +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 + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c xline.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDxline.so xline.o + +libIRCDstring.so: 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 + \$(CC) -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 + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c dns.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDasyncdns.so dns.o + +libIRCDbase.so: base.cpp ../include/base.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c base.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDbase.so base.o + +libIRCDio.so: inspircd_io.cpp ../include/base.h ../include/inspircd_io.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 inspircd_io.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDio.so inspircd_io.o + +libIRCDmessage.so: message.cpp ../include/base.h ../include/message.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 message.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDmessage.so message.o + +libIRCDcommands.so: commands.cpp ../include/base.h ../include/commands.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h $srcobjs + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c commands.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDcommands.so commands.o $cmdobjs + +libIRCDdnsqueue.so: dnsqueue.cpp ../include/base.h ../include/dnsqueue.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 dnsqueue.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDdnsqueue.so dnsqueue.o + +libIRCDdynamic.so: 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 + \$(CC) -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 + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c users.cpp + \$(CC) -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 + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c modules.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDmodules.so modules.o + +libIRCDwildcard.so: wildcard.cpp ../include/base.h ../include/wildcard.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 wildcard.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDwildcard.so wildcard.o + +libIRCDsocket.so: 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 + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDsocket.so socket.o + +libIRCDaes.so: aes.cpp ../include/base.h ../include/inspircd.h ../include/globals.h ../include/inspircd_config.h + \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c aes.cpp + \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDaes.so aes.o + +EOM + foreach my $cmd (@cmdlist) { + print FH <