summaryrefslogtreecommitdiff
path: root/lib/Config/Extensions.pm
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2004-12-29 21:25:29 +0000
committerNicholas Clark <nick@ccl4.org>2004-12-29 21:25:29 +0000
commit3c1a32f06404537cfee337d494f479926487c7fa (patch)
treed4fe577522b7c2c95be3983e475c86c9aecf491e /lib/Config/Extensions.pm
parent39cd9b99380da8b915ef4e52d215f1675bff6753 (diff)
downloadperl-3c1a32f06404537cfee337d494f479926487c7fa.tar.gz
Experimental module intended to simplify core regression tests
p4raw-id: //depot/perl@23707
Diffstat (limited to 'lib/Config/Extensions.pm')
-rw-r--r--lib/Config/Extensions.pm63
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/Config/Extensions.pm b/lib/Config/Extensions.pm
new file mode 100644
index 0000000000..82fb9e09e8
--- /dev/null
+++ b/lib/Config/Extensions.pm
@@ -0,0 +1,63 @@
+package Config::Extensions;
+use strict;
+use vars qw(%Extensions $VERSION @ISA @EXPORT_OK);
+use Config;
+require Exporter;
+
+$VERSION = '0.01';
+@ISA = 'Exporter';
+@EXPORT_OK = '%Extensions';
+
+foreach my $type (qw(static dynamic nonxs)) {
+ foreach (split /\s+/, $Config{$type . '_ext'}) {
+ s!/!::!g;
+ $Extensions{$_} = $type;
+ }
+}
+
+1;
+__END__
+=head1 NAME
+
+Config::Extensions - hash lookup of which core extensions were built.
+
+=head1 SYNOPSIS
+
+ use Config::Extensions '%Extensions';
+ if ($Extensions{PerlIO::via}) {
+ # This perl has PerlIO::via built
+ }
+
+=head1 DESCRIPTION
+
+The Config::Extensions module provides a hash C<%Extensions> containing all
+the core extensions that were enabled for this perl. The hash is keyed by
+extension name, with each entry having one of 3 possible values:
+
+=over 4
+
+=item dynamic
+
+The extension is dynamically linked
+
+=item nonxs
+
+The extension is pure perl, so doesn't need linking to the perl executable
+
+=item static
+
+The extension is statically linked to the perl binary
+
+=back
+
+As all values evaluate to true, a simple C<if> test is good enough to determine
+whether an extension is present.
+
+All the data uses to generate the C<%Extensions> hash is already present in
+the C<Config> module, but not in such a convenient format to quickly reference.
+
+=head1 AUTHOR
+
+Nicholas Clark <nick@ccl4.org>
+
+=cut