# <brain@chatspike.net>
# <Craig@chatspike.net>
#
+# Licensed under GPL, please see the COPYING file
+# for more information
+#
# [14:21] Brain: <matrix impression> i know perl-fu!
#
# $Id$
# Utility functions for our buildsystem
use make::utilities;
use make::configure;
+use make::gnutlscert;
GetOptions (
'enable-gnutls' => \$opt_use_gnutls,
+ 'rebuild' => \$opt_rebuild,
'enable-openssl' => \$opt_use_openssl,
'disable-interactive' => \$opt_nointeractive,
'with-nick-length=i' => \$opt_nick_length,
'with-channel-length=i' => \$opt_chan_length,
- 'with-max-channels=i' => \$opt_maxchans,
- 'with-max-oper-channels=i' => \$opt_opermaxchans,
'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,
(defined $opt_noipv6links) ||
(defined $opt_kqueue) ||
(defined $opt_epoll) ||
+ (defined $opt_ports) ||
(defined $opt_maxchans) ||
(defined $opt_opermaxchans) ||
(defined $opt_chan_length) ||
(defined $opt_use_openssl) ||
(defined $opt_nokqueue) ||
(defined $opt_noepoll) ||
+ (defined $opt_noports) ||
(defined $opt_use_gnutls)
);
my $interactive = !$non_interactive;
$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{OPTIMITEMP} = "0"; # Default Optimisation Value
if (!defined $opt_disable_debug)
{
- $config{OPTIMISATI} = "-O2 -g1"; # Optimisation Flag
+ $config{OPTIMISATI} = "-g1"; # Optimisation Flag
}
else
{
- $config{OPTIMISATI} = "-O2"; # DEBUGGING OFF!
+ $config{OPTIMISATI} = "-O2"; # DEBUGGING OFF!
}
$config{NICK_LENGT} = "31"; # Default Nick Length
{
$config{CHAN_LENGT} = $opt_chan_length;
}
-$config{MAX_CHANNE} = "20"; # Default Max. Channels per user
-if (defined $opt_maxchans)
-{
- $config{MAX_CHANNE} = $opt_maxchans;
-}
-$config{MAX_OPERCH} = "60"; # Default Max. Channels per oper
-if (defined $opt_opermaxchans)
-{
- $config{MAX_OPERCH} = $opt_opermaxchans;
-}
$config{MAXI_MODES} = "20"; # Default Max. Number of Modes set at once.
if (defined $opt_modes)
{
{
$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)
{
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{OSNAME} = $^O; # Operating System Name
$config{IS_DARWIN} = "NO"; # Is OSX?
+if ($config{OSNAME} =~ /darwin/i)
+{
+ $config{IS_DARWIN} = "YES";
+}
$config{CC} = "g++"; # C++ compiler
if (defined $opt_cc)
{
$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 "") {
exit;
}
-if ($config{OSNAME} =~ /darwin/)
-{
- $config{IS_DARWIN} = "YES";
-}
-
# Minihack! Convert Cygwin to 'Cyg-Static' so i can
# Keep my dynamic module experiments here for later
# consideration!
getosflags();
}
$has_epoll = $config{HAS_EPOLL};
+ $has_ports = $config{HAS_PORTS};
$has_kqueue = $config{HAS_KQUEUE};
writefiles(1);
makecache();
print "Updating Files..\n";
getosflags();
$has_epoll = $config{HAS_EPOLL};
+ $has_ports = $config{HAS_PORTS};
$has_kqueue = $config{HAS_KQUEUE};
writefiles(0);
makecache();
print "This is not an SVN copy of InspIRCd.\n";
exit;
}
+ else
+ {
+ close(FH);
+ }
system("svn update");
system("perl configure -update");
- if ($ARGV[1] eq "rebuild") {
+ if (defined $opt_rebuild) {
system("make install");
}
exit;
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\.10/)) {
+ $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";
}
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";
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";
+ print "You have chosen to build an \033[1;32mIPV6-enabled\033[0m server.\nTo accept IPV4 users, you can still use IPV4 addresses\nin your port bindings..\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.");
+ 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?\nIf you are using a recent operating\nsystem and are unsure, answer yes.\nIf you answer 'no' here, your InspIRCd server will be unable\nto parse IPV6 addresses (e.g. for CIDR bans)");
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";
+ 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") {
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";
promptnumeric("length of nicknames", "NICK_LENGT");
promptnumeric("length of channel names", "CHAN_LENGT");
- promptnumeric("number of channels a normal user may join at any one time", "MAX_CHANNE");
- promptnumeric("number of channels an oper may join at any one time", "MAX_OPERCH");
promptnumeric("number of mode changes in one line", "MAXI_MODES");
promptnumeric("length of an ident (username)", "MAX_IDENT");
promptnumeric("length of a quit message", "MAX_QUIT");
print "Symlinking src/modules/m_ssl_gnutls.cpp from extra/\n";
chdir("src/modules");
system("ln -s extra/m_ssl_gnutls.cpp");
- system("ln -s extra/ssl_cert.h");
chdir("../..");
}
getmodules();
* 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");
+ make_gnutls_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");
print "Symlinking src/modules/m_ssl_openssl.cpp from extra/\n";
chdir("src/modules");
system("ln -s extra/m_ssl_openssl.cpp");
- system("ln -s extra/ssl_cert.h");
chdir("../..");
}
getmodules();
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");
$config{LDLIBS} = "-lstdc++";
$config{FLAGS} = "-fno-strict-aliasing -fPIC -Wall -Woverloaded-virtual $config{OPTIMISATI}";
- $config{MAKEPROG} = "make";
+ $config{DEVELOPER} = "-fno-strict-aliasing -fPIC -Wall -Woverloaded-virtual -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}";
+ $SHARED = "-bundle -twolevel_namespace -undefined dynamic_lookup";
+ $config{LDLIBS} = "-ldl -lstdc++";
+ }
if ($config{OSNAME} =~ /OpenBSD/i) {
$config{MAKEPROG} = "gmake";
return "OpenBSD";
}
- if ($config{OSNAME} =~ /darwin/i) {
- $SHARED = "-bundle -undefined dynamic_lookup";
- $config{LDLIBS} = "-ldl -lstdc++";
- }
if ($config{OSNAME} =~ /Linux/i) {
$config{LDLIBS} = "-ldl -lstdc++";
$config{FLAGS} = "-fno-strict-aliasing -fPIC -Wall -Woverloaded-virtual $config{OPTIMISATI}";
my($writeheader) = @_;
# First File.. inspircd_config.h
chomp(my $incos = `uname -n -s -r`);
- chomp(my $version = `sh ./src/version.sh`);
- chomp(my $revision = getrevision());
- $version = "$version(r$revision)";
+ chomp($version = `sh src/version.sh`);
chomp(my $revision2 = getrevision());
if ($writeheader == 1)
{
#define MAX_DESCRIPTORS $config{MAX_DESCRIPTORS}
#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}
$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) {
chomp(my $revision = getrevision());
$version = "$version(r$revision)";
+ my $LIBEXT = "so";
+ if ($config{IS_DARWIN} eq "YES")
+ {
+ $LIBEXT = "dylib";
+ }
# We can actually parse any file starting with . and ending with .inc,
# but right now we only parse .inspircd.inc to form './inspircd'
$tmp =~ s/\@CC\@/$config{CC}/;
$tmp =~ s/\@MAKEPROG\@/$config{MAKEPROG}/;
$tmp =~ s/\@FLAGS\@/$config{FLAGS}/;
+ $tmp =~ s/\@DEVELOPER\@/$config{DEVELOPER}/;
$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/\@LIBRARY_EXT\@/$LIBEXT/;
$tmp =~ s/\@MODULES\@/$modules/;
$tmp =~ s/\@EXECUTABLE\@/$exe/;
$tmp =~ s/\@MAKEORDER\@/$config{MAKEORDER}/;
$tmp =~ s/\@STATICLIBS\@/$config{STATICLIBS}/;
- $tmp =~ s/\@IS_DARWIN\@/$config{IS_DARWIN}/;
$tmp =~ s/\@VERSION\@/$version/;
print "Writing \033[1;32m$file\033[0m\n";
}
}
print "(\033[1;32m$i files found\033[0m)\n";
- if ($config{OSNAME} =~ /darwin/) {
+ 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";
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.
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 <<EOM;
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)
-CMD_SRC = \\
EOM
- foreach my $cmd (@cmdlist) {
- print FH <<ITEM;
- cmd_$cmd.cpp \\
-ITEM
- }
+if ($config{IS_DARWIN} eq "YES") {
print FH <<EOM;
+all: libIRCDtimer.dylib libIRCDcull_list.dylib libIRCDuserprocess.dylib libIRCDsocketengine.dylib libIRCDsocket.dylib libIRCDhash.dylib libIRCDchannels.dylib libIRCDmode.dylib libIRCDxline.dylib libIRCDstring.dylib libIRCDasyncdns.dylib libIRCDbase.dylib libIRCDconfigreader.dylib libIRCDinspsocket.dylib libIRCDcommands.dylib libIRCDdynamic.dylib libIRCDusers.dylib libIRCDmodules.dylib libIRCDwildcard.dylib libIRCDhelper.dylib libIRCDcommand_parse.dylib libIRCDsnomasks.dylib inspircd
-.SUFFIXES: .o .so
-
-CMD_OBJS = \$(CMD_SRC:.cpp=.o)
-
-CPPFILES_OBJS = \$(RELCPPFILES:.cpp=.o)
-
-CMD_LINK_OBJS = \$(CMD_OBJS:.o=.so)
-
-EOM
-
-if ($config{OSNAME} =~ /darwin/) {
- print FH <<EOM;
-all: \$(CPPFILES_OBJS) \$(CMD_OBJS) \$(CMD_LINK_OBJS) libIRCDtimer.dylib libIRCDcull_list.dylib libIRCDuserprocess.dylib libIRCDsocketengine.dylib libIRCDsocket.dylib libIRCDhash.dylib libIRCDchannels.dylib libIRCDmode.dylib libIRCDxline.dylib libIRCDstring.dylib libIRCDasyncdns.dylib libIRCDbase.dylib libIRCDconfigreader.dylib libIRCDinspsocket.dylib libIRCDcommands.dylib libIRCDdynamic.dylib libIRCDusers.dylib libIRCDmodules.dylib libIRCDwildcard.dylib libIRCDhelper.dylib libIRCDcommand_parse.dylib libIRCDsnomasks.dylib 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 \$(CPPFILES_OBJS) \$(CMD_OBJS) \$(CMD_LINK_OBJS) libIRCDtimer.dylib libIRCDcull_list.dylib libIRCDuserprocess.dylib libIRCDsocketengine.dylib libIRCDsocket.dylib libIRCDhash.dylib libIRCDchannels.dylib libIRCDmode.dylib libIRCDxline.dylib libIRCDstring.dylib libIRCDasyncdns.dylib libIRCDbase.dylib libIRCDconfigreader.dylib libIRCDinspsocket.dylib libIRCDsnomasks.dylib libIRCDcommands.dylib libIRCDdynamic.dylib libIRCDusers.dylib libIRCDmodules.dylib libIRCDwildcard.dylib libIRCDhelper.dylib libIRCDcommand_parse.dylib
+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 $cmdobjs libIRCDtimer.dylib libIRCDcull_list.dylib libIRCDuserprocess.dylib libIRCDsocketengine.dylib libIRCDsocket.dylib libIRCDhash.dylib libIRCDchannels.dylib libIRCDmode.dylib libIRCDxline.dylib libIRCDstring.dylib libIRCDasyncdns.dylib libIRCDbase.dylib libIRCDconfigreader.dylib libIRCDinspsocket.dylib libIRCDsnomasks.dylib libIRCDcommands.dylib libIRCDdynamic.dylib libIRCDusers.dylib libIRCDmodules.dylib libIRCDwildcard.dylib libIRCDhelper.dylib libIRCDcommand_parse.dylib
\$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c inspircd.cpp
- \$(CC) -pipe -dynamic -L. -o inspircd \$(LDLIBS) inspircd.o libIRCDchannels.dylib libIRCDmode.dylib libIRCDxline.dylib libIRCDstring.dylib libIRCDasyncdns.dylib libIRCDbase.dylib libIRCDconfigreader.dylib libIRCDinspsocket.dylib libIRCDcommands.dylib libIRCDdynamic.dylib libIRCDusers.dylib libIRCDmodules.dylib libIRCDwildcard.dylib libIRCDhelper.dylib libIRCDhash.dylib libIRCDsocket.dylib libIRCDsocketengine.dylib libIRCDuserprocess.dylib libIRCDcull_list.dylib libIRCDcommand_parse.dylib libIRCDtimer.dylib libIRCDsnomasks.dylib
+ \$(CC) -pipe -dynamic -bind_at_load -L. -o inspircd \$(LDLIBS) inspircd.o libIRCDchannels.dylib libIRCDmode.dylib libIRCDxline.dylib libIRCDstring.dylib libIRCDasyncdns.dylib libIRCDbase.dylib libIRCDconfigreader.dylib libIRCDinspsocket.dylib libIRCDcommands.dylib libIRCDdynamic.dylib libIRCDusers.dylib libIRCDmodules.dylib libIRCDwildcard.dylib libIRCDhelper.dylib libIRCDhash.dylib libIRCDsocket.dylib libIRCDsocketengine.dylib libIRCDuserprocess.dylib libIRCDcull_list.dylib libIRCDcommand_parse.dylib libIRCDtimer.dylib libIRCDsnomasks.dylib
libIRCDsocketengine.dylib: $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) -pipe -I../include \$(FLAGS) -export-dynamic -c socketengine.cpp
+ \$(CC) -pipe -I../include \$(FLAGS) -export-dynamic -c $se.cpp
\$(CC) -pipe -install_name $config{LIBRARY_DIR}/libIRCDsocketengine.dylib -dynamiclib -twolevel_namespace -undefined dynamic_lookup -o libIRCDsocketengine.dylib socketengine.o $se.o
libIRCDsnomasks.dylib: snomasks.cpp ../include/base.h ../include/hashcomp.h ../include/inspircd.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/channels.h
} else {
print FH <<EOM;
-all: \$(CPPFILES_OBJS) \$(CMD_OBJS) \$(CMD_LINK_OBJS) libIRCDtimer.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 libIRCDcommands.so libIRCDdynamic.so libIRCDusers.so libIRCDmodules.so libIRCDwildcard.so libIRCDhelper.so libIRCDcommand_parse.so libIRCDsnomasks.so inspircd
+all: libIRCDtimer.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 $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 \$(CPPFILES_OBJS) \$(CMD_OBJS) \$(CMD_LINK_OBJS) libIRCDtimer.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 libIRCDsnomasks.so libIRCDcommands.so libIRCDdynamic.so libIRCDusers.so libIRCDmodules.so libIRCDwildcard.so libIRCDhelper.so libIRCDcommand_parse.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 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 $cmdobjs libIRCDsnomasks.so libIRCDcommands.so libIRCDdynamic.so libIRCDusers.so libIRCDmodules.so libIRCDwildcard.so libIRCDhelper.so libIRCDcommand_parse.so
\$(CC) -pipe -I../include $extra -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 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 libIRCDtimer.so libIRCDsnomasks.so
libIRCDsocketengine.so: $se.cpp socketengine.cpp ../include/base.h ../include/hashcomp.h ../include/globals.h ../include/inspircd_config.h ../include/$se.h
\$(CC) -pipe -Wl,--rpath -Wl,$config{LIBRARY_DIR} -shared -o libIRCDtimer.so timer.o
EOM
-
-
}
-
foreach my $cmd (@cmdlist) {
print FH <<ITEM;
cmd_$cmd.so: cmd_$cmd.cpp ../include/base.h ../include/modules.h ../include/inspircd.h ../include/channels.h ../include/users.h ../include/globals.h ../include/inspircd_config.h ../include/commands/cmd_$cmd.h