This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add non-XS extensions to known_extensions.
authorNicholas Clark <nick@ccl4.org>
Fri, 14 Jun 2013 14:56:28 +0000 (16:56 +0200)
committerNicholas Clark <nick@ccl4.org>
Tue, 2 Jul 2013 11:56:13 +0000 (13:56 +0200)
Previously "known_extensions" was misnamed, as it only contained known XS
extensions. grep.cpan.me suggests that there are only 10 mentions of it
outside the core, and none of them rely on this existing behaviour.

Update the descriptions of extensions, known_extensions and nonxs_ext in
Porting/Glossary.

These changes need replicating into configure.com.

Configure
Porting/Glossary
win32/FindExt.pm

index dbccc28..e4e7d81 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -22353,10 +22353,10 @@ esac
 : Check extensions
 echo " "
 echo "Looking for extensions..." >&4
-: If we are using the old config.sh, known_extensions may contain
-: old or inaccurate or duplicate values.
-known_extensions=''
+: If we are using the old config.sh, nonxs_extensions and xs_extensions may
+: contain old or inaccurate or duplicate values.
 nonxs_extensions=''
+xs_extensions=''
 : We do not use find because it might not be available.
 : We do not just use MANIFEST because the user may have dropped
 : some additional extensions into the source tree and expect them
@@ -22372,7 +22372,7 @@ find_extensions='
            DynaLoader|dynaload) ;;
            *)
            this_ext=`echo $xxx | $sed -e s/-/\\\//g`;
-           echo " $known_extensions $nonxs_extensions" > $$.tmp;
+           echo " $xs_extensions $nonxs_extensions" > $$.tmp;
            if $contains " $this_ext " $$.tmp; then
                echo >&4;
                echo "Duplicate directories detected for extension $xxx" >&4;
@@ -22393,9 +22393,9 @@ find_extensions='
            fi;
            $ls -1 $xxx > $$.tmp;
            if   $contains "\.xs$" $$.tmp > /dev/null 2>&1; then
-               known_extensions="$known_extensions $this_ext";
+               xs_extensions="$xs_extensions $this_ext";
            elif $contains "\.c$"  $$.tmp > /dev/null 2>&1; then
-               known_extensions="$known_extensions $this_ext";
+               xs_extensions="$xs_extensions $this_ext";
            elif $test -d $xxx; then
                nonxs_extensions="$nonxs_extensions $this_ext";
            fi;
@@ -22416,17 +22416,18 @@ cd "$rsrc/ext"
 set X
 shift
 eval $find_extensions
-set X $known_extensions
+set X $xs_extensions
 shift
-known_extensions=`echo "$*" | tr ' ' $trnl | $sort | tr $trnl ' '`
+xs_extensions=`echo "$*" | tr ' ' $trnl | $sort | tr $trnl ' '`
 set X $nonxs_extensions
 shift
 nonxs_extensions=`echo "$*" | tr ' ' $trnl | $sort | tr $trnl ' '`
 cd "$tdir"
+known_extensions=`echo $nonxs_extensions $xs_extensions  | tr ' ' $trnl | $sort | tr $trnl ' '`
 
 : Now see which are supported on this system.
 avail_ext=''
-for xxx in $known_extensions ; do
+for xxx in $xs_extensions ; do
        case "$xxx" in
        DB_File|db_file)
                case "$i_db" in
index b57f990..1f5b8c9 100644 (file)
@@ -2666,7 +2666,7 @@ expr (Loc.U):
 
 extensions (Extensions.U):
        This variable holds a list of all extension files (both XS and
-       non-xs linked into the package.  It is propagated to Config.pm
+       non-xs) installed with the package.  It is propagated to Config.pm
        and is typically used to test whether a particular extension
        is available.
 
@@ -3620,8 +3620,12 @@ ivtype (perlxv.U):
        This variable contains the C type used for Perl's IV.
 
 known_extensions (Extensions.U):
-       This variable holds a list of all XS extensions included in
-       the package.
+       This variable holds a list of all extensions (both XS and non-xs)
+       included in the package source distribution.  This information is
+       only really of use during the Perl build, as the list makes no
+       distinction between extensions which were build and installed, and
+       those which where not.  See "extensions" for the list of extensions
+       actually built and available.
 
 ksh (Loc.U):
        This variable is defined but not used by Configure.
@@ -3990,8 +3994,10 @@ nm_so_opt (usenm.U):
        Maybe Linux should just always set usenm=false.
 
 nonxs_ext (Extensions.U):
-       This variable holds a list of all non-xs extensions included
-       in the package.  All of them will be built.
+       This variable holds a list of all non-xs extensions built and
+       installed by the package.  By default, all non-xs extensions
+       distributed will be built, with the exception of platform-specific
+       extensions (currently only one VMS specific extension).
 
 nroff (Loc.U):
        This variable is used internally by Configure to determine the
index 2e4d6c1..41065d2 100644 (file)
@@ -92,8 +92,10 @@ sub _ext_ne {
 }
 
 *extensions = _ext_ne('known');
-# faithfully copy Configure in not including nonxs extensions for the nonce
-*known_extensions = _ext_ne('nonxs');
+
+sub known_extensions {
+    sort keys %ext;
+}
 
 sub is_static
 {