]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
Improve support for NetBSD
[user/henk/code/inspircd.git] / configure
index 06e1952e812f20eda4f10d480fffd8e24d719922..3f684df8ab2f09ffcc400aa99cedc620b385ec9b 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,8 +1,8 @@
-#!/usr/bin/perl
+#!/usr/bin/env perl
 ###################################################
 # InspIRCd Configuration Script
 #
-# Copyright 2002-2009 The InspIRCd Development Team
+# Copyright 2002-2010 The InspIRCd Development Team
 #  http://wiki.inspircd.org/Credits
 #
 # Licensed under GPL, please see the COPYING file
@@ -44,7 +44,8 @@ use make::opensslcert;
 
 our ($opt_use_gnutls, $opt_rebuild, $opt_use_openssl, $opt_nointeractive, $opt_ports,
     $opt_epoll, $opt_kqueue, $opt_noports, $opt_noepoll, $opt_nokqueue,
-    $opt_noipv6, $opt_maxbuf, $opt_disable_debug, $opt_freebsd_port);
+    $opt_noipv6, $opt_maxbuf, $opt_disable_debug, $opt_freebsd_port,
+       $opt_system, $opt_uid);
 
 our ($opt_cc, $opt_base_dir, $opt_config_dir, $opt_module_dir, $opt_binary_dir);
 
@@ -60,6 +61,8 @@ my @opt_disableextras;
 GetOptions (
        'enable-gnutls' => \$opt_use_gnutls,
        'rebuild' => \$opt_rebuild,
+       'system' => \$opt_system,
+       'uid=s' => \$opt_uid,
        'enable-openssl' => \$opt_use_openssl,
        'disable-interactive' => \$opt_nointeractive,
        'enable-ports' => \$opt_ports,
@@ -98,7 +101,7 @@ if (scalar(@opt_enableextras) + scalar(@opt_disableextras) > 0) {
        exit 0;
 }
 
-our $non_interactive = (
+our $interactive = !(
        (defined $opt_base_dir) ||
        (defined $opt_config_dir) ||
        (defined $opt_module_dir) ||
@@ -115,10 +118,11 @@ our $non_interactive = (
        (defined $opt_noepoll) ||
        (defined $opt_noports) ||
        (defined $opt_maxbuf) ||
+       (defined $opt_system) ||
+       (defined $opt_uid) ||
        (defined $opt_use_gnutls) ||
        (defined $opt_freebsd_port)
 );
-our $interactive = !$non_interactive;
 
 chomp(our $topdir = getcwd());
 our $this = resolve_directory($topdir);                                                # PWD, Regardless.
@@ -128,26 +132,33 @@ $config{ME} = resolve_directory($topdir);                         # Present Working Directory
 
 $config{BASE_DIR} = $config{ME}."/run";
 
-if (defined $opt_base_dir)
-{
+if (defined $opt_base_dir) {
        $config{BASE_DIR} = $opt_base_dir;
+} elsif (defined $opt_system || defined $opt_uid) {
+       $config{BASE_DIR} = '/var/lib/inspircd';
 }
 
-$config{CONFIG_DIR}     = resolve_directory($config{BASE_DIR}."/conf");        # Configuration Directory
-$config{MODULE_DIR}     = resolve_directory($config{BASE_DIR}."/modules");     # Modules Directory
-$config{BINARY_DIR}     = resolve_directory($config{BASE_DIR}."/bin");         # Binary Directory
-$config{BUILD_DIR}      = resolve_directory($config{ME}."/build");         # Build Directory
+if (defined $opt_system || defined $opt_uid) {
+       $config{UID} = $opt_uid || 'ircd';
+       $config{CONFIG_DIR}      = '/etc/inspircd';
+       $config{MODULE_DIR}      = '/usr/lib/inspircd';
+       $config{BINARY_DIR}      = '/usr/sbin/';
+       $config{BUILD_DIR}       = resolve_directory($config{ME}."/build");         # Build Directory
+} else {
+       $config{UID} = $<;
+       $config{CONFIG_DIR}      = resolve_directory($config{BASE_DIR}."/conf");        # Configuration Directory
+       $config{MODULE_DIR}      = resolve_directory($config{BASE_DIR}."/modules");     # Modules Directory
+       $config{BINARY_DIR}      = resolve_directory($config{BASE_DIR}."/bin");         # Binary Directory
+       $config{BUILD_DIR}       = resolve_directory($config{ME}."/build");         # Build Directory
+}
 
-if (defined $opt_config_dir)
-{
+if (defined $opt_config_dir) {
        $config{CONFIG_DIR} = $opt_config_dir;
 }
-if (defined $opt_module_dir)
-{
+if (defined $opt_module_dir) {
        $config{MODULE_DIR} = $opt_module_dir;
 }
-if (defined $opt_binary_dir)
-{
+if (defined $opt_binary_dir) {
        $config{BINARY_DIR} = $opt_binary_dir;
 }
 chomp($config{HAS_GNUTLS}   = `pkg-config --modversion gnutls 2>/dev/null | cut -c 1,2,3`); # GNUTLS Version.
@@ -186,43 +197,25 @@ if (defined $opt_use_openssl)
        $config{USE_OPENSSL} = "y";
 }
 
-# no, let's not change these.
-$config{OPTIMITEMP}     = "0";                                         # Default Optimisation Value
-if (!defined $opt_disable_debug)
-{
+if (!defined $opt_disable_debug) {
        $config{OPTIMISATI}      = "-g1";                               # Optimisation Flag
-}
-else
-{
-       $config{OPTIMISATI}      = "-O2";                               # DEBUGGING OFF!
+} else {
+       $config{OPTIMISATI}      = "-O2";
 }
 
 $config{HAS_STRLCPY}   = "false";                                      # strlcpy Check.
 $config{HAS_STDINT}     = "false";                                     # stdint.h check
 $config{USE_KQUEUE}     = "y";                                         # kqueue enabled
-if (defined $opt_kqueue)
-{
-       $config{USE_KQUEUE} = "y";
-}
-if (defined $opt_nokqueue)
-{
+if (defined $opt_nokqueue) {
        $config{USE_KQUEUE} = "n";
 }
 $config{USE_POLL}     = "y";                                   # poll enabled
 $config{USE_EPOLL}       = "y";                                        # epoll enabled
-if (defined $opt_epoll)
-{
-       $config{USE_EPOLL} = "y";
-}
 if (defined $opt_noepoll)
 {
        $config{USE_EPOLL} = "n";
 }
 $config{USE_PORTS}       = "y";                                        # epoll enabled
-if (defined $opt_ports)
-{
-       $config{USE_PORTS} = "y";
-}
 if (defined $opt_noports)
 {
        $config{USE_PORTS} = "n";
@@ -232,8 +225,6 @@ if (defined $opt_noipv6)
 {
        $config{IPV6} = "n";
 }
-chomp($config{GCCVER}       = `g++ -dumpversion | cut -c 1`);          # Major GCC Version
-chomp($config{GCCMINOR}     = `g++ -dumpversion | cut -c 3`);
 $config{_SOMAXCONN} = SOMAXCONN;                                       # Max connections in accept queue
 $config{OSNAME}            = $^O;                                      # Operating System Name
 $config{IS_DARWIN}       = "NO";                                       # Is OSX?
@@ -244,8 +235,6 @@ 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)
@@ -408,6 +397,11 @@ print ((!getcache()) ? "not found\n" : "found\n");
 $config{SYSTEM} = lc $^O;
 print "Checking operating system version... $config{SYSTEM}\n";
 
+$exec = $config{CC} . " -dumpversion | cut -c 1";
+chomp($config{GCCVER}          = `$exec`);                             # Major GCC Version
+$exec = $config{CC} . " -dumpversion | cut -c 3";
+chomp($config{GCCMINOR}                = `$exec`);
+
 printf "Checking if stdint.h exists... ";
 $config{HAS_STDINT} = "true";
 our $fail = 0;
@@ -531,9 +525,6 @@ else
        print "no ($config{OSNAME})\n";
 }
 
-print "Checking for upgrades to extra and third party modules... ";
-system "./modulemanager upgrade";
-
 ################################################################################
 #                        BEGIN INTERACTIVE PART                              #
 ################################################################################
@@ -669,6 +660,7 @@ should NOT be used. You should probably specify a newer compiler.\n\n";
        }
 
        $config{USE_SSL} = "n";
+       $config{MODUPDATE} = 'n';
 
        if ($config{HAS_GNUTLS} eq "y" || $config{HAS_OPENSSL} eq "y")
        {
@@ -702,6 +694,13 @@ should NOT be used. You should probably specify a newer compiler.\n\n";
                print "\nCould not detect OpenSSL or GnuTLS. Make sure pkg-config is installed if\n";
                print "you intend to use OpenSSL, or that GnuTLS is in your path if you intend\nto use GnuTLS.\n\n";
        }
+
+       yesno('MODUPDATE',"Would you like to check for updates to third-party modules?");
+       print "\n";
+       if ($config{MODUPDATE} eq "y") {
+               print "Checking for upgrades to extra and third party modules... ";
+               system "./modulemanager upgrade";
+       }
 }
 
 dumphash();
@@ -1055,7 +1054,7 @@ EOF
                $config{BUILD_DIR} ||= resolve_directory($config{ME}."/build");
 
                for my $var (qw(
-                       CC SYSTEM BASE_DIR CONFIG_DIR MODULE_DIR BINARY_DIR BUILD_DIR
+                       CC SYSTEM BASE_DIR CONFIG_DIR MODULE_DIR BINARY_DIR BUILD_DIR UID
                        STARTSCRIPT DESTINATION EXTRA_DIR SOCKETENGINE
                )) {
                        s/\@$var\@/$config{$var}/g;