]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
PROPAGATE this fix
[user/henk/code/inspircd.git] / configure
index bc81209d62ad70851f52e4b9eb8a5ec7077f40cc..278bc9bbd5a5002a776988e3af25a29dedc5d959 100755 (executable)
--- a/configure
+++ b/configure
@@ -484,14 +484,14 @@ if ($has_epoll) {
                                if ($line =~ /GNU C Library .* version (.*?) /)
                                {
                                        $libcv = $1;
-                                       $libcv =~  /([0-9\.\-])+/;
+                                       $libcv =~  /(\d+\.\d+)/;
                                        $libcv = $1;
                                }
                                elsif ($line =~ /Compiled on a Linux (.*?\..*?)\.* system/)
                                {
                                        $kernelv = $1;
                                        # Fix for some retarded libc builds, strip off >> and << etc.
-                                       $kernelv =~ /([0-9\.\-])+/;
+                                       $kernelv =~ /(\d+\.\d+)/;
                                        $kernelv = $1;
                                }
                        }
@@ -1274,34 +1274,21 @@ EOCHEESE
        opendir(DIRHANDLE, "src/modules");
        foreach $name (sort readdir(DIRHANDLE)) {
                if ($name =~ /^m_(.+?)$/) {
-                       $crapola = "";
-                       $crap3 = "";
+                       $mfrules = "";
+                       $mobjs = "";
                        $mliflags = "";
+                       $mfcount = 0;
                        # A module made of multiple files, in a dir, e.g. src/modules/m_spanningtree/
                        if (opendir(MDIRHANDLE, "src/modules/$name") != 0) {
-                               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");
-                                               $mliflags = $mliflags . " " . getlinkerflags("src/modules/$name/$fname");
-                                               $deps = getdependencies("src/modules/$name/$fname");
-                                               $oname = $fname;
-                                               $oname =~ s/\.cpp$/.o/g;
-                                               print FILEHANDLE " $name/$oname";
-                                               $crapola = $crapola .  "$name/$oname: $name/$fname ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h ../../include/inspircd_config.h ../../include/inspircd.h ../../include/configreader.h $deps\n";
-                                               $crapola = $crapola .  "        \$(CC) -pipe -I../../include -I. \$(FLAGS) $cmflags -export-dynamic -o $name/$oname -c $name/$fname\n\n";
-                                               $crap3 = $crap3 . " $name/$oname";
-                                               $i++;
-                                       }
-                               }
-                               print "Composing Makefile rules for directory \033[1;32m$name\033[0m... (\033[1;32m$i files found\033[0m)\n";
+                               read_module_directory("src/modules/$name", $name);
+                               print "Composing Makefile rules for directory \033[1;32m$name\033[0m... (\033[1;32m$mfcount files found\033[0m)\n";
+                               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 $mobjs\n"; 
                                if ($config{IS_DARWIN} eq "YES") {
-                                       print FILEHANDLE "\n    \$(CC) -pipe -twolevel_namespace -undefined dynamic_lookup \$(FLAGS) -bundle -o $name.so $crap3\n"; 
+                                       print FILEHANDLE "      \$(CC) -pipe -twolevel_namespace -undefined dynamic_lookup \$(FLAGS) $mliflags -bundle -o $name.so $mobjs\n"; 
                                } else {
-                                       print FILEHANDLE "\n    \$(CC) -pipe \$(FLAGS) -shared $mliflags -o $name.so $crap3\n";
+                                       print FILEHANDLE "      \$(CC) -pipe \$(FLAGS) -shared $mliflags -o $name.so $mobjs\n";
                                }
-                               print FILEHANDLE "\n$crapola\n";
+                               print FILEHANDLE "\n$mfrules\n";
                                closedir(MDIRHANDLE);
                                $crud = $crud . "       install -m \$(INSTMODE) $name.so \$(MODPATH)\n";
                        }
@@ -1312,6 +1299,31 @@ EOCHEESE
        print FILEHANDLE "modinst:\n    \@echo \"Installing modules...\"\n" . $crud;
 }
 
+sub read_module_directory {
+       my ($dpath, $reldpath) = @_;
+       
+       if (opendir(MDIRHANDLE, $dpath) == 0) {
+               return;
+       }
+       
+       foreach $fname (sort readdir(MDIRHANDLE)) {
+               if ($fname =~ /\.cpp$/) {
+                       $cmflags = getcompilerflags("$dpath/$fname");
+                       $mliflags = $mliflags . " " . getlinkerflags("$dpath/$fname");
+                       $deps = getdependencies("$dpath/$fname");
+                       $oname = $fname;
+                       $oname =~ s/\.cpp$/.o/g;
+                       $mfrules = $mfrules .  "$reldpath/$oname: $reldpath/$fname ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h ../../include/inspircd_config.h ../../include/inspircd.h ../../include/configreader.h $deps\n";
+                       $mfrules = $mfrules .  "        \$(CC) -pipe -I../../include -I. \$(FLAGS) $cmflags -export-dynamic -o $reldpath/$oname -c $reldpath/$fname\n\n";
+                       $mobjs = $mobjs . " $reldpath/$oname";
+                       $mfcount++;
+               }
+               elsif ((-d "$dpath/$fname") && !($fname eq ".") && !($fname eq "..")) {
+                       read_module_directory($dpath."/".$fname, $reldpath."/".$fname);
+               }
+       }
+}
+
 sub write_dynamic_makefile {
 
        my $i = 0;