]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
Support CIDR, CIDR zline, /oper and CIDR <connect> tags. NOTE: With CIDR oper, ident...
[user/henk/code/inspircd.git] / configure
index 33a7027533ef62dfc98ce9fc29ada1d9ec86ac0c..ceac058476349881f291d5eb3ca62a17168e4f50 100755 (executable)
--- a/configure
+++ b/configure
@@ -38,13 +38,13 @@ $config{HAS_STDINT}         = "false";                                              # stdint.h check
 $config{HAS_EXECINFO}       = "0";                                             # execinfo.h Check.
 $config{USE_KQUEUE}         = "y";                                             # kqueue enabled
 $config{USE_EPOLL}          = "y";                                             # epoll enabled
-$config{THREADED_DNS}       = "n";                                             # threaded dns (experimental)
+$config{THREADED_DNS}       = "n";                                             # threaded dns
 $config{IPV6}               = "n";                                             # IPv6 support (experimental)
+$config{SUPPORT_IP6LINKS}   = "y";                                             # IPv4 supporting IPv6 links (experimental)
 $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
-chomp($config{GCC34}        = `g++ -dumpversion | cut -c 3`);                  # Minor GCC Version
 chomp($config{OSNAME}       = `/bin/uname`);                                   # Operating System Name
 $config{CC}                = "g++";                                            # C++ compiler
 $config{MAKEORDER}         = "ircd mods";                                      # build order
@@ -63,7 +63,7 @@ $config{HAS_OPENSSL} = $1;
 
 if ($config{GCCVER} eq "") {
        print "g++ was not found! You require g++ (the GNU C++ compiler, part of GCC) to build InspIRCd!\n";
-       return 0;
+       exit;
 }
 
 # Minihack! Convert Cygwin to 'Cyg-Static' so i can
@@ -303,7 +303,7 @@ if ($rev eq "r0") {
 print ".\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";
+print "I have detected the following compiler: \033[1;32m$config{CC}\033[0m (version \033[1;32m$config{GCCVER}.x\033[0m)\n";
 
 while (($config{GCCVER} < 3) || ($config{GCCVER} eq "")) {
        print "\033[1;32mIMPORTANT!\033[0m A GCC 2.x compiler has been detected, and
@@ -318,9 +318,8 @@ should NOT be used. You should probably specify a newer compiler.\n\n";
                }
                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";
+                       chomp($config{GCCVER}       = `$config{CC} -dumpversion | cut -c 1`); # we must redo these if we change compilers
+                       print "Queried compiler: \033[1;32m$config{CC}\033[0m (version \033[1;32m$config{GCCVER}.x\033[0m)\n";
                        if ($config{GCCVER} < 3) {
                                print "\033[1;32mGCC 2.x WILL NOT WORK!\033[0m. Let's try that again, shall we?\n";
                        }
@@ -362,11 +361,16 @@ 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?");
+yesno(IPV6,"Would you like to build InspIRCd with IPv6 support?");
 print "\n";
 
-yesno(IPV6,"Would you like to enable IPv6 support?");
-print "\n";
+if ($config{IPV6} eq "y") {
+       print "You have chosen to build an \033[1;32mIPV6-only\033[0m server.\nTo accept IPV4 users, you must use the '::ffff:' notation of addresses.\n\n";
+       $config{SUPPORT_IP6LINKS} = "y";
+} else {
+       yesno(SUPPORT_IP6LINKS,"You have chosen to build an \033[1;32mIPV4-only\033[0m server.\nWould you like to enable support for linking to IPV6-enabled\nInspIRCd servers which are using '::ffff:' notation?\nIf you are using a recent operating\nsystem and are unsure, answer yes.");
+       print "\n";
+}
 
 if (($config{HAS_GNUTLS} eq "y") && ($config{HAS_OPENSSL} eq "y")) {
        print "I have detected both GnuTLS and OpenSSL on your system.\n";
@@ -656,28 +660,29 @@ 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";
-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[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";
 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[0mMultithread DNS:\033[1;32m\t\t$config{THREADED_DNS}\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";
 
@@ -871,8 +876,7 @@ sub getosflags {
                        # compile as this standard version is 2.95.3!
                        if ($foo ne "") {
                                $config{CC} = "eg++";
-                               chomp($config{GCCVER}       = `eg++ -dumpversion | cut -c 1`); # we must redo these if we change
-                               chomp($config{GCC34}        = `eg++ -dumpversion | cut -c 3`); # the compiler path
+                               chomp($config{GCCVER}       = `eg++ -dumpversion | cut -c 1`); # we must redo these if we change the compiler path
                        }
                }
        } else {
@@ -1007,18 +1011,8 @@ EOF
                if ($config{STATIC_LINK} eq "yes") {
                        print FILEHANDLE "#define STATIC_LINK\n";
                }
-               if ($config{GCCVER} > 3) {
+               if ($config{GCCVER} >= 3) {
                        print FILEHANDLE "#define GCC3\n";
-                       print FILEHANDLE "#define GCC34\n";
-               }
-               else
-               {
-                       if ($config{GCCVER} == 3) {
-                               print FILEHANDLE "#define GCC3\n";
-                               if ($config{GCC34} > 3) {
-                                       print FILEHANDLE "#define GCC34\n";
-                               }
-                       }
                }
                if ($config{HAS_STRLCPY} eq "true") {
                        print FILEHANDLE "#define HAS_STRLCPY\n";
@@ -1029,27 +1023,49 @@ EOF
                if ($config{THREADED_DNS} =~ /y/i) {
                        print FILEHANDLE "#define THREADED_DNS\n";
                }
-               if ($config{IPV6} =~/y/i) {
+               if ($config{IPV6} =~ /y/i) {
                        print FILEHANDLE "#define IPV6\n";
                }
+               if ($config{SUPPORT_IP6LINKS} =~ /y/i) {
+                       print FILEHANDLE "#define SUPPORT_IP6LINKS\n";
+               }
                my $use_hiperf = 0;
                if (($has_kqueue) && ($config{USE_KQUEUE} eq "y")) {
                        print FILEHANDLE "#define USE_KQUEUE\n";
+                       $se = "socketengine_kqueue";
                        $use_hiperf = 1;
                }
                if (($has_epoll) && ($config{USE_EPOLL} eq "y")) {
                        print FILEHANDLE "#define USE_EPOLL\n";
+                       $se = "socketengine_epoll";
                        $use_hiperf = 1;
                }
                # user didn't choose either epoll or select for their OS.
                # default them to USE_SELECT (ewwy puke puke)
                if (!$use_hiperf) {
                        print FILEHANDLE "#define USE_SELECT\n";
+                       $se = "socketengine_select";
                }
                print FILEHANDLE "\n#endif\n";
                close(FILEHANDLE);
        }
 
+       if ($writeheader)
+       {
+               open(FILEHANDLE, ">include/inspircd_se_config.h");
+               print FILEHANDLE <<EOF;
+/* Auto generated by configure, do not modify or commit to svn! */
+#ifndef __CONFIGURATION_SOCKETENGINE__
+#define __CONFIGURATION_SOCKETENGINE__
+
+#include "$se.h"
+
+#endif
+EOF
+               close(FILEHANDLE);
+       }
+
+
        # Create a Modules List..
        my $modules = "";
        foreach $i (@modlist)
@@ -1251,7 +1267,7 @@ HEADER
                        print FILEHANDLE <<EOCHEESE;
 m_$i.o: .m_$i\_static.cpp ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h
        \$(CC) -pipe -I../../include \$(FLAGS) $flags -export-dynamic -c .m_$i\_static.cpp
-       mv m_$i\_static.o ../m_$i.o
+       mv .m_$i\_static.o ../m_$i.o
 
 EOCHEESE
                        ###
@@ -1364,6 +1380,15 @@ CPPFILES = \$(shell /bin/ls -l modes/ | grep '\\.cpp' | sed 's/^.* //' | grep -v
 RELCPPFILES = \$(shell /bin/ls -l modes/ | grep '\\.cpp' | sed 's/^.* /modes\\//' | grep -v svn)
 
 EOM
+
+$se = "socketengine_select";
+if (($has_kqueue) && ($config{USE_KQUEUE} eq "y")) {
+       $se = "socketengine_kqueue";
+}       
+elsif (($has_epoll) && ($config{USE_EPOLL} eq "y")) {
+       $se = "socketengine_epoll";
+}
+
        ###
        # This next section is for cygwin dynamic module builds.
        # Basically, what we do, is build the inspircd core as a library
@@ -1375,20 +1400,20 @@ EOM
 
        if ($config{OSNAME} =~ /CYGWIN/) {
                print FH <<EOM;
-all: timer.o 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 configreader.o inspsocket.o message.o $cmdobjs commands.o dnsqueue.o dynamic.o users.o modules.o wildcard.o helperfuncs.o snomasks.o inspircd.exe
+all: timer.o 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 configreader.o inspsocket.o message.o $cmdobjs commands.o dynamic.o users.o modules.o wildcard.o helperfuncs.o snomasks.o inspircd.exe
 
 inspircd.exe: inspircd.dll.a
        \$(CC) -o \$@ \$^
 
-inspircd.dll inspircd.dll.a: inspircd.o channels.o mode.o xline.o inspstring.o dns.o base.o configreader.o inspsocket.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 timer.o snomasks.o
+inspircd.dll inspircd.dll.a: inspircd.o channels.o mode.o xline.o inspstring.o dns.o base.o configreader.o inspsocket.o message.o $cmdobjs  commands.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 timer.o snomasks.o
        \$(CC) -shared -Wl,--out-implib=inspircd.dll.a -o inspircd.dll \$^
 EOM
        } else {
                print FH <<EOM;
-all: timer.o 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 configreader.o inspsocket.o message.o $cmdobjs commands.o dnsqueue.o dynamic.o users.o modules.o wildcard.o helperfuncs.o snomasks.o \$(MODULES) inspircd.exe
+all: timer.o 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 configreader.o inspsocket.o message.o $cmdobjs commands.o dynamic.o users.o modules.o wildcard.o helperfuncs.o snomasks.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 inspsocket.o configreader.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 timer.o snomasks.o modes/modeclasses.a \$(MODULES)
+       \$(CC) -I../include \$(FLAGS) inspircd.cpp -o inspircd.exe \$(LDLIBS) channels.o mode.o xline.o inspstring.o dns.o base.o inspsocket.o configreader.o message.o $cmdobjs commands.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 timer.o snomasks.o modes/modeclasses.a \$(MODULES)
 EOM
        }
 
@@ -1406,8 +1431,8 @@ command_parse.o: command_parse.cpp ../include/base.h ../include/hashcomp.h ../in
 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
+socketengine.o: $se.cpp socketengine.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h ../include/$se.h
+       \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c socketengine.cpp $se.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
@@ -1443,9 +1468,6 @@ message.o: message.cpp ../include/base.h ../include/message.h ../include/inspirc
 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
 
@@ -1505,6 +1527,14 @@ if (($config{OSNAME} !~ /Linux/i) && ($config{HAS_EXECINFO} eq "1")) {
        $extra = "";
 }
 
+$se = "socketengine_select";
+if (($has_kqueue) && ($config{USE_KQUEUE} eq "y")) {
+       $se = "socketengine_kqueue";
+}
+elsif (($has_epoll) && ($config{USE_EPOLL} eq "y")) {
+       $se = "socketengine_epoll";
+}
+
        open(FH,">src/Makefile") or die("Could not write src/Makefile");
        print FH <<EOM;
 # Insp Makefile :p
@@ -1520,14 +1550,14 @@ CXXFLAGS = -I../include \${FLAGS}
 CPPFILES = \$(shell /bin/ls -l modes/ | grep '\\.cpp' | sed 's/^.* //' | grep -v svn)
 RELCPPFILES = \$(shell /bin/ls -l modes/ | grep '\\.cpp' | sed 's/^.* /modes\\//' | grep -v svn)
 
-all: libIRCDtimer.so 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 libIRCDconfigreader.so libIRCDinspsocket.so libIRCDmessage.so $cmdobjs libIRCDcommands.so libIRCDdnsqueue.so libIRCDdynamic.so libIRCDusers.so libIRCDmodules.so libIRCDwildcard.so libIRCDhelper.so libIRCDcommand_parse.so libIRCDsnomasks.so inspircd
+all: libIRCDtimer.so 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 libIRCDconfigreader.so libIRCDinspsocket.so libIRCDmessage.so $cmdobjs libIRCDcommands.so libIRCDdynamic.so libIRCDusers.so libIRCDmodules.so libIRCDwildcard.so libIRCDhelper.so libIRCDcommand_parse.so libIRCDsnomasks.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 libIRCDtimer.so 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 libIRCDconfigreader.so libIRCDinspsocket.so libIRCDmessage.so $cmdobjs libIRCDsnomasks.so libIRCDcommands.so libIRCDdnsqueue.so libIRCDdynamic.so libIRCDusers.so libIRCDmodules.so libIRCDwildcard.so libIRCDhelper.so libIRCDcommand_parse.so
-       \$(CC) -I../include $extra -Wl,--rpath -Wl,/usr/local/lib -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 libIRCDconfigreader.so libIRCDinspsocket.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 libIRCDtimer.so libIRCDsnomasks.so
+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 libIRCDtimer.so 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 libIRCDconfigreader.so libIRCDinspsocket.so libIRCDmessage.so $cmdobjs libIRCDsnomasks.so libIRCDcommands.so libIRCDdynamic.so libIRCDusers.so libIRCDmodules.so libIRCDwildcard.so libIRCDhelper.so libIRCDcommand_parse.so
+       \$(CC) -I../include $extra -Wl,--rpath -Wl,/usr/local/lib -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 libIRCDconfigreader.so libIRCDinspsocket.so libIRCDmessage.so libIRCDcommands.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 libIRCDtimer.so libIRCDsnomasks.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
+libIRCDsocketengine.so: $se.cpp socketengine.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h ../include/$se.h
+       \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c socketengine.cpp $se.cpp
+       \$(CC) -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDsocketengine.so socketengine.o $se.o
 
 libIRCDsnomasks.so: snomasks.cpp ../include/base.h ../include/hashcomp.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/channels.h
         \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c snomasks.cpp
@@ -1590,10 +1620,6 @@ libIRCDcommands.so: commands.cpp ../include/base.h ../include/commands.h ../incl
        \$(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