summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure19
-rw-r--r--make/configure.pm6
-rw-r--r--make/template/main.mk1
3 files changed, 22 insertions, 4 deletions
diff --git a/configure b/configure
index e10b7681e..9d064c693 100755
--- a/configure
+++ b/configure
@@ -38,7 +38,7 @@ use warnings FATAL => qw(all);
use File::Basename qw(basename);
use File::Copy ();
-use File::Spec::Functions qw(catdir rel2abs);
+use File::Spec::Functions qw(catfile catdir rel2abs);
use FindBin qw($RealDir);
use Getopt::Long qw(GetOptions);
use POSIX qw(getgid getuid);
@@ -61,6 +61,7 @@ my ($opt_binary_dir,
$opt_log_dir,
$opt_manual_dir,
$opt_module_dir,
+ $opt_portable,
$opt_prefix,
$opt_script_dir,
$opt_socketengine,
@@ -93,6 +94,7 @@ exit 1 unless GetOptions(
'log-dir=s' => \$opt_log_dir,
'manual-dir=s' => \$opt_manual_dir,
'module-dir=s' => \$opt_module_dir,
+ 'portable' => \$opt_portable,
'prefix=s' => \$opt_prefix,
'script-dir=s' => \$opt_script_dir,
'socketengine=s' => \$opt_socketengine,
@@ -130,6 +132,7 @@ our $interactive = !(
defined $opt_log_dir ||
defined $opt_manual_dir ||
defined $opt_module_dir ||
+ defined $opt_portable ||
defined $opt_prefix ||
defined $opt_script_dir ||
defined $opt_socketengine ||
@@ -186,7 +189,19 @@ if (defined $opt_socketengine) {
}
$config{SOCKETENGINE} = $opt_socketengine // $socketengines[0];
-if (defined $opt_system) {
+if (defined $opt_portable) {
+ print_error '--portable and --system can not be used together!' if defined $opt_system;
+ $config{DESTDIR} = catfile $RealDir, 'run', '';
+ $config{BASE_DIR} = $opt_prefix // '';
+ $config{BINARY_DIR} = $opt_binary_dir // 'bin';
+ $config{CONFIG_DIR} = $opt_config_dir // 'conf';
+ $config{DATA_DIR} = $opt_data_dir // 'data';
+ $config{EXAMPLE_DIR} = $opt_example_dir // catdir $config{CONFIG_DIR}, 'examples';
+ $config{LOG_DIR} = $opt_log_dir // 'logs';
+ $config{MANUAL_DIR} = $opt_manual_dir // 'manuals';
+ $config{MODULE_DIR} = $opt_module_dir // 'modules';
+ $config{SCRIPT_DIR} = $opt_script_dir // $config{BASE_DIR};
+} elsif (defined $opt_system) {
$config{BASE_DIR} = $opt_prefix // '/var/lib/inspircd';
$config{BINARY_DIR} = $opt_binary_dir // '/usr/sbin';
$config{CONFIG_DIR} = $opt_config_dir // '/etc/inspircd';
diff --git a/make/configure.pm b/make/configure.pm
index 1ce5a1c1e..bd3591e3c 100644
--- a/make/configure.pm
+++ b/make/configure.pm
@@ -272,10 +272,12 @@ sub parse_templates($$$) {
chomp $line;
# Does this line match a variable?
- while ($line =~ /(@(\w+?)@)/) {
- my ($variable, $name) = ($1, $2);
+ while ($line =~ /(@(\w+?)(?:\|(\w*))?@)/) {
+ my ($variable, $name, $default) = ($1, $2, $3);
if (defined $settings{$name}) {
$line =~ s/\Q$variable\E/$settings{$name}/;
+ } elsif (defined $default) {
+ $line =~ s/\Q$variable\E/$default/;
} else {
print_warning "unknown template variable '$name' in $_!";
last;
diff --git a/make/template/main.mk b/make/template/main.mk
index a57595c9d..6bd1d390d 100644
--- a/make/template/main.mk
+++ b/make/template/main.mk
@@ -49,6 +49,7 @@ LDLIBS = -lstdc++
CORELDFLAGS = -rdynamic -L.
PICLDFLAGS = -fPIC -shared -rdynamic
+DESTDIR := $(if $(DESTDIR),$(DESTDIR),"@DESTDIR|@")
BASE = "$(DESTDIR)@BASE_DIR@"
BINPATH = "$(DESTDIR)@BINARY_DIR@"
CONPATH = "$(DESTDIR)@CONFIG_DIR@"