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 ([EMAIL PROTECTED]) -- snip snip 2005-11-04 Albert Chin-A-Young <[EMAIL PROTECTED]> * 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