#
# InspIRCd -- Internet Relay Chat Daemon
#
-# Copyright (C) 2012-2017 Peter Powell <petpow@saberuk.com>
-# Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
-# Copyright (C) 2007-2008 Craig Edwards <craigedwards@brainbox.cc>
-# Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
+# Copyright (C) 2013-2019 Sadie Powell <sadie@witchery.services>
+# Copyright (C) 2012 Robby <robby@chatbelgie.be>
+# Copyright (C) 2007-2008 Craig Edwards <brain@inspircd.org>
# Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
#
# This file is part of InspIRCd. InspIRCd is free software: you can
use Cwd qw(getcwd);
use Exporter qw(import);
use File::Basename qw(basename dirname);
-use File::Spec::Functions qw(catfile);
+use File::Spec::Functions qw(catdir catfile);
use make::common;
use make::console;
-use constant CONFIGURE_DIRECTORY => '.configure';
+use constant CONFIGURE_ROOT => dirname dirname __FILE__;
+use constant CONFIGURE_DIRECTORY => catdir(CONFIGURE_ROOT, '.configure');
use constant CONFIGURE_CACHE_FILE => catfile(CONFIGURE_DIRECTORY, 'cache.cfg');
use constant CONFIGURE_CACHE_VERSION => '1';
use constant CONFIGURE_ERROR_PIPE => $ENV{INSPIRCD_VERBOSE} ? '' : '1>/dev/null 2>/dev/null';
$settings{CONFIGURE_DIRECTORY} = CONFIGURE_DIRECTORY;
$settings{CONFIGURE_CACHE_FILE} = CONFIGURE_CACHE_FILE;
$settings{SYSTEM_NAME} = lc $^O;
- chomp($settings{SYSTEM_NAME_VERSION} = `uname -sr 2>/dev/null`);
return %settings;
}
--data-dir=[dir] The location where the data files, such as the
pid file, are stored.
[$PWD/run/data]
+ --example-dir=[dir] The location where the example configuration files
+ and SQL schemas are stored.
+ [$PWD/run/conf/examples]
--log-dir=[dir] The location where the log files are stored.
[$PWD/run/logs]
--manual-dir=[dir] The location where the manual files are stored.
--clean Remove the configuration cache file and start
the interactive configuration wizard.
+ --disable-auto-extras Disables automatically enabling extra modules
+ for which the dependencies are available.
--disable-interactive Disables the interactive configuration wizard.
--distribution-label=[text] Sets a distribution specific version label in
the build configuration.
my ($compiler, $file, $args) = @_;
my $status = 0;
$args //= '';
- $status ||= system "$compiler -o __test_$file make/test/$file $args ${\CONFIGURE_ERROR_PIPE}";
+ $status ||= system "$compiler -o __test_$file ${\CONFIGURE_ROOT}/make/test/$file $args ${\CONFIGURE_ERROR_PIPE}";
$status ||= system "./__test_$file ${\CONFIGURE_ERROR_PIPE}";
unlink "./__test_$file";
return !$status;
sub get_compiler_info($) {
my $binary = shift;
my %info = (NAME => 'Unknown', VERSION => '0.0');
- return %info if system "$binary -o __compiler_info make/test/compiler_info.cpp ${\CONFIGURE_ERROR_PIPE}";
+ return %info if system "$binary -o __compiler_info ${\CONFIGURE_ROOT}/make/test/compiler_info.cpp ${\CONFIGURE_ERROR_PIPE}";
open(my $fh, '-|', './__compiler_info 2>/dev/null');
while (my $line = <$fh>) {
$info{$1} = $2 if $line =~ /^([A-Z]+)\s(.+)$/;
}
# Does this line match a directive?
- if ($line =~ /^\s*%(\w+)\s+(.+)$/) {
- if ($1 eq 'define') {
- if ($settings{$2}) {
- push @lines, "#define $2";
+ if ($line =~ /^(\s*)%(\w+)\s+(.+)$/) {
+ if ($2 eq 'define') {
+ if ($settings{$3}) {
+ push @lines, "#$1define $3";
} else {
- push @lines, "#undef $2";
+ push @lines, "#$1undef $3";
}
- } elsif ($1 eq 'mode') {
- $mode = oct $2;
- } elsif ($1 eq 'platform') {
- push @platforms, $2;
- } elsif ($1 eq 'target') {
- push @targets, $2
+ } elsif ($2 eq 'mode') {
+ $mode = oct $3;
+ } elsif ($2 eq 'platform') {
+ push @platforms, $3;
+ } elsif ($2 eq 'target') {
+ push @targets, $3
} else {
- print_warning "unknown template command '$1' in $_!";
+ print_warning "unknown template command '$2' in $_!";
push @lines, $line;
}
next;