]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
Run modulemanager upgrade to check for updates to third party (and extras) modules...
[user/henk/code/inspircd.git] / configure
index c67dc3fb7d18ea1b8ea1757bae46a823fcd93dd8..1a4f03330f3d07c87208612ee276e7ebb0922135 100755 (executable)
--- a/configure
+++ b/configure
@@ -218,7 +218,7 @@ if (defined $opt_library_dir)
 {
        $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_GNUTLS}   = `pkg-config --modversion gnutls 2>/dev/null | cut -c 1,2,3`); # GNUTLS Version.
 
 if (defined $opt_freebsd_port)
 {
@@ -677,6 +677,9 @@ else
        print "no ($config{OSNAME})\n";
 }
 
+print "Checking for upgrades to extra and third party modules... ";
+system "./modulemanager upgrade";
+
 ################################################################################
 #                        BEGIN INTERACTIVE PART                              #
 ################################################################################
@@ -870,13 +873,15 @@ if (($config{USE_OPENSSL} eq "y") && ($config{HAS_OPENSSL} ne "y"))
 }
 our $failed = 0;
 
+$config{CERTGEN} ||= 'y';
+yesno('CERTGEN',"Would you like generate SSL certificates now?") if ($interactive && ($config{USE_GNUTLS} eq "y" || $config{USE_OPENSSL} eq "y"));
+
 if ($config{USE_GNUTLS} eq "y") {
        unless (-r "src/modules/m_ssl_gnutls.cpp") {
                print "Symlinking src/modules/m_ssl_gnutls.cpp from extra/\n";
                symlink "extra/m_ssl_gnutls.cpp", "src/modules/m_ssl_gnutls.cpp" or print STDERR "Symlink failed: $!";
        }
-       getmodules();
-       if ($interactive)
+       if ($interactive && $config{CERTGEN} eq 'y')
        {
                unless (-r "$config{CONFIG_DIR}/key.pem" && -r "$config{CONFIG_DIR}/cert.pem") {
                        print "SSL Certificates Not found, Generating.. \n\n
@@ -905,14 +910,15 @@ if ($config{USE_GNUTLS} eq "y") {
        {
                print "Skipping SSL certificate generation\nin non-interactive mode.\n\n";
        }
-} elsif ($config{USE_OPENSSL} eq "y") {
+}
+
+if ($config{USE_OPENSSL} eq "y") {
        unless (-r "src/modules/m_ssl_openssl.cpp") {
                print "Symlinking src/modules/m_ssl_openssl.cpp from extra/\n";
                symlink "extra/m_ssl_openssl.cpp", "src/modules/m_ssl_openssl.cpp" or print STDERR "Symlink failed: $!";
        }
-       getmodules();
        $failed = 0;
-       if ($interactive)
+       if ($interactive && $config{CERTGEN} eq 'y')
        {
                unless (-r "$config{CONFIG_DIR}/key.pem" && -r "$config{CONFIG_DIR}/cert.pem") {
                        print "SSL Certificates Not found, Generating.. \n\n
@@ -1057,13 +1063,13 @@ sub getosflags {
 
        # Beware: Linux sets it's own cflags below for some retarded reason
        $config{LDLIBS} = "-pthread -lstdc++";
-       $config{FLAGS}  = "-fPIC -Woverloaded-virtual -Wshadow -Wformat=2 -Wmissing-format-attribute -Wall $config{OPTIMISATI}";
-       $config{DEVELOPER} = "-fPIC -Woverloaded-virtual -Wshadow -Wall -Wformat=2 -Wmissing-format-attribute -g";
+       $config{FLAGS}  = "-pipe -fPIC -Woverloaded-virtual -Wshadow -Wformat=2 -Wmissing-format-attribute -Wall $config{OPTIMISATI}";
+       $config{DEVELOPER} = "-pipe -fPIC -Woverloaded-virtual -Wshadow -Wall -Wformat=2 -Wmissing-format-attribute -g";
        $SHARED = "-shared -export-dynamic";
        $config{MAKEPROG} = "make";
 
        if ($config{OSNAME} =~ /darwin/i) {
-               $config{FLAGS}  = "-DDARWIN -frtti -fPIC -Wall $config{OPTIMISATI}";
+               $config{FLAGS}  = "-pipe -DDARWIN -frtti -fPIC -Wall $config{OPTIMISATI}";
                $SHARED = "-bundle -twolevel_namespace -undefined dynamic_lookup";
                $config{LDLIBS} = "-ldl -pthread -lstdc++";
        }
@@ -1250,7 +1256,7 @@ EOF
                        if (defined(opendir(MDIRHANDLE, "src/modules/$name2"))) {
                                closedir(MDIRHANDLE);
                                $modules .= "$name2.so ";
-                               $uninstall_list = $uninstall_list . "   -rm \$(MODULES)/$name2.so\n";
+                               $uninstall_list = $uninstall_list . "   -rm \$(MODPATH)/$name2.so\n";
                        }
                }
        }
@@ -1288,34 +1294,49 @@ EOF
                        next if (($config{OSNAME} !~ /darwin/) && ($file eq "org.inspircd.plist"));
 
                        # All .name.inc files need parsing!
-                       $tmp = "";
                        open(FILEHANDLE, ".$file.inc") or die ("Can't open .$file.inc");
-                       while (<FILEHANDLE>) {
-                               $tmp .= $_;
-                       }
+                       $_ = join '', <FILEHANDLE>;
                        close(FILEHANDLE);
 
                        print "Writing \e[1;32m$file\e[0m ...\n";
-                       $tmp =~ s/\@CC\@/$config{CC}/ if defined $config{CC};
-                       $tmp =~ s/\@FLAGS\@/$config{FLAGS}/ if defined $config{FLAGS};
-                       $tmp =~ s/\@DEVELOPER\@/$config{DEVELOPER}/ if defined $config{DEVELOPER};
-                       $tmp =~ s/\@LDLIBS\@/$config{LDLIBS}/ if defined $config{LDLIBS};
-                       $tmp =~ s/\@BASE_DIR\@/$config{BASE_DIR}/ if defined $config{BASE_DIR};
-                       $tmp =~ s/\@CONFIG_DIR\@/$config{CONFIG_DIR}/ if defined $config{CONFIG_DIR};
-                       $tmp =~ s/\@MODULE_DIR\@/$config{MODULE_DIR}/ if defined $config{MODULE_DIR};
-                       $tmp =~ s/\@BINARY_DIR\@/$config{BINARY_DIR}/ if defined $config{BINARY_DIR};
-                       $tmp =~ s/\@LIBRARY_DIR\@/$config{LIBRARY_DIR}/ if defined $config{LIBRARY_DIR};
-                       $tmp =~ s/\@MODULES\@/$modules/ if defined $modules;
-                       $tmp =~ s/\@STARTSCRIPT\@/$config{STARTSCRIPT}/ if defined $config{STARTSCRIPT};
-                       $tmp =~ s/\@DESTINATION\@/$config{DESTINATION}/ if defined $config{DESTINATION};
-                       $tmp =~ s/\@EXTRA_DIR\@/$config{EXTRA_DIR}/ if defined $config{EXTRA_DIR};
-                       $tmp =~ s/\@EXECUTABLE\@/$exe/ if defined $exe;
-                       $tmp =~ s/\@VERSION\@/$version/ if defined $version;
-                       $tmp =~ s/\@INSTALL_LIST\@/$install_list/ if defined $install_list;
-                       $tmp =~ s/\@UNINSTALL_LIST\@/$uninstall_list/ if defined $uninstall_list;
-
-                       open(FILEHANDLE, ">$file") or die("Can't write to $file: $!\n");
-                       print FILEHANDLE $tmp;
+                       for my $var (qw(
+                               CC FLAGS DEVELOPER LDLIBS BASE_DIR CONFIG_DIR MODULE_DIR BINARY_DIR LIBRARY_DIR
+                               STARTSCRIPT DESTINATION EXTRA_DIR
+                       )) {
+                               s/\@$var\@/$config{$var}/g;
+                       }
+                       s/\@MODULES\@/$modules/ if defined $modules;
+                       s/\@EXECUTABLE\@/$exe/ if defined $exe;
+                       s/\@VERSION\@/$version/ if defined $version;
+                       s/\@INSTALL_LIST\@/$install_list/ if defined $install_list;
+                       s/\@UNINSTALL_LIST\@/$uninstall_list/ if defined $uninstall_list;
+
+                       if ($file eq 'Makefile') {
+                               my $mk_tmp = $_;
+                               s/\@IFDEF (\S+)/ifdef $1/g;
+                               s/\@IFNDEF (\S+)/ifndef $1/g;
+                               s/\@ELSE/else/g;
+                               s/\@ENDIF/endif/g;
+                               s/\@BSD_ONLY .*\n//g;
+                               s/\@GNU_ONLY //g;
+                               open MKF, '>GNUmakefile' or die "Can't write to GNUmakefile: $!";
+                               print MKF $_;
+                               close MKF;
+                               $_ = $mk_tmp;
+                               s/\@IFDEF (\S+)/.if defined($1)/g;
+                               s/\@IFNDEF (\S+)/.if !defined($1)/g;
+                               s/\@ELSE/.else/g;
+                               s/\@ENDIF/.endif/g;
+                               s/\@BSD_ONLY //g;
+                               s/\@GNU_ONLY .*\n//g;
+                               open MKF, '>BSDmakefile' or die "Can't write to BSDmakefile: $!";
+                               print MKF $_;
+                               close MKF;
+                       } else {
+                               open(FILEHANDLE, ">$file") or die("Can't write to $file: $!\n");
+                               print FILEHANDLE $_;
+                               close(FILEHANDLE);
+                       }
                }
        }
        closedir(DIRHANDLE);
@@ -1385,14 +1406,14 @@ EOCHEESE
                {
                        print FILEHANDLE "
 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/configreader.h $deps
-       \@../../make/run-cc.pl \$(CC) -pipe -I../../include \$(NICEFLAGS) $cmflags \$(PICLDFLAGS) $liflags $SHARED -o m_$i.so m_$i.cpp
+       \$(RUNCC) \$(NICEFLAGS) $cmflags \$(PICLDFLAGS) $liflags $SHARED -o m_$i.so m_$i.cpp
 ";
                }
                else
                {
                        print FILEHANDLE "
 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/configreader.h $deps
-       \@../../make/run-cc.pl \$(CC) -pipe -I../../include \$(FLAGS) $cmflags \$(PICLDFLAGS) $liflags $SHARED -o m_$i.so m_$i.cpp
+       \$(RUNCC) \$(FLAGS) $cmflags \$(PICLDFLAGS) $liflags $SHARED -o m_$i.so m_$i.cpp
 ";
                }
                $install_list = $install_list . "       install -m \$(INSTMODE) src/modules/m_$i.so \$(MODPATH)\n";
@@ -1414,7 +1435,7 @@ m_$i.so: m_$i.cpp ../../include/modules.h ../../include/users.h ../../include/ch
                                read_module_directory("src/modules/$name", $name);
                                print "Composing Makefile rules for directory \e[1;32m$name\e[0m... (\e[1;32m$mfcount files found\e[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";
-                               print FILEHANDLE "      \@../../make/run-cc.pl \$(CC) -pipe \$(FLAGS) $SHARED $mliflags -o $name.so $mobjs\n";
+                               print FILEHANDLE "      \$(RUNCC) \$(FLAGS) $SHARED $mliflags -o $name.so $mobjs\n";
                                print FILEHANDLE "\n$mfrules\n";
                                closedir(MDIRHANDLE);
                                $install_list = $install_list . "       install -m \$(INSTMODE) src/modules/$name.so \$(MODPATH)\n";
@@ -1439,7 +1460,7 @@ sub read_module_directory {
                        my $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 .  "        \@../../make/run-cc.pl \$(CC) -pipe -I../../include -I. \$(FLAGS) $cmflags $SHARED -o $reldpath/$oname -c $reldpath/$fname\n\n";
+                       $mfrules = $mfrules .  "        \$(RUNCC) -I. \$(FLAGS) $cmflags $SHARED -o $reldpath/$oname -c $reldpath/$fname\n\n";
                        $mobjs = $mobjs . " $reldpath/$oname";
                        $mfcount++;
                }
@@ -1627,21 +1648,24 @@ sub write_dynamic_makefile
        if ($config{IS_DARWIN} eq "YES")
        {
                $libraryext = "dylib";
-               $binary_rule = "        \@../make/run-cc.pl \$(CC) -pipe -I../include \$(FLAGS) -c inspircd.cpp\n       \@../make/run-cc.pl \$(CC) -pipe -dynamic -bind_at_load -L. -o inspircd \$(LDLIBS) inspircd.o "
+               $binary_rule = "        \$(RUNCC) -dynamic -bind_at_load -L. -o inspircd \$(LDLIBS) inspircd.o "
        }
        else
        {
                $libraryext = "so";
-               $binary_rule = "        \@../make/run-cc.pl \$(CC) -pipe -I../include \$(FLAGS) $freebsd4libs -rdynamic -L. inspircd.cpp -o inspircd \$(LDLIBS) ";
+               $binary_rule = "        \$(RUNCC) \$(FLAGS) $freebsd4libs -rdynamic -L. -o inspircd \$(LDLIBS) ";
        }
 
        open(FH,">src/Makefile") or die("Could not write src/Makefile");
-       print FH <<EOM;
+       print FH <<'EOM';
 
-CC = im a cheezeball
-CXXFLAGS = -I../include \${FLAGS}
-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)
+CXXFLAGS = ${FLAGS}
+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)
+
+all:
+       @echo "Don't run make here! Run it in the parent directory"
+       false
 
 EOM
 
@@ -1680,11 +1704,11 @@ EOM
                if (exists($core_files_list{$cpp}))
                {
                        # core files are statically linked into the binary and do not require $SHARED shared libs switches
-                       $buildstring = $buildstring . " \@../make/run-cc.pl \$(CC) -pipe -I../include \$(FLAGS) -c $rawcpp\n";
+                       $buildstring = $buildstring . " \$(RUNCC) \$(FLAGS) -c $rawcpp\n";
                }
                else
                {
-                       $buildstring = $buildstring . " \@../make/run-cc.pl \$(CC) -pipe -I../include \$(FLAGS) $SHARED -c $rawcpp\n";
+                       $buildstring = $buildstring . " \$(RUNCC) \$(FLAGS) $SHARED -c $rawcpp\n";
                }
 
                if (exists($extrabuildlines{$cpp}))
@@ -1693,14 +1717,21 @@ EOM
                }
        }
 
-       print FH "all: inspircd moo\n\n\n";
-
-       $deps = calcdeps("src/inspircd.cpp");
-       print FH "inspircd: inspircd.cpp $deps $all_core\n";
+       print FH "inspircd: $all_core\n";
        print FH "$binary_rule $all_core\n\n";
 
        print FH $buildstring;
-       print FH "moo:\n        \@\${MAKE} -C \"commands\" DIRNAME=\"src/commands\" CC=\"\$(CC)\" \$(MAKEARGS)\n\n";
+       print FH <<'EOM';
+
+.PHONY: all commands
+
+commands:
+       @${MAKE} -C commands $(MAKEARGS) commands
+
+modes/modeclasses.a: $(RELCPPFILES) ../include/inspircd.h ../include/inspircd_config.h
+       @${MAKE} -C modes $(MAKEARGS) CPPFILES="$(CPPFILES)" modeclasses.a
+
+EOM
 
        # close main makefile
        close(FH);
@@ -1714,11 +1745,15 @@ EOM
        # and now reopen the commands makefile
        open(FH,">src/commands/Makefile") or die("Could not write src/commands/Makefile");
        print FH <<ITEM;
-CC = i am cornholio
-CXXFLAGS = -I../../include \${FLAGS}
+CXXFLAGS = \${FLAGS}
+
+all:
+       \@echo "Don't run make here! Run it in the root directory"
+       false
 
-all: $cmdobjs
+.PHONY: all commands
 
+commands: $cmdobjs
 
 ITEM
 
@@ -1726,7 +1761,7 @@ ITEM
        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/inspircd_config.h ../../include/commands/cmd_$cmd.h
-       \@../../make/run-cc.pl \$(CC) -pipe -I../../include \$(FLAGS) $SHARED -o cmd_$cmd.so cmd_$cmd.cpp
+       \$(RUNCC) \$(FLAGS) $SHARED -o cmd_$cmd.so cmd_$cmd.cpp
 
 ITEM
        }