---
 libltdl/config/ltmain.m4sh |   43 ++++++++++++++++++++++++++++++++++++-------
 libltdl/m4/libtool.m4      |   15 +++++++++++----
 2 files changed, 47 insertions(+), 11 deletions(-)

diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh
index 1a8041f..206bda9 100644
--- a/libltdl/config/ltmain.m4sh
+++ b/libltdl/config/ltmain.m4sh
@@ -594,6 +594,22 @@ func_resolve_sysroot ()
   esac
 }
 
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case "$lt_sysroot:$1" in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result==$func_stripname_result
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
 
 # func_infer_tag arg
 # Infer tagged configuration to use if any are available and
@@ -5040,14 +5056,14 @@ func_mode_link ()
 
        # Find the relevant object directory and library name.
        if test "X$installed" = Xyes; then
-         if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+         if test ! -f "$lt_sysroot$libdir/$linklib" && test -f 
"$abs_ladir/$linklib"; then
            func_warning "library \`$lib' was moved."
            dir="$ladir"
            absdir="$abs_ladir"
            libdir="$abs_ladir"
          else
-           dir="$libdir"
-           absdir="$libdir"
+           dir="$lt_sysroot$libdir"
+           absdir="$lt_sysroot$libdir"
          fi
          test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
        else
@@ -6082,7 +6098,8 @@ func_mode_link ()
        # If the user specified any rpath flags, then add them.
        temp_xrpath=
        for libdir in $xrpath; do
-         temp_xrpath="$temp_xrpath -R$libdir"
+         func_replace_sysroot "$libdir"
+         temp_xrpath="$temp_xrpath -R$func_replace_sysroot_result"
          case "$finalize_rpath " in
          *" $libdir "*) ;;
          *) finalize_rpath="$finalize_rpath $libdir" ;;
@@ -6528,6 +6545,8 @@ EOF
          for libdir in $rpath; do
            if test -n "$hardcode_libdir_flag_spec"; then
              if test -n "$hardcode_libdir_separator"; then
+               func_replace_sysroot "$libdir"
+               libdir=$func_replace_sysroot_result
                if test -z "$hardcode_libdirs"; then
                  hardcode_libdirs="$libdir"
                else
@@ -7692,7 +7711,17 @@ EOF
                eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
                test -z "$libdir" && \
                  func_fatal_error "\`$deplib' is not a valid libtool archive"
-               newdependency_libs="$newdependency_libs $libdir/$name"
+               newdependency_libs="$newdependency_libs 
${lt_sysroot:+=}$libdir/$name"
+               ;;
+             -L*)
+               func_stripname -L '' "$i"
+               func_replace_sysroot "$func_stripname_result"
+               newdeplibs="$newdeplibs -L$func_replace_sysroot_result"
+               ;;
+             -R*)
+               func_stripname -R '' "$i"
+               func_replace_sysroot "$func_stripname_result"
+               newdeplibs="$newdeplibs -R$func_replace_sysroot_result"
                ;;
              *) newdependency_libs="$newdependency_libs $deplib" ;;
              esac
@@ -7708,7 +7737,7 @@ EOF
                eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
                test -z "$libdir" && \
                  func_fatal_error "\`$lib' is not a valid libtool archive"
-               newdlfiles="$newdlfiles $libdir/$name"
+               newdlfiles="$newdlfiles ${lt_sysroot:+=}$libdir/$name"
                ;;
              *) newdlfiles="$newdlfiles $lib" ;;
              esac
@@ -7727,7 +7756,7 @@ EOF
                eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
                test -z "$libdir" && \
                  func_fatal_error "\`$lib' is not a valid libtool archive"
-               newdlprefiles="$newdlprefiles $libdir/$name"
+               newdlprefiles="$newdlprefiles ${lt_sysroot:+=}$libdir/$name"
                ;;
              esac
            done
diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4
index cf24144..81cf740 100644
--- a/libltdl/m4/libtool.m4
+++ b/libltdl/m4/libtool.m4
@@ -6473,13 +6473,20 @@ if AC_TRY_EVAL(ac_compile); then
           test $p = "-R"; then
         prev=$p
         continue
-       else
-        prev=
        fi
 
+       # Expand the sysroot to ease extracting the directories later.
+       case $p in
+       -L*) func_stripname '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+       -R*) func_stripname '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+       -l*) func_stripname '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+       esac
+       case $p in
+       =*) func_stripname '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
        if test "$pre_test_object_deps_done" = no; then
-        case ${prev}${p} in
-        -L* | -R*)
+        case ${prev} in
+        -L | -R)
           # Internal compiler library paths should come after those
           # provided the user.  The postdeps already come after the
           # user supplied libs so there is no need to process them.
-- 
1.7.1


Reply via email to