summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjlam <jlam@pkgsrc.org>2005-08-05 19:46:41 +0000
committerjlam <jlam@pkgsrc.org>2005-08-05 19:46:41 +0000
commitca47ca0ada4c5948e60115d6e63cd48ed7902654 (patch)
treee842f8c3d1bac6ec9e9562b51fc56ff7e2a3f493
parentc27abb4a8785cf89fd3289f873d59c595986351e (diff)
downloadpkgsrc-ca47ca0ada4c5948e60115d6e63cd48ed7902654.tar.gz
Hardcode a workaround for perl's DynaLoader.a which is definitely a
PIC code archive, but libtool isn't smart enough to realize it. Munge the name within cmd-sink-libtool into something that will make libtool recognize it as a PIC code archive. We unmunge it in arg-pp-main so non-libtool wrappers see the right thing. This let's us use libtool to link applications with an embedded Perl interpreter. I feel so dirty...
-rw-r--r--mk/buildlink3/cmd-sink-libtool15
-rw-r--r--mk/wrapper/arg-pp-main15
2 files changed, 28 insertions, 2 deletions
diff --git a/mk/buildlink3/cmd-sink-libtool b/mk/buildlink3/cmd-sink-libtool
index 44311d935d0..75599527020 100644
--- a/mk/buildlink3/cmd-sink-libtool
+++ b/mk/buildlink3/cmd-sink-libtool
@@ -1,4 +1,4 @@
-# $NetBSD: cmd-sink-libtool,v 1.1 2004/09/21 15:01:40 jlam Exp $
+# $NetBSD: cmd-sink-libtool,v 1.2 2005/08/05 19:46:41 jlam Exp $
#
# Copyright (c) 2004 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -40,6 +40,19 @@ while ! queue_is_empty cmdbuf; do
$debug_log $wrapperlog " (cmd-sink-libtool) pop: $arg"
case $arg in
##############################################################
+ # Hardcode a workaround for perl's DynaLoader.a which is
+ # definitely a PIC code archive, but libtool isn't smart
+ # enough to realize it. Munge the name into something that
+ # will make libtool recognize it as a PIC code archive. We
+ # unmunge it in arg-pp-main so non-libtool wrappers see the
+ # right thing.
+ ##############################################################
+ */DynaLoader.a)
+ arg="${arg%/DynaLoader.a}/libDynaLoader_pic.a"
+ $debug_log $wrapperlog " (cmd-sink-libtool) to: $arg"
+ . $buildcmd
+ ;;
+ ##############################################################
# If we're in "compile" mode, then don't add any linker options
# to the command line.
##############################################################
diff --git a/mk/wrapper/arg-pp-main b/mk/wrapper/arg-pp-main
index 45766a56de9..537c812c456 100644
--- a/mk/wrapper/arg-pp-main
+++ b/mk/wrapper/arg-pp-main
@@ -1,4 +1,4 @@
-# $NetBSD: arg-pp-main,v 1.4 2005/02/14 21:33:36 jlam Exp $
+# $NetBSD: arg-pp-main,v 1.5 2005/08/05 19:46:41 jlam Exp $
#
# Copyright (c) 2005 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -36,6 +36,19 @@
case $arg in
######################################################################
+# Hardcode a workaround for perl's DynaLoader.a which is definitely
+# a PIC code archive, but libtool isn't smart enough to realize it.
+# cmd-sink-libtool munged it into something libtool recognizes, but
+# now we need to unmunge it so that the compiler/linker are called
+# with the right name for the archive.
+######################################################################
+*/libDynaLoader_pic.a)
+ arg="${arg%/libDynaLoader_pic.a}/DynaLoader.a"
+ prepend_queue argbuf "$arg"
+ $debug_log $wrapperlog " (arg-pp-main) pre: $arg"
+ argmatch=yes
+ ;;
+######################################################################
# Split direct paths to shared libraries into the "-Ldir -llib"
# equivalent.
######################################################################