-chomp(our $topdir = getcwd());
-our $this = resolve_directory($topdir); # PWD, Regardless.
-our @modlist = (); # Declare for Module List..
-our %config = (); # Initiate Configuration Hash..
-our $cache_loaded = getcache();
-$config{ME} = resolve_directory($topdir); # Present Working Directory
-
-$config{BASE_DIR} ||= $config{ME}."/run";
-
-if (defined $opt_base_dir) {
- $config{BASE_DIR} = $opt_base_dir;
-} elsif (defined $opt_system) {
- $config{BASE_DIR} = '/var/lib/inspircd';
-}
-
-if (defined $opt_system) {
- $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
- $config{DATA_DIR} = '/var/inspircd';
- $config{LOG_DIR} = '/var/log/inspircd';
-} else {
- $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) {
- $config{CONFIG_DIR} = $opt_config_dir;
-}
-if (defined $opt_module_dir) {
- $config{MODULE_DIR} = $opt_module_dir;
-}
-if (defined $opt_binary_dir) {
- $config{BINARY_DIR} = $opt_binary_dir;
-}
-if (defined $opt_data_dir) {
- $config{DATA_DIR} = $opt_data_dir;
-}
-if (defined $opt_log_dir) {
- $config{LOG_DIR} = $opt_log_dir;
-}
-chomp($config{HAS_GNUTLS} = `pkg-config --modversion gnutls 2>/dev/null`); # GNUTLS Version.
-
-if (defined $opt_freebsd_port)
-{
- chomp($config{HAS_OPENSSL} = `pkg-config --modversion openssl 2>/dev/null`);
- chomp($config{HAS_OPENSSL_PORT} = `pkg-config --modversion openssl 2>/dev/null`);
- $config{USE_FREEBSD_BASE_SSL} = "n";
-}
-else
-{
- if ($^O eq "freebsd")
- {
- # default: use base ssl
- chomp($config{HAS_OPENSSL} = `openssl version | cut -d ' ' -f 2`); # OpenSSL version, freebsd specific
- chomp($config{HAS_OPENSSL_PORT} = `pkg-config --modversion openssl 2>/dev/null`); # Port version, may be different
- }
- else
- {
- 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";
-if (defined $opt_use_gnutls)
-{
- $config{USE_GNUTLS} = "y"; # Use gnutls.
-}
-$config{USE_OPENSSL} ||= "n"; # Use openssl.
-if (defined $opt_use_openssl)
-{
- $config{USE_OPENSSL} = "y";
-}
-
-if (!defined $opt_disable_debug) {
- $config{OPTIMISATI} = "-g1"; # Optimisation Flag
-} 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_nokqueue) {
- $config{USE_KQUEUE} = "n";
-}
-$config{USE_POLL} = "y"; # poll enabled
-$config{USE_EPOLL} = "y"; # epoll enabled
-if (defined $opt_noepoll)
-{
- $config{USE_EPOLL} = "n";
-}
-$config{USE_PORTS} = "y"; # epoll enabled
-if (defined $opt_noports)
-{
- $config{USE_PORTS} = "n";
-}
-$config{_SOMAXCONN} = SOMAXCONN; # Max connections in accept queue
-$config{OSNAME} = $^O; # Operating System Name
-$config{IS_DARWIN} = "NO"; # Is OSX?
-$config{STARTSCRIPT} = "inspircd"; # start script?
-$config{DESTINATION} = "BASE"; # Is target path.
-if ($config{OSNAME} =~ /darwin/i)
-{
- $config{IS_DARWIN} = "YES";
- $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 (defined $opt_cc)
-{
- $config{CC} = $opt_cc;
-}
-our $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`);
-$config{MAXBUF} = "512"; # Max buffer size
-
-if ($config{HAS_OPENSSL} =~ /^([-[:digit:].]+)(?:[a-z])?(?:\-[a-z][0-9])?/) {
- $config{HAS_OPENSSL} = $1;
-} else {
- $config{HAS_OPENSSL} = "";
-}
-
-if (($config{GCCVER} eq "") || ($config{GCCMINOR} eq "")) {
- 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;
-}
-
-# Get and Set some important vars..
-getmodules();
-
-sub clean
-{
- unlink(".config.cache");
-}
-
-our ($has_epoll, $has_ports, $has_kqueue) = (0, 0, 0);