summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-10-22 20:10:46 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-10-22 20:10:46 +0000
commitaf70c6767612942ded955e6e4e2edb709930050d (patch)
treea73885a3d7e08882af43375b6a8f425e9e26eddc
parentab6a7318e36bd8e0a259cd9eef3694a0f0e8684a (diff)
Conditionals in the buildsystem language allowing for checking of configure flags:
/* $If: USE_KQUEUE */ /* $ExtraSources: socketengine_kqueue.cpp */ /* $ExtraObjects: socketengine_kqueue.o */ /* $EndIf */ This is used exactly where the example dictates: to pick a socket engine from the socketengine.cpp. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8308 e03df62e-2008-0410-955e-edbf42e46eb7
-rwxr-xr-xconfigure54
-rw-r--r--src/socketengine.cpp19
2 files changed, 53 insertions, 20 deletions
diff --git a/configure b/configure
index 353142727..68dd50293 100755
--- a/configure
+++ b/configure
@@ -43,7 +43,6 @@ my @immutabledeps = (
"inspircd.h",
);
-
###############################################################################################
#
# NON-EDITABLE VARIABLES
@@ -57,21 +56,25 @@ my @immutabledeps = (
my %filelist = ();
# If you wish for a file to have special dependencies in the makefile, add an entry here.
+# Auto populated by /* $ExtraDeps: */ instruction
my %specialdeps = ();
# If you wish for a file to have extra make lines (in between the compile and link steps)
# then insert them here.
+# Auto populated by /* $ExtraBuild: */ instruction
my %extrabuildlines = ();
# If you wish for a file to be linked against extra objects or arctives, insert them here.
+# Auto populated by /* $ExtraObjects: */ instruction
my %extraobjects = ();
# If you wish to compile extra cpp sources into an object, define them here.
# NOTE: Certain cpp files such as the socket engines have a value auto calculated
# for this table so that their derived class is built.
+# Auto populated by /* $ExtraSources: */ instruction
my %extrasources = ();
@@ -1434,6 +1437,19 @@ sub write_dynamic_makefile
}
closedir(DIRHANDLE);
+ if (!$has_epoll)
+ {
+ $config{USE_EPOLL} = 0;
+ }
+ if (!$has_kqueue)
+ {
+ $config{USE_KQUEUE} = 0;
+ }
+ if (!$has_ports)
+ {
+ $config{USE_PORTS} = 0;
+ }
+
print "Scanning src folder for core files";
opendir(DIRHANDLE, "src");
foreach $name (sort readdir(DIRHANDLE))
@@ -1443,27 +1459,39 @@ sub write_dynamic_makefile
open (CPP, "<src/$name") or die("Can't open src/$name to scan it! oh bugger");
while (chomp($line = <CPP>))
{
- if ($line =~ /\/\* \$Core: (\w+) \*\//)
+ if ($line =~ /\/\* \$Core: (\w+) \*\//i)
{
$filelist{$name} = $1;
print ".";
}
- elsif ($line =~ /\/\* \$ExtraDeps: (.*?) \*\//)
+ elsif ($line =~ /\/\* \$ExtraDeps: (.*?) \*\//i)
{
$specialdeps{$name} = $1;
}
- elsif ($line =~ /\/\* \$ExtraObjects: (.*?) \*\//)
+ elsif ($line =~ /\/\* \$ExtraObjects: (.*?) \*\//i)
{
$extraobjects{$name} = $1;
}
- elsif ($line =~ /\/\* \$ExtraBuild: (.*?) \*\//)
+ elsif ($line =~ /\/\* \$ExtraBuild: (.*?) \*\//i)
{
$extrabuildlines{$name} = $1;
}
- elsif ($line =~ /\/\* \$ExtraSources: (.*?) \*\//)
+ elsif ($line =~ /\/\* \$ExtraSources: (.*?) \*\//i)
{
$extrasources{$name} = $1;
}
+ elsif ($line =~ /\/\* \$If: (\w+) \*\//i)
+ {
+ if (($config{$1} ne "y") and ($config{$1} ne "yes") and ($config{$1} ne "1"))
+ {
+ # Skip to 'endif'
+ while (chomp($line = <CPP>))
+ {
+ die ("\$If buildsystem instruction within another \$If in file src/$name") if ($line =~ /\/\* \$If: (\w+) \*\//i);
+ last if ($line =~ /\/\* \$EndIf \*\//i);
+ }
+ }
+ }
}
close CPP;
}
@@ -1471,20 +1499,6 @@ sub write_dynamic_makefile
closedir(DIRHANDLE);
print " done!\n";
- $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";
- }
- elsif (($has_ports) && ($config{USE_PORTS} eq "y")) {
- $se = "socketengine_ports";
- }
-
- $extrasources{"socketengine.cpp"} = $se . ".cpp";
- $extraobjects{"socketengine.cpp"} = $se . ".o";
-
$freebsd4libs = $config{CRAQ};
my $all = "all: ";
diff --git a/src/socketengine.cpp b/src/socketengine.cpp
index 06e490c42..f17d2f1c5 100644
--- a/src/socketengine.cpp
+++ b/src/socketengine.cpp
@@ -13,6 +13,25 @@
/* $Core: libIRCDsocketengine */
+/********* DEFAULTS **********/
+/* $ExtraSources: socketengine_select.cpp */
+/* $ExtraObjects: socketengine_select.o */
+
+/* $If: USE_KQUEUE */
+/* $ExtraSources: socketengine_kqueue.cpp */
+/* $ExtraObjects: socketengine_kqueue.o */
+/* $EndIf */
+
+/* $If: USE_EPOLL */
+/* $ExtraSources: socketengine_epoll.cpp */
+/* $ExtraObjects: socketengine_epoll.o */
+/* $EndIf */
+
+/* $If: USE_PORTS */
+/* $ExtraSources: socketengine_ports.cpp */
+/* $ExtraObjects: socketengine_ports.o */
+/* $EndIf */
+
#include "inspircd.h"
#include "socketengine.h"