]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
undo w00t's screwup
[user/henk/code/inspircd.git] / configure
index 6111b0a397b440afffe5926d69c787048a49fa45..b467ce6265ecde0307b96f56032f776cc67a34e5 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,4 +1,5 @@
 #!/usr/bin/perl
+
 # InspIRCd Configuration Script
 #
 # Copyright 2003 The ChatSpike Development Team
@@ -39,11 +40,11 @@ $config{THREADED_DNS}       = "n";                                          # threaded dns (experimental)
 $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}       = `gcc -dumpversion | cut -c 1`);                  # Major GCC Version
-chomp($config{GCC34}        = `gcc -dumpversion | cut -c 3`);                  # Minor GCC Version
+chomp($config{GCCVER}       = `g++ -dumpversion | cut -c 1`);                  # Major GCC Version
+chomp($config{GCC34}        = `g++ -dumpversion | cut -c 3`);                  # Minor GCC Version
 chomp($config{OSNAME}       = `/bin/uname`);                                   # Operating System Name
 $config{CC}                = "g++";                                            # C++ compiler
-$config{MAKEORDER}         = "ircd mods config bininst";                       # build order
+$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
@@ -52,6 +53,8 @@ $config{MAX_KICK}           = "255";                                          # max kick message size
 $config{MAX_GECOS}          = "128";                                           # max GECOS size
 $config{MAX_AWAY}           = "200";                                           # max AWAY size
 
+$no_svn = 0;
+
 $config{HAS_OPENSSL} =~ /OpenSSL (\S+) \d+ \S+ \d{4}/;
 $config{HAS_OPENSSL} = $1;
 
@@ -101,6 +104,21 @@ if ($arg eq "-update") {
        }
 }
 
+if ($arg eq "-svnupdate") {
+       my $fail = 0;
+       open(FH,"<.svn/entries") or $fail = 1;
+       if ($fail) {
+               print "This is not an SVN copy of InspIRCd.\n";
+               exit;
+       }
+       system("svn update");
+       system("perl configure -update");
+       if ($ARGV[1] eq "rebuild") {
+               system("make install");
+       }
+       exit;
+}
+
 if ($arg eq "-modupdate") {
        # Does the cache file exist?
        if (!getcache()) {
@@ -175,13 +193,7 @@ $has_epoll = 0;
 $fail = 0;
 open(EPOLL, "</usr/include/sys/epoll.h") or $fail = 1;
 if (!$fail) {
-       while (chomp($line = <EPOLL>)) {
-               # try and find the declaration of:
-               # extern int epoll_create (int __size) __THROW;
-               if (($line =~ /int(\0x9|\s)+epoll_create(\0x9|\s)+\(/) || ($line =~ /int(\0x9|\s)+epoll_create\(/)) {
-                       $has_epoll = 1;
-               }
-       }
+       $has_epoll = 1;
        close(EPOLL);
 }
 if ($has_epoll) {
@@ -229,6 +241,7 @@ system("clear");
 show_splash();
 chomp($wholeos = `uname -mnr`);
 
+my $rev = getrevision();
 # Display Introduction Message..
 print "
 Welcome to the InspIRCd Configuration program!
@@ -243,7 +256,12 @@ Press \033[1m<RETURN>\033[0m to accept the default for any option, or enter
 a new value. Please note: You will \033[1mHAVE\033[0m to read the docs
 dir, otherwise you won't have a config file!
 
-Your operating system is: \033[1;32m$config{OSNAME}\033[0m ($wholeos), fdmax: $config{MAX_CLIENT_T}\n\n";
+Your operating system is: \033[1;32m$config{OSNAME}\033[0m ($wholeos), fdmax: $config{MAX_CLIENT_T}
+Your InspIRCd revision ID is \033[1;32mr$rev\033[0m";
+if ($rev eq "r0") {
+       print " (Non-SVN build)";
+}
+print ".\n\n";
 
 $config{CHANGE_COMPILER} = "n";
 print "I have detected the following compiler: \033[1;32m$config{CC}\033[0m (version \033[1;32m$config{GCCVER}.$config{GCC34}\033[0m)\n";
@@ -822,12 +840,12 @@ sub getosflags {
                        $config{FLAGS}  = "-frtti -Wall -Woverloaded-virtual $config{OPTIMISATI}";
                        $config{LDLIBS} = "";
                        $config{MAKEPROG} = "/usr/bin/make";
-                       $config{MAKEORDER} = "ircd mods config bininst";
+                       $config{MAKEORDER} = "ircd mods";
                } elsif ($config{OSNAME} eq "CYG-STATIC") {
                        $config{FLAGS} = "-frtti -Wall -Woverloaded-virtual $config{OPTIMISATI}";
                        $config{LDLIBS} = "";
                        $config{MAKEPROG} = "/usr/bin/make";
-                       $config{MAKEORDER} = "mods ircd config bininst";
+                       $config{MAKEORDER} = "mods ircd";
                        $config{STATICLIBS} = "modules/mods.a";
                        $config{STATIC_LINK} = "yes";
                }
@@ -869,12 +887,32 @@ sub getmodules {
        closedir(DIRHANDLE);
 }
 
-sub writefiles {
+sub getrevision {
+       if ($no_svn) {
+               return "0";
+       }
+       my $data = `svn info`;
+       if ($data eq "") {
+               $no_svn = 1;
+               $rev = "0";
+               return $rev;
+       }
+       $data =~ /Revision: (\d+)/;
+       my $rev = $1;
+       if (!defined($rev)) {
+               $rev = "0";
+       }
+       return $rev;
+}
 
+sub writefiles {
        print "Writing \033[1;32minspircd_config.h\033[0m\n";
        # First File.. inspircd_config.h
        chomp(my $incos = `uname -n -s -r`);
-       chomp(my $version = `sh ./src/version.sh` + " (" + `./src/svn-rev.sh` + ")");
+       chomp(my $version = `sh ./src/version.sh`);
+        chomp(my $revision = getrevision());
+       $version = "$version(r$revision)";
+       chomp(my $revision2 = getrevision());
        open(FILEHANDLE, ">include/inspircd_config.h");
        my $NL = $config{NICK_LENGT}+1;
        my $CL = $config{CHAN_LENGT}+1;
@@ -886,6 +924,7 @@ sub writefiles {
 #define CONFIG_FILE "$config{CONFIG_DIR}/inspircd.conf"
 #define MOD_PATH "$config{MODULE_DIR}"
 #define VERSION "$version"
+#define REVISION "$revision2"
 #define MAXCLIENTS $config{MAX_CLIENT}
 #define MAX_DESCRIPTORS $config{MAX_DESCRIPTORS}
 #define NICKMAX $NL
@@ -1212,6 +1251,7 @@ EOF
        my $modules = "";
        my $cmflags = "";
        my $liflags = "";
+       my $crud = "";
 
        foreach $i (@modlist) {
        ###
@@ -1223,14 +1263,14 @@ EOF
 m_$i.so: m_$i.cpp ../../include/modules.h ../../include/users.h ../../include/channels.h ../../include/base.h ../../include/inspircd_config.h ../../include/inspircd.h ../../include/inspircd_io.h
        \$(CC) -pipe -I../../include \$(FLAGS) $cmflags -export-dynamic -c m_$i.cpp
        \$(CC) \$(FLAGS) -shared $liflags -o m_$i.so m_$i.o $extra
-       \@-rm -f \$(MODPATH)/m_$i.so
-       install -v -m 0700 m_$i.so \$(MODPATH)
 
 EOCHEESE
+       $crud = $crud . "       \@install -v -m 0700 m_$i.so \$(MODPATH)\n";
        ###
        # End Write Entry to the MakeFile
        ###
        }
+       print FILEHANDLE "modinst:\n    \@echo \"Installing modules...\"\n" . $crud;
 }