]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - make/configure.pm
Improve feature detection in configure.
[user/henk/code/inspircd.git] / make / configure.pm
index 253738b2d1ffcbd5843ce4475e695343f47fef5a..67e91c825aeb44cf2ad6ec4c6e8647dd206051b2 100644 (file)
@@ -31,10 +31,29 @@ use warnings FATAL => qw(all);
 use Exporter 'import';
 use POSIX;
 use make::utilities;
-our @EXPORT = qw(promptnumeric dumphash is_dir getmodules getrevision getcompilerflags getlinkerflags getdependencies nopedantic resolve_directory yesno showhelp promptstring_s);
+our @EXPORT = qw(test_file test_header promptnumeric dumphash is_dir getmodules getrevision getcompilerflags getlinkerflags getdependencies nopedantic resolve_directory yesno showhelp promptstring_s module_installed);
 
 my $no_git = 0;
 
+sub test_file($$;$) {
+       my ($cc, $file, $args) = @_;
+       my $status = 0;
+       $args ||= '';
+       $status ||= system "$cc -o __test_$file make/test/$file $args >/dev/null 2>&1";
+       $status ||= system "./__test_$file >/dev/null 2>&1";
+       unlink  "./__test_$file";
+       return !$status;
+}
+
+sub test_header($$;$) {
+       my ($cc, $header, $args) = @_;
+       $args ||= '';
+       open(CC, "| $cc -E - $args >/dev/null 2>&1") or return 0;
+       print CC "#include <$header>";
+       close(CC);
+       return !$?;
+}
+
 sub yesno {
        my ($flag,$prompt) = @_;
        print "$prompt [\e[1;32m$main::config{$flag}\e[0m] -> ";
@@ -193,6 +212,13 @@ sub promptnumeric($$)
        }
 }
 
+sub module_installed($)
+{
+       my $module = shift;
+       eval("use $module;");
+       return !$@;
+}
+
 sub promptstring_s($$)
 {
        my ($prompt,$default) = @_;
@@ -281,6 +307,10 @@ InspIRCd 1.0.x, are also allowed.
                                [$PWD]
   --config-dir=[directory]     Config file directory for config and SSL certs
                                [$PWD/conf]
+  --log-dir=[directory]               Log file directory for logs
+                              [$PWD/logs]
+  --data-dir=[directory]       Data directory for variable data, such as the permchannel configuration and the XLine database
+                              [$PWD/data]
   --module-dir=[directory]     Modules directory for loadable modules
                                [$PWD/modules]
   --binary-dir=[directory]     Binaries directory for core binary