]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
Add some documentation
[user/henk/code/inspircd.git] / configure
index b20e28da2c01fdcadbacbc85f06321d749eb3b22..67e5b7aab44bd327b29653cfeea35375ed3bd7ad 100755 (executable)
--- a/configure
+++ b/configure
@@ -224,9 +224,15 @@ chomp($config{GCCVER}       = `g++ -dumpversion | cut -c 1`);      # Major GCC Ver
 $config{_SOMAXCONN} = SOMAXCONN;                                       # Max connections in accept queue
 $config{OSNAME}            = $^O;                                      # Operating System Name
 $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)
@@ -391,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";
 
@@ -468,6 +474,40 @@ 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 = <FH>))
+                       {
+                               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;
@@ -481,7 +521,7 @@ $has_ports = 1 if ($system eq "SunOS");
 if ($has_ports) {
        my $kernel = `uname -r`;
        chomp($kernel);
-       if (($kernel !~ /^5\.10/)) {
+       if (($kernel !~ /^5\.1./)) {
                $has_ports = 0;
        }
 }
@@ -707,13 +747,18 @@ if ($config{USE_GNUTLS} eq "y") {
 * few times and get that HD going :) Then answer the        *
 * Questions which follow. If you are unsure, just hit enter *
 *************************************************************\n\n";
-                       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 "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
@@ -795,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 (<CACHE>) {
                chomp;
                # Ignore Blank lines, and comments..
@@ -807,7 +852,7 @@ sub getcache {
                $config{$key} = $1;
        }
        close(CONFIG);
-       return "true";
+       return 1;
 }
 
 sub makecache {
@@ -876,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++";
        }
@@ -902,18 +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";
@@ -928,7 +973,7 @@ sub getosflags {
                $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
@@ -1123,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");
@@ -1143,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}/;
@@ -1182,13 +1234,16 @@ sub write_static_modules_makefile {
        # Module Makefile Header
        ###
        print FILEHANDLE <<EOF;
-# (C) ChatSpike development team
-# Makefile by <Craig\@ChatSpike.net>
-# Many Thanks to Andrew Church <achurch\@achurch.org>
-#    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 <achurch\@achurch.org>
+#  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)
 
@@ -1284,13 +1339,16 @@ sub write_dynamic_modules_makefile {
 # Module Makefile Header
 ###
        print FILEHANDLE <<EOF;
-# (C) ChatSpike development team
-# Makefile by <Craig\@ChatSpike.net>
-# Many Thanks to Andrew Church <achurch\@achurch.org>
-#    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 <achurch\@achurch.org>
+#   for assisting with making this work right.
 #
-# Automatically Generated by ./configure to add a modules
-# please run ./configure -update or ./configure -modupdate
+# Automatically Generated by ./configure to add a
+#  modules please run ./configure -modupdate
+###################################################
 
 all: \$(MODULES)
 
@@ -1342,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;
@@ -1361,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);
@@ -1397,12 +1455,16 @@ sub write_static_makefile {
                $srcobjs = $srcobjs . "cmd_$cmd.cpp ";
        }
        print FH <<EOM;
-# Insp Makefile :p
+###################################################
+# Copyright 2002-2007 The InspIRCd Development Team
+#  http://www.inspircd.org/wiki/index.php/Credits
 #
-# (C) ChatSpike development team
-# Makefile by <Craig\@ChatSpike.net>
-# Makefile version 2 (statically linked core) by <brain\@inspircd.org>
+# Thanks to Andrew Church <achurch\@achurch.org>
+#  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
 
@@ -1562,12 +1624,16 @@ sub write_dynamic_makefile {
 
        open(FH,">src/Makefile") or die("Could not write src/Makefile");
        print FH <<EOM;
-# Insp Makefile :p
+###################################################
+# Copyright 2002-2007 The InspIRCd Development Team
+#  http://www.inspircd.org/wiki/index.php/Credits
 #
-# (C) ChatSpike development team
-# Makefile by <Craig\@ChatSpike.net>
-# Makefile version 2 (dynamically linked core) by <brain\@inspircd.org>
+# Thanks to Andrew Church <achurch\@achurch.org>
+#  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