summaryrefslogtreecommitdiff
path: root/Configure
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2013-06-18 12:00:38 +0200
committerNicholas Clark <nick@ccl4.org>2013-07-02 15:17:00 +0200
commit08b889303304849ba3ce08a3a08d913862c17156 (patch)
treeb20127ab0a2277d6868f886c0bf97c6ac43a08f3 /Configure
parentf7b3892b9e45c6994685c9a625d3ea2b52642167 (diff)
downloadperl-08b889303304849ba3ce08a3a08d913862c17156.tar.gz
Also add Encode's sub-modules to known_extensions when building statically.
There is code in Configure to treat Encode specially when it is specified as a statically linked extension. By default, Encode builds separated shared objects for each of its subdirectories. This works well with DynaLoader, and the top level perl Makefile doesn't even notice this, because it doesn't have to list these libraries as things it links with at compile time. For a static link, Encode builds a separate *.a file for each of its subdirectories. The top level Makefile *does* need to know about these, as a static link requires them all to be listed. Hence the work-around is to treat Encode as a set of nested modules if linked statically. We can't do this in Makefile.SH because the various Encode submodules are installed as separate *.a files in the tree, and so need to continue to be treated as distinct modules in case ExtUtils::MakeMaker is asked to (re)link a static perl with an additional extension. I suspect that the most elegant fix would be to tweak Encode's top level Makefile.PL to link everything into one *.a if it is building statically. I'm not sure how to do that, and it would need to be accepted upstream.
Diffstat (limited to 'Configure')
-rwxr-xr-xConfigure1
1 files changed, 1 insertions, 0 deletions
diff --git a/Configure b/Configure
index e4e7d81b1c..21c495eb62 100755
--- a/Configure
+++ b/Configure
@@ -22730,6 +22730,7 @@ case " $static_ext " in
cd "$rsrc/cpan"
for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
static_ext="$static_ext Encode/$xxx"
+ known_extensions="$known_extensions Encode/$xxx"
done
cd "$tdir"
;;