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;
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;
$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) {
{
chomp($config{HAS_OPENSSL} = `pkg-config --modversion openssl 2>/dev/null`); # Openssl version, others
$config{HAS_OPENSSL_PORT} = "";
+ $config{USE_FREEBSD_BASE_SSL} = "n";
}
}
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";
$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
}
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;
}
print "no\n" if $config{HAS_STRLCPY} eq "false";
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');
$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")
{
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;
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;
}