[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fix libtool on HP-UX/IA-64
From: |
Albert Chin |
Subject: |
Re: Fix libtool on HP-UX/IA-64 |
Date: |
Sun, 6 Nov 2005 18:27:03 -0600 |
User-agent: |
Mutt/1.5.6i |
On Sat, Nov 05, 2005 at 08:34:23AM +0100, Ralf Wildenhues wrote:
> * Albert Chin wrote on Fri, Nov 04, 2005 at 06:15:49PM CET:
> > The following patch fixes libtool-1.5 on HP-UX 11.23/IA-64.
> > 1. If you specify +b and -L, -L doesn't embed the path into
> > DT_RPATH. Hence, removal of hardcode_minus_L=yes.
> > 2. If you specify only -L's without +nodefaultrpath, they are
> > embedded into DT_RPATH.
> > 3. It's just easier to rely on +b throughout, like hppa*64.
> >
> > There is one problem. If a library is created _without_ +b (because it
> > has no dependencies) but -L in LDFLAGS, the paths from -L will get
> > hardcoded into the library. Uck! The fix is to add
> > ${wl}+nodefaultrpath. Should we do this for _every_ library we create
> > on ia64*? I say yes.
>
> I agree. The patch is ok with me. Could you be bothered to
> forward-port to HEAD though? Knowing me, the logic is just a
> tad too nontrivial that I won't mess it up without testing.
> I'll apply to both branches then.
Patch below.
--
albert chin (address@hidden)
-- snip snip
2005-11-04 Albert Chin-A-Young <address@hidden>
* libtool.m4 (_LT_LINKER_SHLIBS, _LT_LANG_CXX_CONFIG):
hardcode_libdir_flag_spec and hardcode_minus_L are the
same for hppa*64 and ia64*. Don't set
hardcode_libdir_flag_spec='-L$libdir' on ia64* because
if you specify +b and -L, +b overrides what is set into
DT_RPATH.
Index: libltdl/m4/libtool.m4
===================================================================
RCS file: /cvsroot/libtool/libtool/libltdl/m4/libtool.m4,v
retrieving revision 1.32
diff -u -3 -p -r1.32 libtool.m4
--- libltdl/m4/libtool.m4 1 Nov 2005 16:24:10 -0000 1.32
+++ libltdl/m4/libtool.m4 5 Nov 2005 17:26:55 -0000
@@ -4383,25 +4383,15 @@ _LT_EOF
esac
fi
if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ hppa*64*|ia64*)
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
;;
- ia64*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- ;;
*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
@@ -5396,32 +5386,21 @@ if test "$_lt_caught_CXX_error" != yes;
hpux10*|hpux11*)
if test $with_gnu_ld = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- ;;
- ia64*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ hppa*64*|ia64*)
;;
*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
;;
esac
fi
case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
- ia64*)
+ hppa*64*|ia64*)
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
- # but as the default
- # location of the library.
;;
*)
_LT_TAGVAR(hardcode_direct, $1)=yes