-#!/usr/bin/perl
-###################################################
-# InspIRCd Configuration Script
+#!/usr/bin/env perl
+
+#
+# InspIRCd -- Internet Relay Chat Daemon
#
-# Copyright 2002-2009 The InspIRCd Development Team
-# http://wiki.inspircd.org/Credits
+# Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
+# Copyright (C) 2007, 2009 Dennis Friis <peavey@inspircd.org>
+# Copyright (C) 2003, 2006-2008 Craig Edwards <craigedwards@brainbox.cc>
+# Copyright (C) 2006-2008 Robin Burchell <robin+git@viroteck.net>
+# Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
+# Copyright (C) 2007 John Brooks <john.brooks@dereferenced.net>
+# Copyright (C) 2006 Oliver Lupton <oliverlupton@gmail.com>
+# Copyright (C) 2003-2006 Craig McLure <craig@chatspike.net>
#
-# Licensed under GPL, please see the COPYING file
-# for more information
+# This file is part of InspIRCd. InspIRCd is free software: you can
+# redistribute it and/or modify it under the terms of the GNU General Public
+# License as published by the Free Software Foundation, version 2.
#
-# $Id$
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
#
-###################################################
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
BEGIN {
require 5.8.0;
our ($opt_use_gnutls, $opt_rebuild, $opt_use_openssl, $opt_nointeractive, $opt_ports,
$opt_epoll, $opt_kqueue, $opt_noports, $opt_noepoll, $opt_nokqueue,
- $opt_noipv6, $opt_maxbuf, $opt_disable_debug, $opt_freebsd_port);
+ $opt_noipv6, $opt_maxbuf, $opt_disable_debug, $opt_freebsd_port,
+ $opt_system, $opt_uid);
-our ($opt_cc, $opt_base_dir, $opt_config_dir, $opt_module_dir, $opt_binary_dir,
- $opt_library_dir);
+our ($opt_cc, $opt_base_dir, $opt_config_dir, $opt_module_dir, $opt_binary_dir, $opt_data_dir, $opt_log_dir);
sub list_extras ();
GetOptions (
'enable-gnutls' => \$opt_use_gnutls,
'rebuild' => \$opt_rebuild,
+ 'system' => \$opt_system,
+ 'uid=s' => \$opt_uid,
'enable-openssl' => \$opt_use_openssl,
'disable-interactive' => \$opt_nointeractive,
'enable-ports' => \$opt_ports,
'config-dir=s' => \$opt_config_dir,
'module-dir=s' => \$opt_module_dir,
'binary-dir=s' => \$opt_binary_dir,
- 'library-dir=s' => \$opt_library_dir,
+ 'data-dir=s' => \$opt_data_dir,
+ 'log-dir=s' => \$opt_log_dir,
'disable-debuginfo' => sub { $opt_disable_debug = 1 },
'help' => sub { showhelp(); },
'update' => sub { update(); },
- 'svnupdate' => sub { svnupdate(); },
'clean' => sub { clean(); },
'list-extras' => sub { list_extras; exit 0; }, # This, --enable-extras, and --disable-extras are for non-interactive managing.
'enable-extras=s@' => \@opt_enableextras, # ^
exit 0;
}
-our $non_interactive = (
- (defined $opt_library_dir) ||
+our $interactive = !(
(defined $opt_base_dir) ||
(defined $opt_config_dir) ||
(defined $opt_module_dir) ||
(defined $opt_base_dir) ||
(defined $opt_binary_dir) ||
+ (defined $opt_data_dir) ||
+ (defined $opt_log_dir) ||
(defined $opt_nointeractive) ||
(defined $opt_cc) ||
(defined $opt_noipv6) ||
(defined $opt_noepoll) ||
(defined $opt_noports) ||
(defined $opt_maxbuf) ||
+ (defined $opt_system) ||
+ (defined $opt_uid) ||
(defined $opt_use_gnutls) ||
(defined $opt_freebsd_port)
);
-our $interactive = !$non_interactive;
chomp(our $topdir = getcwd());
our $this = resolve_directory($topdir); # PWD, Regardless.
our @modlist = (); # Declare for Module List..
our %config = (); # Initiate Configuration Hash..
-$config{ME} = resolve_directory($topdir); # Present Working Directory
+our $cache_loaded = getcache();
+$config{ME} = resolve_directory($topdir); # Present Working Directory
-$config{BASE_DIR} = $config{ME};
+$config{BASE_DIR} = $config{ME}."/run";
-if (defined $opt_base_dir)
-{
+if (defined $opt_base_dir) {
$config{BASE_DIR} = $opt_base_dir;
+} elsif (defined $opt_system || defined $opt_uid) {
+ $config{BASE_DIR} = '/var/lib/inspircd';
}
-$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{LIBRARY_DIR} = resolve_directory($config{BASE_DIR}."/lib"); # Library Directory
+if (defined $opt_system || defined $opt_uid) {
+ $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} = $<;
+ $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)
-{
+if (defined $opt_config_dir) {
$config{CONFIG_DIR} = $opt_config_dir;
}
-if (defined $opt_module_dir)
-{
+if (defined $opt_module_dir) {
$config{MODULE_DIR} = $opt_module_dir;
}
-if (defined $opt_binary_dir)
-{
+if (defined $opt_binary_dir) {
$config{BINARY_DIR} = $opt_binary_dir;
}
-if (defined $opt_library_dir)
-{
- $config{LIBRARY_DIR} = $opt_library_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 | cut -c 1,2,3`); # GNUTLS Version.
$config{USE_OPENSSL} = "y";
}
-# no, let's not change these.
-$config{OPTIMITEMP} = "0"; # Default Optimisation Value
-if (!defined $opt_disable_debug)
-{
+if (!defined $opt_disable_debug) {
$config{OPTIMISATI} = "-g1"; # Optimisation Flag
-}
-else
-{
- $config{OPTIMISATI} = "-O2"; # DEBUGGING OFF!
+} 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_kqueue)
-{
- $config{USE_KQUEUE} = "y";
-}
-if (defined $opt_nokqueue)
-{
+if (defined $opt_nokqueue) {
$config{USE_KQUEUE} = "n";
}
$config{USE_POLL} = "y"; # poll enabled
$config{USE_EPOLL} = "y"; # epoll enabled
-if (defined $opt_epoll)
-{
- $config{USE_EPOLL} = "y";
-}
if (defined $opt_noepoll)
{
$config{USE_EPOLL} = "n";
}
$config{USE_PORTS} = "y"; # epoll enabled
-if (defined $opt_ports)
-{
- $config{USE_PORTS} = "y";
-}
if (defined $opt_noports)
{
$config{USE_PORTS} = "n";
}
-$config{IPV6} = "y"; # IPv6 support
-if (defined $opt_noipv6)
-{
- $config{IPV6} = "n";
-}
-chomp($config{GCCVER} = `g++ -dumpversion | cut -c 1`); # Major GCC Version
-chomp($config{GCCMINOR} = `g++ -dumpversion | cut -c 3`);
$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.
-$config{EXTRA_DIR} = ""; # Is empty.
if ($config{OSNAME} =~ /darwin/i)
{
$config{IS_DARWIN} = "YES";
$config{STARTSCRIPT} = "org.inspircd.plist"; # start script for OSX.
- $config{DESTINATION} = "LAUNCHDPATH"; # Is OSX target.
- $config{EXTRA_DIR} = " launchd_dir"; # Is OSX specific path.
+ $config{CC} = "xcrun clang++"; # C++ compiler for OSX.
+}
+else
+{
+ $config{CC} = "g++"; # C++ compiler
}
-$config{CC} = "g++"; # C++ compiler
if (defined $opt_cc)
{
$config{CC} = $opt_cc;
}
if (($config{GCCVER} eq "") || ($config{GCCMINOR} eq "")) {
- print $config{CC} . " was not found! You require g++ (the GNU C++ compiler, part of GCC) to build InspIRCd!\n";
+ 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";
+ }
exit;
}
exit;
}
-sub svnupdate
-{
- my $fail = 0;
- open(FH,"<.svn/entries") or $fail = 1;
- if ($fail) {
- print "This is not an SVN copy of InspIRCd.\n";
- exit 1;
- }
- else
- {
- close(FH);
- }
- open my $fd, "-|", "svn update";
- my $configurechanged = 0; # Needs ./configure -update
- my $rootincchanged = 0;
- my @conflicted = ();
- while (defined(my $line = <$fd>))
- {
- my ($action, $file);
- print $line;
- $line =~ m/^([ADUCG])\s+(.*)$/ or next;
- ($action, $file) = ($1, $2);
- if ($action eq "C")
- {
- push @conflicted, $file;
- if ($file eq "configure")
- {
- $configurechanged = 1;
- }
- elsif ($file =~ m/^\..*\.inc$/)
- {
- $rootincchanged = 1;
- }
- }
- elsif ($action eq "U" || $action eq "G")
- {
- if ($file eq "configure")
- {
- $configurechanged = 1;
- }
- elsif ($file =~ m/^\..*\.inc$/)
- {
- $rootincchanged = 1;
- }
- }
- }
- unless (close $fd) # close() waits for exit and returns false if the command failed
- {
- if ($! == 0)
- {
- print STDERR "Problem updating from SVN, please check above for errors\n";
- }
- else
- {
- print STDERR "Failed to run SVN: $!\n";
- }
- exit 1;
- }
- if (scalar(@conflicted) > 0)
- {
- print STDERR "\e[0;33;1mERROR:\e[0m You have local modifications which conflicted with the updates from SVN\n";
- print STDERR "Configure is not able to complete the update. Please resolve these conflicts, then run ./configure -update\n";
- print "Conflicted files: " . join ", ", @conflicted . "\n";
- exit 1;
- }
- if ($configurechanged)
- {
- system("perl configure -update");
- }
- else
- {
- print "No need to update Makefiles.\n";
- }
- if (defined $opt_rebuild) {
- system("make install");
- }
- exit;
-}
sub test_compile {
my $feature = shift;
print "Running non-interactive configure...\n" unless $interactive;
print "Checking for cache from previous configure... ";
-print ((!getcache()) ? "not found\n" : "found\n");
+print ($cache_loaded ? "found\n" : "not found\n");
$config{SYSTEM} = lc $^O;
print "Checking operating system version... $config{SYSTEM}\n";
+$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`);
+
printf "Checking if stdint.h exists... ";
$config{HAS_STDINT} = "true";
our $fail = 0;
my $version = `uname -r`;
if ($version =~ /^4\./)
{
- print "yes. Please upgrade, FreeBSD 4.x is no longer supported\n";
+ print "yes.\n";
+ print "FreeBSD 4.x is no longer supported. By ANYONE.\n";
print "To build, you will need to add the following to CXXFLAGS:\n";
print "\t-L/usr/local/lib -lgnugetopt -DHAVE_DECL_GETOPT=1\n";
}
print "no ($config{OSNAME})\n";
}
-print "Checking for upgrades to extra and third party modules... ";
-system "./modulemanager upgrade";
-
################################################################################
# BEGIN INTERACTIVE PART #
################################################################################
if ($tmpbase ne $config{BASE_DIR}) {
$config{CONFIG_DIR} = resolve_directory($config{BASE_DIR}."/conf"); # Configuration Dir
$config{MODULE_DIR} = resolve_directory($config{BASE_DIR}."/modules"); # Modules Directory
+ $config{DATA_DIR} = resolve_directory($config{BASE_DIR}."/data"); # Data Directory
+ $config{LOG_DIR} = resolve_directory($config{BASE_DIR}."/logs"); # Log Directory
$config{BINARY_DIR} = resolve_directory($config{BASE_DIR}."/bin"); # Binary Directory
- $config{LIBRARY_DIR} = resolve_directory($config{BASE_DIR}."/lib"); # Library Directory
}
dir_check("are the configuration files", "CONFIG_DIR");
dir_check("are the modules to be compiled to", "MODULE_DIR");
dir_check("is the IRCd binary to be placed", "BINARY_DIR");
- dir_check("are the IRCd libraries to be placed", "LIBRARY_DIR");
-
+ dir_check("are variable data files to be located in", "DATA_DIR");
+ dir_check("are the logs to be stored in", "LOG_DIR");
+ dir_check("do you want the build to take place", "BUILD_DIR");
+
my $chose_hiperf = 0;
if ($has_kqueue) {
yesno('USE_KQUEUE',"You are running a BSD operating system, and kqueue\nwas detected. Would you like to enable kqueue support?\nThis is likely to increase performance.\nIf you are unsure, answer yes.\n\nEnable kqueue?");
}
}
- yesno('IPV6',"Would you like to build InspIRCd with IPv6 support?\nYou can still use IPv4 addresses in your port bindings.\n\nEnable IPv6?");
- print "\n";
-
$config{USE_FREEBSD_BASE_SSL} = "n";
$config{USE_FREEBSD_PORTS_SSL} = "n";
if ($config{HAS_OPENSSL_PORT} ne "")
}
$config{USE_SSL} = "n";
+ $config{MODUPDATE} = 'n';
if ($config{HAS_GNUTLS} eq "y" || $config{HAS_OPENSSL} eq "y")
{
}
else
{
- print "\nCould not detect OpenSSL or GnuTLS. Make sure pkg-config is installed if\n";
- print "you intend to use OpenSSL, or that GnuTLS is in your path if you intend\nto use GnuTLS.\n\n";
+ print "\nCould not detect OpenSSL or GnuTLS. Make sure pkg-config is installed and\n";
+ print "is in your path.\n\n";
+ }
+
+ yesno('MODUPDATE',"Would you like to check for updates to third-party modules?");
+ print "\n";
+ if ($config{MODUPDATE} eq "y") {
+ print "Checking for upgrades to extra and third party modules... ";
+ system "./modulemanager upgrade";
}
}
+# We are on a POSIX system, we can enable POSIX extras without asking
+symlink "extra/m_regex_posix.cpp", "src/modules/m_regex_posix.cpp";
+
dumphash();
if (($config{USE_GNUTLS} eq "y") && ($config{HAS_GNUTLS} ne "y"))
chomp(my $incos = `uname -n -s -r`);
chomp(my $version = `sh src/version.sh`);
chomp(my $revision2 = getrevision());
+ my $branch = "InspIRCd-0.0";
+ if ($version =~ /^(InspIRCd-[0-9]+\.[0-9]+)\.[0-9]+/)
+ {
+ $branch = $1;
+ }
if ($writeheader == 1)
{
print "Writing \e[1;32minspircd_config.h\e[0m\n";
#define CoreExport /**/
#define DllExport /**/
-#define CONFIG_FILE "$config{CONFIG_DIR}/inspircd.conf"
+#define CONFIG_PATH "$config{CONFIG_DIR}"
+#define DATA_PATH "$config{DATA_DIR}"
+#define LOG_PATH "$config{LOG_DIR}"
#define MOD_PATH "$config{MODULE_DIR}"
#define SOMAXCONN_S "$config{_SOMAXCONN}"
-#define OPTIMISATION $config{OPTIMITEMP}
-#define LIBRARYDIR "$config{LIBRARY_DIR}"
#define ENTRYPOINT int main(int argc, char** argv)
EOF
(($config{GCCVER} == 4) && ($config{GCCMINOR} >= 3))
||
($config{GCCVER} > 4)
+ || # HACK: temporary fix for non-GCC (i.e. clang) builds
+ ($config{CC} !~ /gcc/)
) {
print FILEHANDLE "#define HASHMAP_DEPRECATED\n";
}
if ($config{HAS_STDINT} eq "true") {
print FILEHANDLE "#define HAS_STDINT\n";
}
- if ($config{IPV6} =~ /y/i) {
- print FILEHANDLE "#define IPV6\n";
- }
if ($config{HAS_EVENTFD} eq 'true') {
print FILEHANDLE "#define HAS_EVENTFD\n";
}
+ if ($config{OSNAME} !~ /DARWIN/i) {
+ print FILEHANDLE "#define HAS_CLOCK_GETTIME\n";
+ }
my $use_hiperf = 0;
if (($has_kqueue) && ($config{USE_KQUEUE} eq "y")) {
print FILEHANDLE "#define USE_KQUEUE\n";
print FILEHANDLE "\n#include \"threadengines/threadengine_pthread.h\"\n\n#endif\n";
close(FILEHANDLE);
- open(FILEHANDLE, ">include/inspircd_se_config.h.tmp");
- print FILEHANDLE <<EOF;
-/* Auto generated by configure, do not modify or commit to svn! */
-#ifndef __CONFIGURATION_SOCKETENGINE__
-#define __CONFIGURATION_SOCKETENGINE__
-
-#include "socketengines/$config{SOCKETENGINE}.h"
-
-#endif
-EOF
- close(FILEHANDLE);
-
open(FILEHANDLE, ">include/inspircd_version.h.tmp");
print FILEHANDLE <<EOF;
+#define BRANCH "$branch"
#define VERSION "$version"
#define REVISION "$revision2"
#define SYSTEM "$incos"
EOF
close FILEHANDLE;
- for my $file (qw(include/inspircd_config.h include/inspircd_se_config.h include/inspircd_version.h)) {
+ for my $file (qw(include/inspircd_config.h include/inspircd_version.h)) {
my $diff = 0;
open my $fh1, $file or $diff = 1;
open my $fh2, $file.'.tmp' or die "Can't read $file.tmp that we just wrote: $!";
# but right now we only parse .inspircd.inc to form './inspircd'
prepare_dynamic_makefile();
- print "Writing \e[1;32mMakefiles\e[0m\n";
-
- opendir(DIRHANDLE, $this);
+ my @dotfiles = qw(main.mk inspircd);
+ push @dotfiles, 'org.inspircd.plist' if $config{OSNAME} eq 'darwin';
- foreach my $name (sort readdir(DIRHANDLE)) {
- if ($name =~ /^\.(.+)\.inc$/) {
- $file = $1;
-
- # Bug #353, omit this on non-darwin
- next if (($config{OSNAME} !~ /darwin/) && ($file eq "org.inspircd.plist"));
+ foreach my $file (@dotfiles) {
+ open(FILEHANDLE, "make/template/$file") or die "Can't open make/template/$file: $!";
+ $_ = join '', <FILEHANDLE>;
+ close(FILEHANDLE);
- # All .name.inc files need parsing!
- open(FILEHANDLE, ".$file.inc") or die ("Can't open .$file.inc");
- $_ = join '', <FILEHANDLE>;
- close(FILEHANDLE);
+ $config{BUILD_DIR} ||= resolve_directory($config{ME}."/build");
+ for my $var (qw(
+ CC SYSTEM BASE_DIR CONFIG_DIR MODULE_DIR BINARY_DIR BUILD_DIR DATA_DIR UID
+ STARTSCRIPT DESTINATION SOCKETENGINE
+ )) {
+ s/\@$var\@/$config{$var}/g;
+ }
+ s/\@EXECUTABLE\@/$exe/ if defined $exe;
+ s/\@VERSION\@/$version/ if defined $version;
+
+ if ($file eq 'main.mk') {
+ print "Writing \e[1;32mGNUmakefile\e[0m ...\n";
+
+ my $mk_tmp = $_;
+ s/\@IFDEF (\S+)/ifdef $1/g;
+ s/\@IFNDEF (\S+)/ifndef $1/g;
+ s/\@IFEQ (\S+) (\S+)/ifeq ($1,$2)/g;
+ s/\@ELSIFEQ (\S+) (\S+)/else ifeq ($1,$2)/g;
+ s/\@ELSE/else/g;
+ s/\@ENDIF/endif/g;
+ s/ *\@BSD_ONLY .*\n//g;
+ s/\@GNU_ONLY //g;
+ s/\@DO_EXPORT (.*)/export $1/g;
+ open MKF, '>GNUmakefile' or die "Can't write to GNUmakefile: $!";
+ print MKF $_;
+ close MKF;
+
+ print "Writing \e[1;32mBSDmakefile\e[0m ...\n";
+ $_ = $mk_tmp;
+ s/\@IFDEF (\S+)/.if defined($1)/g;
+ s/\@IFNDEF (\S+)/.if !defined($1)/g;
+ s/\@IFEQ (\S+) (\S+)/.if $1 == $2/g;
+ s/\@ELSIFEQ (\S+) (\S+)/.elif $1 == $2/g;
+ s/\@ELSE/.else/g;
+ s/\@ENDIF/.endif/g;
+ s/\@BSD_ONLY //g;
+ s/ *\@GNU_ONLY .*\n//g;
+ $mk_tmp = $_;
+ $mk_tmp =~ s#\@DO_EXPORT (.*)#"MAKEENV += ".join ' ', map "$_='\${$_}'", split /\s/, $1#eg;
+ open MKF, '>BSDmakefile' or die "Can't write to BSDmakefile: $!";
+ print MKF $mk_tmp;
+ close MKF;
+ } else {
print "Writing \e[1;32m$file\e[0m ...\n";
- for my $var (qw(
- CC SYSTEM BASE_DIR CONFIG_DIR MODULE_DIR BINARY_DIR LIBRARY_DIR
- STARTSCRIPT DESTINATION EXTRA_DIR SOCKETENGINE CORE_FLAGS
- )) {
- s/\@$var\@/$config{$var}/g;
- }
- s/\@EXECUTABLE\@/$exe/ if defined $exe;
- s/\@VERSION\@/$version/ if defined $version;
-
- if ($file eq 'Makefile') {
- my $mk_tmp = $_;
- s/\@IFDEF (\S+)/ifdef $1/g;
- s/\@IFNDEF (\S+)/ifndef $1/g;
- s/\@IFEQ (\S+) (\S+)/ifeq ($1,$2)/g;
- s/\@ELSIFEQ (\S+) (\S+)/else ifeq ($1,$2)/g;
- s/\@ELSE/else/g;
- s/\@ENDIF/endif/g;
- s/ *\@BSD_ONLY .*\n//g;
- s/\@GNU_ONLY //g;
- s/\@DO_EXPORT (.*)/export $1/g;
- open MKF, '>GNUmakefile' or die "Can't write to GNUmakefile: $!";
- print MKF $_;
- close MKF;
- $_ = $mk_tmp;
- s/\@IFDEF (\S+)/.if defined($1)/g;
- s/\@IFNDEF (\S+)/.if !defined($1)/g;
- s/\@IFEQ (\S+) (\S+)/.if $1 == $2/g;
- s/\@ELSIFEQ (\S+) (\S+)/.elif $1 == $2/g;
- s/\@ELSE/.else/g;
- s/\@ENDIF/.endif/g;
- s/\@BSD_ONLY //g;
- s/ *\@GNU_ONLY .*\n//g;
- $mk_tmp = $_;
- $mk_tmp =~ s#\@DO_EXPORT (.*)#"MAKEENV += ".join ' ', map "$_='\${$_}'", split /\s/, $1#eg;
- open MKF, '>BSDmakefile' or die "Can't write to BSDmakefile: $!";
- print MKF $mk_tmp;
- close MKF;
- } else {
- open(FILEHANDLE, ">$file") or die("Can't write to $file: $!\n");
- print FILEHANDLE $_;
- close(FILEHANDLE);
- }
+ open(FILEHANDLE, ">$file") or die("Can't write to $file: $!\n");
+ print FILEHANDLE $_;
+ close(FILEHANDLE);
}
}
- closedir(DIRHANDLE);
- # Make inspircd executable!
- chmod 0744, 'inspircd';
+ chmod 0755, 'inspircd';
}
sub depcheck
my %extras = ();
EXTRA: for my $extra (@extras) {
next if (File::Spec->curdir() eq $extra || File::Spec->updir() eq $extra);
- next if ($extra eq '.svn');
my $abs_extra = File::Spec->catfile($abs_srcdir, "extra", $extra);
my $abs_source = File::Spec->catfile($abs_srcdir, $extra);
next unless ($extra =~ m/\.(cpp|h)$/ || (-d $abs_extra)); # C++ Source/Header, or directory