X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=make%2Fconfigure.pm;h=87a968a5bab4206015890b0b9e07b35097afd3cd;hb=07b12e72497b3f0e6e53eebab032e92e1f789f0a;hp=48bd8db3842a445d352f79a7236f240261a11c74;hpb=c0aba5b728b0a921d95ec120aa638dab1520b42f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/make/configure.pm b/make/configure.pm index 48bd8db38..87a968a5b 100644 --- a/make/configure.pm +++ b/make/configure.pm @@ -1,10 +1,9 @@ # # InspIRCd -- Internet Relay Chat Daemon # -# Copyright (C) 2012-2017 Peter Powell -# Copyright (C) 2008 Robin Burchell -# Copyright (C) 2007-2008 Craig Edwards -# Copyright (C) 2008 Thomas Stagner +# Copyright (C) 2013-2019 Sadie Powell +# Copyright (C) 2012 Robby +# Copyright (C) 2007-2008 Craig Edwards # Copyright (C) 2007 Dennis Friis # # This file is part of InspIRCd. InspIRCd is free software: you can @@ -31,15 +30,15 @@ use feature ':5.10'; use strict; use warnings FATAL => qw(all); -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(abs2rel 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'; @@ -59,7 +58,7 @@ our @EXPORT = qw(CONFIGURE_CACHE_FILE sub __get_socketengines { my @socketengines; - foreach () { + foreach (<${\CONFIGURE_ROOT}/src/socketengines/socketengine_*.cpp>) { s/src\/socketengines\/socketengine_(\w+)\.cpp/$1/; push @socketengines, $1; } @@ -90,7 +89,6 @@ sub __get_template_settings($$$) { $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; } @@ -107,7 +105,6 @@ sub cmd_clean { } sub cmd_help { - my $PWD = getcwd(); my $SELIST = join ', ', __get_socketengines(); print <"; - close(COMPILER); + open(my $fh, "| $compiler -E - $args ${\CONFIGURE_ERROR_PIPE}") or return 0; + print $fh "#include <$header>"; + close $fh; return !$?; } sub write_configure_cache(%) { unless (-e CONFIGURE_DIRECTORY) { - print_format "Creating <|GREEN ${\CONFIGURE_DIRECTORY}|> ...\n"; + print_format "Creating <|GREEN ${\abs2rel CONFIGURE_DIRECTORY, CONFIGURE_ROOT}|> ...\n"; create_directory CONFIGURE_DIRECTORY, 0750 or print_error "unable to create ${\CONFIGURE_DIRECTORY}: $!"; } - print_format "Writing <|GREEN ${\CONFIGURE_CACHE_FILE}|> ...\n"; + print_format "Writing <|GREEN ${\abs2rel CONFIGURE_CACHE_FILE, CONFIGURE_ROOT}|> ...\n"; my %config = @_; write_config_file CONFIGURE_CACHE_FILE, %config; } @@ -228,7 +233,7 @@ sub write_configure_cache(%) { 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(.+)$/; @@ -255,153 +260,77 @@ sub parse_templates($$$) { my %settings = __get_template_settings($config, $compiler, $version); # Iterate through files in make/template. - foreach () { - print_format "Parsing <|GREEN $_|> ...\n"; - open(TEMPLATE, $_) or print_error "unable to read $_: $!"; - my (@lines, $mode, @platforms, %targets); + foreach my $template (<${\CONFIGURE_ROOT}/make/template/*>) { + print_format "Parsing <|GREEN ${\abs2rel $template, CONFIGURE_ROOT}|> ...\n"; + open(my $fh, $template) or print_error "unable to read $template: $!"; + my (@lines, $mode, @platforms, @targets); # First pass: parse template variables and directives. - while (my $line =