]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
Merge pull request #1157 from SaberUK/insp20+fix-cron-restart
[user/henk/code/inspircd.git] / configure
index 33e9b4c505061cebe29e8d946210ecccc5d2902e..fd00ff89c04ace244a996c09f27d0463a2f0fe0f 100755 (executable)
--- a/configure
+++ b/configure
@@ -33,12 +33,6 @@ BEGIN {
 use strict;
 use warnings FATAL => qw(all);
 
-use Data::Dumper;
-BEGIN {
-       $Data::Dumper::Sortkeys = 1;
-       $Data::Dumper::Useqq = 1;
-};
-
 use File::Copy ();
 use Socket;
 use Cwd;
@@ -148,7 +142,7 @@ our %config = ();                                                                   # Initiate Configuration Hash..
 our $cache_loaded = getcache();
 $config{ME} = resolve_directory($topdir);                              # Present Working Directory
 
-$config{BASE_DIR} = $config{ME}."/run";
+$config{BASE_DIR} ||= $config{ME}."/run";
 
 if (defined $opt_base_dir) {
        $config{BASE_DIR} = $opt_base_dir;
@@ -165,13 +159,13 @@ if (defined $opt_system) {
        $config{DATA_DIR}        = '/var/inspircd';
        $config{LOG_DIR}         = '/var/log/inspircd';
 } else {
-       $config{UID} = $opt_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
-       $config{DATA_DIR}        = resolve_directory($config{BASE_DIR}."/data");        # Data directory
-       $config{LOG_DIR}         = resolve_directory($config{BASE_DIR}."/logs");        # Log directory
+       $config{UID} = $opt_uid || $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
+       $config{DATA_DIR}        ||= resolve_directory($config{BASE_DIR}."/data");      # Data directory
+       $config{LOG_DIR}         ||= resolve_directory($config{BASE_DIR}."/logs");      # Log directory
 }
 
 if (defined $opt_config_dir) {
@@ -215,12 +209,12 @@ else
 
 chomp(our $gnutls_ver = $config{HAS_GNUTLS});
 chomp(our $openssl_ver = $config{HAS_OPENSSL});
-$config{USE_GNUTLS}        = "n";
+$config{USE_GNUTLS}        ||= "n";
 if (defined $opt_use_gnutls)
 {
        $config{USE_GNUTLS} = "y";                                      # Use gnutls.
 }
-$config{USE_OPENSSL}   = "n";                                          # Use openssl.
+$config{USE_OPENSSL}   ||= "n";                                                # Use openssl.
 if (defined $opt_use_openssl)
 {
        $config{USE_OPENSSL} = "y";
@@ -260,6 +254,12 @@ if ($config{OSNAME} =~ /darwin/i)
        $config{STARTSCRIPT}      = "org.inspircd.plist";               # start script for OSX.
        $config{CC}                 = "xcrun clang++";                                  # C++ compiler for OSX.
 }
+elsif ($config{OSNAME} =~ /freebsd/i)
+{
+       chomp(my $fbsd_version = `uname -r`);
+       $fbsd_version =~ s/^(\d+\.\d+).*/$1/g;
+       $config{CC} = $fbsd_version >= 10.0 ? 'clang++' : 'g++';
+}
 else
 {
        $config{CC}                 = "g++";                                            # C++ compiler
@@ -281,11 +281,8 @@ if ($config{HAS_OPENSSL} =~ /^([-[:digit:].]+)(?:[a-z])?(?:\-[a-z][0-9])?/) {
 }
 
 if (($config{GCCVER} eq "") || ($config{GCCMINOR} eq "")) {
-       if ($config{IS_DARWIN} eq "YES") {
-               print $config{CC} . " was not found! You require clang++ (the LLVM C++ compiler, part of the OSX developer tools) to build InspIRCd!\n";
-       } else {
-               print $config{CC} . " was not found! You require g++ (the GNU C++ compiler, part of GCC) to build InspIRCd!\n";         
-       }
+       print "`$config{CC}` was not found! A C++ compiler is required to build InspIRCd!\n";
+       print "You can pass a custom compiler to $0 using --with-cc=[name].\n";
        exit;
 }
 
@@ -356,51 +353,16 @@ $exec = $config{CC} . " -dumpversion | cut -c 3";
 chomp($config{GCCMINOR}                = `$exec`);
 
 printf "Checking if stdint.h exists... ";
-$config{HAS_STDINT} = "true";
-our $fail = 0;
-open(STDINT, "</usr/include/stdint.h") or $config{HAS_STDINT} = "false";
-if ($config{HAS_STDINT} eq "true") {
-       close(STDINT);
-}
-print "yes\n" if $config{HAS_STDINT} eq "true";
-print "no\n" if $config{HAS_STDINT} eq "false";
+$config{HAS_STDINT} = test_compile('stdint');
+print $config{HAS_STDINT} ? "yes\n" : "no\n";
 
 printf "Checking if strlcpy exists... ";
-# Perform the strlcpy() test..
-$config{HAS_STRLCPY} = "false";
-$fail = 0;
-open(STRLCPY, "</usr/include/string.h") or $fail = 1;
-if (!$fail) {
-       while (defined(my $line = <STRLCPY>)) {
-               chomp($line);
-               # try and find the delcaration of:
-               # size_t strlcpy(...)
-               if ($line =~ /size_t(\0x9|\s)+strlcpy/) {
-                       $config{HAS_STRLCPY} = "true";
-               }
-       }
-       close(STRLCPY);
-}
-print "yes\n" if $config{HAS_STRLCPY} eq "true";
-print "no\n" if $config{HAS_STRLCPY} eq "false";
+$config{HAS_STRLCPY} = test_compile('strlcpy');
+print $config{HAS_STRLCPY} ? "yes\n" : "no\n";
 
 printf "Checking if kqueue exists... ";
-$has_kqueue = 0;
-$fail = 0;
-open(KQUEUE, "</usr/include/sys/event.h") or $fail = 1;
-if (!$fail) {
-       while (defined(my $line = <KQUEUE>)) {
-               chomp($line);
-               # try and find the delcaration of:
-               # int kqueue(void);
-               if ($line =~ /int(\0x9|\s)+kqueue/) {
-                       $has_kqueue = 1;
-               }
-       }
-       close(KQUEUE);
-}
-print "yes\n" if $has_kqueue == 1;
-print "no\n" if $has_kqueue == 0;
+$has_kqueue = test_compile('kqueue');
+print $has_kqueue ? "yes\n" : "no\n";
 
 printf "Checking for epoll support... ";
 $has_epoll = test_compile('epoll');
@@ -613,8 +575,8 @@ should NOT be used. You should probably specify a newer compiler.\n\n";
                $config{USE_FREEBSD_BASE_SSL} = "y" if ($^O eq "freebsd");
        }
 
-       $config{USE_SSL} = "n";
-       $config{MODUPDATE} = 'n';
+       $config{USE_SSL} ||= "n";
+       $config{MODUPDATE} ||= 'n';
 
        if ($config{HAS_GNUTLS} eq "y" || $config{HAS_OPENSSL} eq "y")
        {
@@ -664,12 +626,12 @@ dumphash();
 
 if (($config{USE_GNUTLS} eq "y") && ($config{HAS_GNUTLS} ne "y"))
 {
-       print "Sorry, but I couldn't detect GnuTLS. Make sure gnutls-config is in your path.\n";
+       print "Sorry, but I couldn't detect GnuTLS. Make sure pkg-config is in your path.\n";
        exit(0);
 }
 if (($config{USE_OPENSSL} eq "y") && ($config{HAS_OPENSSL} ne "y"))
 {
-       print "Sorry, but I couldn't detect OpenSSL. Make sure openssl is in your path.\n";
+       print "Sorry, but I couldn't detect OpenSSL. Make sure pkg-config and openssl are in your path.\n";
        exit(0);
 }
 our $failed = 0;
@@ -1012,7 +974,7 @@ EOF
 
                for my $var (qw(
                        CC SYSTEM BASE_DIR CONFIG_DIR MODULE_DIR BINARY_DIR BUILD_DIR DATA_DIR UID
-                       STARTSCRIPT DESTINATION SOCKETENGINE
+                       STARTSCRIPT DESTINATION SOCKETENGINE LOG_DIR
                )) {
                        s/\@$var\@/$config{$var}/g;
                }