[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFT PATCH v3 7/9] emit sysrooted paths when installing .la files
From: |
Paolo Bonzini |
Subject: |
[RFT PATCH v3 7/9] emit sysrooted paths when installing .la files |
Date: |
Thu, 29 Jul 2010 01:23:20 +0200 |
* libltdl/config/ltmain.m4sh (func_replace_sysroot): New.
(func_mode_link): Prepend paths in $libdir with the sysroot. Further,
replace the sysroot with = (using func_replace_sysroot) whenever
such a path is written in a .la file.
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Charles Wilson <address@hidden>
---
The = in func_replace_sysroot_result is the source of
forwards-compatibility problems of older Libtools.
Maybe --mode=finish could get rid of those. For platforms
such as mingw where both native and cross-compilation makes
sense, it would provide an easy way to deploy .la files
that are usable without a new libtool.
libltdl/config/ltmain.m4sh | 43 ++++++++++++++++++++++++++++++++++++-------
1 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh
index 789ef7e..b0b0ebc 100644
--- a/libltdl/config/ltmain.m4sh
+++ b/libltdl/config/ltmain.m4sh
@@ -573,6 +573,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
@@ -5318,14 +5334,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
@@ -6386,7 +6402,8 @@ func_mode_link ()
# If the user specified any rpath flags, then add them.
temp_xrpath=
for libdir in $xrpath; do
- func_append temp_xrpath " -R$libdir"
+ func_replace_sysroot "$libdir"
+ func_append temp_xrpath " -R$func_replace_sysroot_result"
case "$finalize_rpath " in
*" $libdir "*) ;;
*) func_append finalize_rpath " $libdir" ;;
@@ -6844,6 +6861,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
@@ -8044,7 +8063,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"
- func_append newdependency_libs " $libdir/$name"
+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ -L*)
+ func_stripname -L '' "$i"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -L$func_replace_sysroot_result"
+ ;;
+ -R*)
+ func_stripname -R '' "$i"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -R$func_replace_sysroot_result"
;;
*) func_append newdependency_libs " $deplib" ;;
esac
@@ -8060,7 +8089,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"
- func_append newdlfiles " $libdir/$name"
+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
;;
*) func_append newdlfiles " $lib" ;;
esac
@@ -8079,7 +8108,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"
- func_append newdlprefiles " $libdir/$name"
+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
;;
esac
done
--
1.7.1
- [RFT PATCH v3 0/9] Sysroot patches, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 1/9] fix bug in postdeps computation, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 2/9] handle sysroot flags, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 3/9] add --with-sysroot, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 4/9] teach libtool -L= and -R=, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 6/9] process postdeps to include sysrooted paths, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 7/9] emit sysrooted paths when installing .la files,
Paolo Bonzini <=
- [RFT PATCH v3 9/9] initial version of the NEWS entry, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 8/9] add sysroot test, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 5/9] handle sysrooted paths when reading dependencies to la files, Paolo Bonzini, 2010/07/28
- Re: [RFT PATCH v3 0/9] Sysroot patches, Charles Wilson, 2010/07/29