Add use_versioned_archname to Configure
authorDavid Golden <dagolden@cpan.org>
Wed, 10 Nov 2010 16:15:50 +0000 (11:15 -0500)
committerDavid Golden <dagolden@cpan.org>
Tue, 5 Feb 2013 15:29:58 +0000 (10:29 -0500)
This patch adds 'use_versioned_archname' as a Configure option.
When set, it includes 'api_versionstring' in 'archname'. E.g.
x86_64-linux-5.13.6-thread-multi.  It is unset by default.

This feature was requested by Tim Bunce, who observed that
INSTALL_BASE creates a library structure that does not
differentiate by perl version.  Instead, it places architecture
specific files in "$install_base/lib/perl5/$archname".  This makes
it difficult to use a common INSTALL_BASE library path with
multiple versions of perl.

By setting -Duse_versioned_archname, the $archname will be
distinct for architecture *and* API version, allowing mixed use of
INSTALL_BASE.

This patch demonstrates the desired effect for discussion.  Actual
changes would need to be made upstream in metaconfig and
integrated back into blead.

Configure
Porting/Glossary

index 7a6f63f..b73367f 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -330,6 +330,7 @@ archlib=''
 archlibexp=''
 d_archlib=''
 installarchlib=''
+use_versioned_archname=''
 archname=''
 myarchname=''
 d_atolf=''
@@ -6017,6 +6018,34 @@ esac
 rp='What is your architecture name'
 . ./myread
 archname="$ans"
+
+: optionally add api version to the architecture for versioned archlibs
+case "$use_versioned_archname" in
+$define|true|[yY]*)     dflt='y';;
+*)                      dflt='n';;
+esac
+rp='Add the Perl API version to your archname?'
+. ./myread
+case "$ans" in
+y|Y)   val="$define" ;;
+*)      val="$undef" ;;
+esac
+set use_versioned_archname
+eval $setvar
+case "$use_versioned_archname" in
+$define)
+        case "$archname" in
+        *-$api_versionstring)
+                echo "...and architecture name already has -$api_versionstring" >&4
+                ;;
+        *)
+                archname="$archname-$api_versionstring"
+                echo "...setting architecture name to $archname." >&4
+                ;;
+        esac
+        ;;
+esac
+
 case "$usethreads" in
 $define)
        echo "Threads selected." >&4
@@ -23859,6 +23888,7 @@ usesitecustomize='$usesitecustomize'
 usesocks='$usesocks'
 usethreads='$usethreads'
 usevendorprefix='$usevendorprefix'
+use_versioned_archname='$use_versioned_archname'
 usevfork='$usevfork'
 usrinc='$usrinc'
 uuname='$uuname'
index 68312a3..0fbac11 100644 (file)
@@ -5018,6 +5018,10 @@ use64bitint (use64bits.U):
        This may mean using for example "long longs", while your memory
        may still be limited to 2 gigabytes.
 
+use_versioned_archname (archname.U):
+       This variable indicates whether to include the $api_versionstring
+       as a component of the $archname.
+
 usecrosscompile (Cross.U):
        This variable conditionally defines the USE_CROSS_COMPILE symbol,
        and indicates that Perl has been cross-compiled.