X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=configure;h=67e5b7aab44bd327b29653cfeea35375ed3bd7ad;hb=2d7c5235370453dec0aea4a0d3aa539d7071a8f5;hp=b189c2695b845018fad31a0b17f0ead2be71de46;hpb=c1f88cfa9c653c0df9574edb6995a7385543be83;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/configure b/configure index b189c2695..67e5b7aab 100755 --- a/configure +++ b/configure @@ -1,17 +1,16 @@ #!/usr/bin/perl - +################################################### # InspIRCd Configuration Script # -# Copyright 2002-2007 The ChatSpike Development Team -# -# +# Copyright 2002-2007 The InspIRCd Development Team +# http://www.inspircd.org/wiki/index.php/Credits # -# [14:21] Brain: i know perl-fu! +# Licensed under GPL, please see the COPYING file +# for more information # # $Id$ # -######################################## - +################################################### require 5.6.0; use Socket; @@ -21,6 +20,8 @@ use Getopt::Long; # Utility functions for our buildsystem use make::utilities; use make::configure; +use make::gnutlscert; +use make::opensslcert; GetOptions ( 'enable-gnutls' => \$opt_use_gnutls, @@ -30,8 +31,10 @@ GetOptions ( 'with-nick-length=i' => \$opt_nick_length, 'with-channel-length=i' => \$opt_chan_length, 'with-max-clients=i' => \$opt_maxclients, + 'enable-ports' => \$opt_ports, 'enable-epoll' => \$opt_epoll, 'enable-kqueue' => \$opt_kqueue, + 'disable-ports' => \$opt_noports, 'disable-epoll' => \$opt_noepoll, 'disable-kqueue' => \$opt_nokqueue, 'enable-ipv6' => \$opt_ipv6, @@ -41,6 +44,7 @@ GetOptions ( 'with-ident-length=i' => \$opt_ident, 'with-quit-length=i' => \$opt_quit, 'with-topic-length=i' => \$opt_topic, + 'with-maxbuf=i' => \$opt_maxbuf, 'with-kick-length=i' => \$opt_kick, 'with-gecos-length=i' => \$opt_gecos, 'with-away-length=i' => \$opt_away, @@ -80,6 +84,7 @@ my $non_interactive = ( (defined $opt_noipv6links) || (defined $opt_kqueue) || (defined $opt_epoll) || + (defined $opt_ports) || (defined $opt_maxchans) || (defined $opt_opermaxchans) || (defined $opt_chan_length) || @@ -87,6 +92,8 @@ my $non_interactive = ( (defined $opt_use_openssl) || (defined $opt_nokqueue) || (defined $opt_noepoll) || + (defined $opt_noports) || + (defined $opt_maxbuf) || (defined $opt_use_gnutls) ); my $interactive = !$non_interactive; @@ -94,9 +101,9 @@ my $interactive = !$non_interactive; chomp($topdir = getcwd()); $this = resolve_directory($topdir); # PWD, Regardless. -@modlist = (); # Declare for Module List.. -%config = (); # Initiate Configuration Hash.. -$config{ME} = resolve_directory($topdir); # Present Working Directory +@modlist = (); # Declare for Module List.. +%config = (); # Initiate Configuration Hash.. +$config{ME} = resolve_directory($topdir); # Present Working Directory $config{BASE_DIR} = $config{ME}; @@ -105,8 +112,8 @@ if (defined $opt_base_dir) $config{BASE_DIR} = $opt_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{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 @@ -127,11 +134,13 @@ if (defined $opt_library_dir) $config{LIBRARY_DIR} = $opt_library_dir; } chomp($config{HAS_GNUTLS} = `libgnutls-config --version 2>/dev/null | cut -c 1,2,3`); # GNUTLS Version. -chomp($config{HAS_OPENSSL} = `openssl version 2>/dev/null`); # Openssl version +chomp($config{HAS_OPENSSL} = `pkg-config --modversion openssl 2>/dev/null`); # Openssl version +chomp($gnutls_ver = $config{HAS_GNUTLS}); +chomp($openssl_ver = $config{HAS_OPENSSL}); $config{USE_GNUTLS} = "n"; if (defined $opt_use_gnutls) { - $config{USE_GNUTLS} = "y"; # Use gnutls. + $config{USE_GNUTLS} = "y"; # Use gnutls. } $config{USE_OPENSSL} = "n"; # Use openssl. if (defined $opt_use_openssl) @@ -140,14 +149,14 @@ if (defined $opt_use_openssl) } # no, let's not change these. -$config{OPTIMITEMP} = "0"; # Default Optimisation Value +$config{OPTIMITEMP} = "0"; # Default Optimisation Value if (!defined $opt_disable_debug) { $config{OPTIMISATI} = "-g1"; # Optimisation Flag } else { - $config{OPTIMISATI} = "-O2"; # DEBUGGING OFF! + $config{OPTIMISATI} = "-O2"; # DEBUGGING OFF! } $config{NICK_LENGT} = "31"; # Default Nick Length @@ -166,7 +175,7 @@ if (defined $opt_modes) $config{MAXI_MODES} = $opt_modes; } $config{HAS_STRLCPY} = "false"; # strlcpy Check. -$config{HAS_STDINT} = "false"; # stdint.h check +$config{HAS_STDINT} = "false"; # stdint.h check $config{USE_KQUEUE} = "y"; # kqueue enabled if (defined $opt_kqueue) { @@ -176,7 +185,7 @@ if (defined $opt_nokqueue) { $config{USE_KQUEUE} = "n"; } -$config{USE_EPOLL} = "y"; # epoll enabled +$config{USE_EPOLL} = "y"; # epoll enabled if (defined $opt_epoll) { $config{USE_EPOLL} = "y"; @@ -185,12 +194,21 @@ if (defined $opt_noepoll) { $config{USE_EPOLL} = "n"; } +$config{USE_PORTS} = "y"; # epoll enabled +if (defined $opt_ports) +{ + $config{USE_PORTS} = "y"; +} +if (defined $opt_noports) +{ + $config{USE_PORTS} = "n"; +} $config{IPV6} = "n"; # IPv6 support (experimental) if (defined $opt_ipv6) { $config{IPV6} = "y"; } -$config{SUPPORT_IP6LINKS} = "y"; # IPv4 supporting IPv6 links (experimental) +$config{SUPPORT_IP6LINKS} = "y"; # IPv4 supporting IPv6 links (experimental) if (defined $opt_ipv6links) { $config{SUPPORT_IP6LINKS} = "y"; @@ -199,16 +217,22 @@ if (defined $opt_noipv6links) { $config{SUPPORT_IP6LINKS} = "n"; } -$config{STATIC_LINK} = "no"; # are doing static modules? +$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 +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{IS_DARWIN} = "NO"; # Is OSX? +$config{IS_DARWIN} = "NO"; # Is OSX? +$config{STARTSCRIPT} = "inspircd"; # start script? +$config{DESTINATION} = "BASE"; # Is target path. +$config{EXTRA_DIR} = ""; # Is empty. if ($config{OSNAME} =~ /darwin/i) { $config{IS_DARWIN} = "YES"; + $config{STARTSCRIPT} = "org.inspircd.plist"; # start script for OSX. + $config{DESTINATION} = "LAUNCHDPATH"; # Is OSX target. + $config{EXTRA_DIR} = " launchd_dir"; # Is OSX specific path. } $config{CC} = "g++"; # C++ compiler if (defined $opt_cc) @@ -216,15 +240,16 @@ if (defined $opt_cc) $config{CC} = $opt_cc; } $exec = $config{CC} . " -dumpversion | cut -c 1"; -chomp($config{GCCVER} = `$exec`); # Major GCC Version -$config{MAKEORDER} = "ircd mods"; # 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 +chomp($config{GCCVER} = `$exec`); # Major GCC Version +$config{MAKEORDER} = "ircd mods"; # 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 +$config{MAXBUF} = "512"; # Max buffer size if (defined $opt_ident) { $config{MAX_IDENT} = $opt_ident; @@ -250,7 +275,7 @@ if (defined $opt_away) $config{MAX_AWAY} = $opt_away; } -$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} =~ /^([-[:digit:].]+)([a-z])?(\-[a-z][0-9])?$/; $config{HAS_OPENSSL} = $1; if ($config{GCCVER} eq "") { @@ -302,6 +327,7 @@ sub update getosflags(); } $has_epoll = $config{HAS_EPOLL}; + $has_ports = $config{HAS_PORTS}; $has_kqueue = $config{HAS_KQUEUE}; writefiles(1); makecache(); @@ -332,6 +358,7 @@ sub modupdate print "Updating Files..\n"; getosflags(); $has_epoll = $config{HAS_EPOLL}; + $has_ports = $config{HAS_PORTS}; $has_kqueue = $config{HAS_KQUEUE}; writefiles(0); makecache(); @@ -370,7 +397,7 @@ sub svnupdate print "Running non-interactive configure...\n" unless $interactive; print "Checking for cache from previous configure... "; -print ((getcache() eq "true") ? "found\n" : "not found\n"); +print ((!getcache()) ? "not found\n" : "found\n"); print "Checking operating system version... "; print getosflags() . "\n"; @@ -447,10 +474,60 @@ if ($has_epoll) { if (($kernel =~ /^2\.0\./) || ($kernel =~ /^2\.2\./) || ($kernel =~ /^2\.4\./)) { $has_epoll = 0; } + else + { + # Suggestion from nenolod, weed out odd systems which have glibc built + # against 2.4 kernels (ick) + + $libcv = 0.0; + $kernelv = 0.0; + open (FH,"/lib/libc.so.6|") or $has_epoll = 0; + if ($has_epoll) + { + while (chomp($line = )) + { + if ($line =~ /GNU C Library .* version (.*?) /) + { + $libcv = $1; + } + elsif ($line =~ /Compiled on a Linux (.*?\..*?)\.* system/) + { + $kernelv = $1; + } + } + close FH; + if ($libcv < 2.3) + { + $has_epoll = 0; + printf "libc too old: $libcv... "; + } + if ($kernelv < 2.6) + { + $has_epoll = 0; + printf "libc built against older kernel $kernelv... "; + } + } + } } print "yes\n" if $has_epoll == 1; print "no\n" if $has_epoll == 0; +printf "Checking if Solaris I/O completion ports are available... "; +$has_ports = 0; +my $system = `uname -s`; +chomp ($system); +$has_ports = 1 if ($system eq "SunOS"); + +if ($has_ports) { + my $kernel = `uname -r`; + chomp($kernel); + if (($kernel !~ /^5\.1./)) { + $has_ports = 0; + } +} +print "yes\n" if $has_ports == 1; +print "no\n" if $has_ports == 0; + if (($config{OSNAME} =~ /CYGWIN/) || ($config{OSNAME} eq "CYG-STATIC")) { $config{HAS_STRLCPY} = "true"; } @@ -561,7 +638,11 @@ should NOT be used. You should probably specify a newer compiler.\n\n"; 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 ($has_ports) { + yesno(USE_PORTS,"You are running Solaris 10.\nWould you like to enable I/O completion ports support?\nThis is likely to increase performance.\nIf you are unsure, answer yes.\n\nEnable support for I/O completion ports?"); + print "\n"; + } + $chose_hiperf = (($config{USE_EPOLL} eq "y") || ($config{USE_KQUEUE} eq "y") || ($config{USE_PORTS} eq "y")); if (!$chose_hiperf) { print "No high-performance socket engines are available, or you chose\n"; print "not to enable one. Defaulting to select() engine.\n\n"; @@ -579,10 +660,12 @@ should NOT be used. You should probably specify a newer compiler.\n\n"; } if (($config{HAS_GNUTLS} eq "y") && ($config{HAS_OPENSSL} eq "y")) { - print "I have detected both GnuTLS and OpenSSL on your system.\n"; + print "I have detected both \033[1;32mGnuTLS\033[0m and \033[1;32mOpenSSL\033[0m on your system.\n"; print "I will default to GnuTLS. If you wish to use OpenSSL\n"; print "instead, you should enable the OpenSSL module yourself\n"; print "by copying it from src/modules/extra to src/modules.\n\n"; + print "Detected GnuTLS version: \033[1;32m" . $gnutls_ver . "\033[0m\n"; + print "Detected OpenSSL version: \033[1;32m" . $openssl_ver . "\033[0m\n\n"; } if ($config{HAS_GNUTLS} eq "y") { @@ -596,6 +679,9 @@ should NOT be used. You should probably specify a newer compiler.\n\n"; print "\nUsing OpenSSL SSL module.\nYou will get better performance if you move to GnuTLS in the future.\n"; } } + else { + print "\nCould not detect OpenSSL or GnuTLS. Make sure pkg-config is installed if\nyou intend to use OpenSSL, or that GnuTLS is in your path if you intend\nto use GnuTLS.\n\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"; @@ -658,17 +744,21 @@ if ($config{USE_GNUTLS} eq "y") { * Generating the Private Key may take some time, go grab a * * Coffee. Even better, to generate some more entropy if it * * is taking a while, open another console and type du / a * -* few times and get that HD going :) Then answer the * +* few times and get that HD going :) Then answer the * * Questions which follow. If you are unsure, just hit enter * *************************************************************\n\n"; - system("certtool --generate-privkey --outfile key.pem"); - system("certtool --generate-self-signed --load-privkey key.pem --outfile cert.pem"); - print "\nCertificate generation complete, copying to config directory... "; - system("mv key.pem $config{CONFIG_DIR}/key.pem"); - system("mv cert.pem $config{CONFIG_DIR}/cert.pem"); - print "Done.\n\n"; - } else { - print "SSL Certificates found, skipping.\n\n" + $failed = make_gnutls_cert(); + if ($failed) { + print "\n\033[1;32mCertificate generation failed!\033[0m\n\n"; + } else { + print "\nCertificate generation complete, copying to config directory... "; + system("mv key.pem $config{CONFIG_DIR}/key.pem"); + system("mv cert.pem $config{CONFIG_DIR}/cert.pem"); + print "Done.\n\n"; + } + } + else { + print "SSL Certificates found, skipping.\n\n"; } } else @@ -697,10 +787,9 @@ if ($config{USE_GNUTLS} eq "y") { print "SSL Certificates Not found, Generating.. \n\n ************************************************************* * Generating the certificates may take some time, go grab a * -* coffee, or something. * +* coffee, or something. * *************************************************************\n\n"; - system("openssl req -x509 -nodes -newkey rsa:1024 -keyout key.pem -out cert.pem"); - system("openssl dhparam -out dhparams.pem 1024"); + make_openssl_cert(); print "\nCertificate generation complete, copying to config directory... "; system("mv key.pem $config{CONFIG_DIR}/key.pem"); system("mv cert.pem $config{CONFIG_DIR}/cert.pem"); @@ -751,7 +840,7 @@ FOO2 ################################################################################ sub getcache { # Retrieves the .config.cache file, and loads values into the main config hash. - open(CACHE, ".config.cache") or return undef; + open(CACHE, ".config.cache") or return 0; while () { chomp; # Ignore Blank lines, and comments.. @@ -763,7 +852,7 @@ sub getcache { $config{$key} = $1; } close(CONFIG); - return "true"; + return 1; } sub makecache { @@ -832,13 +921,13 @@ sub dir_check { sub getosflags { $config{LDLIBS} = "-lstdc++"; - $config{FLAGS} = "-fno-strict-aliasing -fPIC -Wall -Woverloaded-virtual $config{OPTIMISATI}"; - $config{DEVELOPER} = "-fno-strict-aliasing -fPIC -Wall -Woverloaded-virtual -g"; + $config{FLAGS} = "-fno-strict-aliasing -fPIC -Wall -Woverloaded-virtual -Wno-deprecated $config{OPTIMISATI}"; + $config{DEVELOPER} = "-fno-strict-aliasing -fPIC -Wall -Woverloaded-virtual -Wno-deprecated -g"; $SHARED = "-Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared"; $config{MAKEPROG} = "make"; if ($config{OSNAME} =~ /darwin/i) { - $config{FLAGS} = "-DDARWIN -frtti -fPIC -Wall -Woverloaded-virtual $config{OPTIMISATI}"; + $config{FLAGS} = "-DDARWIN -frtti -fPIC -Wall -Woverloaded-virtual -Wno-deprecated $config{OPTIMISATI}"; $SHARED = "-bundle -twolevel_namespace -undefined dynamic_lookup"; $config{LDLIBS} = "-ldl -lstdc++"; } @@ -858,17 +947,18 @@ sub getosflags { if ($config{OSNAME} =~ /Linux/i) { $config{LDLIBS} = "-ldl -lstdc++"; - $config{FLAGS} = "-fno-strict-aliasing -fPIC -Wall -Woverloaded-virtual $config{OPTIMISATI}"; + $config{FLAGS} = "-fno-strict-aliasing -fPIC -Wall -Woverloaded-virtual -Wno-deprecated $config{OPTIMISATI}"; $config{FLAGS} .= " " . $ENV{CXXFLAGS} if exists($ENV{CXXFLAGS}); + $config{LDLIBS} .= " " . $ENV{LDLIBS} if exists($ENV{LDLIBS}); $config{MAKEPROG} = "make"; if ($config{OSNAME} =~ /CYGWIN/) { - $config{FLAGS} = "-fno-strict-aliasing -Wall -Woverloaded-virtual $config{OPTIMISATI}"; + $config{FLAGS} = "-fno-strict-aliasing -Wall -Woverloaded-virtual -Wno-deprecated $config{OPTIMISATI}"; $config{LDLIBS} = ""; $config{MAKEPROG} = "/usr/bin/make"; $config{MAKEORDER} = "ircd mods"; return "Cygwin"; } elsif ($config{OSNAME} eq "CYG-STATIC") { - $config{FLAGS} = "-fno-strict-aliasing -Wall -Woverloaded-virtual $config{OPTIMISATI}"; + $config{FLAGS} = "-fno-strict-aliasing -Wall -Woverloaded-virtual -Wno-deprecated $config{OPTIMISATI}"; $config{LDLIBS} = ""; $config{MAKEPROG} = "/usr/bin/make"; $config{MAKEORDER} = "mods ircd"; @@ -876,10 +966,14 @@ sub getosflags { $config{STATIC_LINK} = "yes"; return "Cygwin-Static"; } + } + + if ($config{OSNAME} =~ /FreeBSD/i) { $config{FLAGS} .= " " . $ENV{CXXFLAGS} if exists($ENV{CXXFLAGS}); + $config{LDLIBS} .= " " . $ENV{LDLIBS} if exists($ENV{LDLIBS}); } - - if ($config{OSNAME} =~ /SunOS/i) + + if ($config{OSNAME} =~ /SunOS/i or $config{OSNAME} =~ /solaris/i) { # solaris/sunos needs these # socket = bsd sockets api @@ -887,7 +981,7 @@ sub getosflags { # rt = POSIX realtime extensions # resolv = inet_aton only (why isnt this in nsl?!) $config{MAKEPROG} = "gmake"; - $config{LDLIBS} = $config{LDLIBS} . " -lsocket -lnsl -lrt -lresolv"; + $config{LDLIBS} .= " -lsocket -lnsl -lrt -lresolv"; return "Solaris"; } @@ -918,6 +1012,10 @@ sub writefiles { #ifndef __CONFIGURATION_AUTO__ #define __CONFIGURATION_AUTO__ +/* this is for windows support. */ +#define CoreExport /**/ +#define DllExport /**/ + #define CONFIG_FILE "$config{CONFIG_DIR}/inspircd.conf" #define MOD_PATH "$config{MODULE_DIR}" #define VERSION "$version" @@ -938,8 +1036,9 @@ sub writefiles { #define OPTIMISATION $config{OPTIMITEMP} #define LIBRARYDIR "$config{LIBRARY_DIR}" #define SYSTEM "$incos" -#define MAXBUF 514 EOF +print FILEHANDLE "#define MAXBUF " . ($config{MAXBUF}+2) . "\n"; + if ($config{OSNAME} =~ /SunOS/i) { print FILEHANDLE "#define IS_SOLARIS\n"; } @@ -982,6 +1081,11 @@ EOF $se = "socketengine_epoll"; $use_hiperf = 1; } + if (($has_ports) && ($config{USE_PORTS} eq "y")) { + print FILEHANDLE "#define USE_PORTS\n"; + $se = "socketengine_ports"; + $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) { @@ -1064,6 +1168,10 @@ EOF foreach $name (sort readdir(DIRHANDLE)) { if ($name =~ /^\.(.+)\.inc$/) { $file = $1; + + # Bug #353, omit this on non-darwin + next if (($config{OSNAME} !~ /darwin/) && ($file eq "org.inspircd.plist")); + # All .name.inc files need parsing! $tmp = ""; open(FILEHANDLE, ".$file.inc"); @@ -1084,6 +1192,9 @@ EOF $tmp =~ s/\@LIBRARY_DIR\@/$config{LIBRARY_DIR}/; $tmp =~ s/\@LIBRARY_EXT\@/$LIBEXT/; $tmp =~ s/\@MODULES\@/$modules/; + $tmp =~ s/\@STARTSCRIPT\@/$config{STARTSCRIPT}/; + $tmp =~ s/\@DESTINATION\@/$config{DESTINATION}/; + $tmp =~ s/\@EXTRA_DIR\@/$config{EXTRA_DIR}/; $tmp =~ s/\@EXECUTABLE\@/$exe/; $tmp =~ s/\@MAKEORDER\@/$config{MAKEORDER}/; $tmp =~ s/\@STATICLIBS\@/$config{STATICLIBS}/; @@ -1123,13 +1234,16 @@ sub write_static_modules_makefile { # Module Makefile Header ### print FILEHANDLE < -# Many Thanks to Andrew Church -# for assisting with making this work right. +################################################### +# Copyright 2002-2007 The InspIRCd Development Team +# http://www.inspircd.org/wiki/index.php/Credits +# +# Thanks to Andrew Church +# for assisting with making this work right. # -# Automatically Generated by ./configure to add a modules -# please run ./configure --update +# Automatically Generated by ./configure to add a +# modules please run ./configure --modupdate +################################################### all: \$(MODULES) @@ -1225,13 +1339,16 @@ sub write_dynamic_modules_makefile { # Module Makefile Header ### print FILEHANDLE < -# Many Thanks to Andrew Church -# for assisting with making this work right. +################################################### +# Copyright 2002-2007 The InspIRCd Development Team +# http://www.inspircd.org/wiki/index.php/Credits # -# Automatically Generated by ./configure to add a modules -# please run ./configure -update or ./configure -modupdate +# Thanks to Andrew Church +# for assisting with making this work right. +# +# Automatically Generated by ./configure to add a +# modules please run ./configure -modupdate +################################################### all: \$(MODULES) @@ -1283,15 +1400,15 @@ EOCHEESE if ($name =~ /^m_(.+?)$/) { $crapola = ""; $crap3 = ""; + $mliflags = ""; # 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"); + $mliflags = $mliflags . " " . getlinkerflags("src/modules/$name/$fname"); $deps = getdependencies("src/modules/$name/$fname"); $oname = $fname; $oname =~ s/\.cpp$/.o/g; @@ -1302,11 +1419,11 @@ EOCHEESE $i++; } } - print "(\033[1;32m$i files found\033[0m)\n"; + print "Composing Makefile rules for directory \033[1;32m$name\033[0m... (\033[1;32m$i files found\033[0m)\n"; if ($config{IS_DARWIN} eq "YES") { print FILEHANDLE "\n \$(CC) -pipe -twolevel_namespace -undefined dynamic_lookup \$(FLAGS) -bundle -o $name.so $crap3\n"; } else { - print FILEHANDLE "\n \$(CC) -pipe \$(FLAGS) -shared $liflags -o $name.so $crap3\n"; + print FILEHANDLE "\n \$(CC) -pipe \$(FLAGS) -shared $mliflags -o $name.so $crap3\n"; } print FILEHANDLE "\n$crapola\n"; closedir(MDIRHANDLE); @@ -1338,12 +1455,16 @@ sub write_static_makefile { $srcobjs = $srcobjs . "cmd_$cmd.cpp "; } print FH < -# Makefile version 2 (statically linked core) by +# Thanks to Andrew Church +# for assisting with making this work right. # +# This file is automagically generated by configure +# Any changes made will be lost on ./configure +################################################### CC = im a cheezeball @@ -1360,6 +1481,9 @@ if (($has_kqueue) && ($config{USE_KQUEUE} eq "y")) { elsif (($has_epoll) && ($config{USE_EPOLL} eq "y")) { $se = "socketengine_epoll"; } +elsif (($has_ports) && ($config{USE_PORTS} eq "y")) { + $se = "socketengine_ports"; +} ### # This next section is for cygwin dynamic module builds. @@ -1494,15 +1618,22 @@ sub write_dynamic_makefile { elsif (($has_epoll) && ($config{USE_EPOLL} eq "y")) { $se = "socketengine_epoll"; } + elsif (($has_ports) && ($config{USE_PORTS} eq "y")) { + $se = "socketengine_ports"; + } open(FH,">src/Makefile") or die("Could not write src/Makefile"); print FH < -# Makefile version 2 (dynamically linked core) by +# Thanks to Andrew Church +# for assisting with making this work right. # +# This file is automagically generated by configure +# Any changes made will be lost on ./configure +################################################### CC = im a cheezeball