Added the ability to patch ltmain.sh based on version

There are two versions of ltmain.sh in use in the buildroot system, 1.5.x and
2.2.x. buildroot-libtool.patch would only patch 1.5.x, which meant that for
2.2.x, a separate patch for the affected package had to be maintained. Modified
Makefile.autotools.in to check the version of ltmain.sh and apply the correct
patch.

Signed-off-by: Martin Banky <Martin.Banky@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Martin Banky 2010-10-09 12:52:49 +02:00 committed by Thomas Petazzoni
parent fda95b5b10
commit 83af822f7b
3 changed files with 81 additions and 6 deletions

View File

@ -139,10 +139,16 @@ $(2)_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
#
define LIBTOOL_PATCH_HOOK
@$(call MESSAGE,"Patching libtool")
$(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES" -a \
"$$($$(PKG)_AUTORECONF)" != "YES"; then \
for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
toolchain/patch-kernel.sh $$$${i%/*} package buildroot-libtool.patch; \
$(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES" \
-a "$$($$(PKG)_AUTORECONF)" != "YES"; then \
for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' $$$$i | \
sed -e 's/\([0-9].[0-9]*\).*/\1/' -e 's/\"//'`; \
if test $$$${ltmain_version} = '1.5'; then \
toolchain/patch-kernel.sh $$$${i%/*} package buildroot-libtool-v1.5.patch; \
elif test $$$${ltmain_version} = "2.2"; then\
toolchain/patch-kernel.sh $$$${i%/*} package buildroot-libtool-v2.2.patch; \
fi \
done \
fi
endef
@ -158,9 +164,14 @@ endif
define AUTORECONF_HOOK
@$(call MESSAGE,"Autoreconfiguring")
$(Q)cd $$($$(PKG)_SRCDIR) && $(AUTORECONF) $$($$(PKG)_AUTORECONF_OPT)
$(Q)if test "$($$(PKG)_LIBTOOL_PATCH)" = "YES"; then \
$(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES"; then \
for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
toolchain/patch-kernel.sh $${i%/*} package buildroot-libtool.patch; \
ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' $$$$i | sed 's/\([0-9].[0-9]*\).*/\1/'`; \
if test $$$${ltmain_version} = "1.5"; then \
toolchain/patch-kernel.sh $$$${i%/*} package buildroot-libtool-v1.5.patch; \
elif test $$$${ltmain_version} = "2.2"; then\
toolchain/patch-kernel.sh $$$${i%/*} package buildroot-libtool-v2.2.patch; \
fi \
done \
fi
endef

View File

@ -0,0 +1,64 @@
--- a/ltmain.sh 2009-11-16 06:23:18.000000000 -0700
+++ b/ltmain.sh 2010-09-18 20:25:06.000000000 -0700
@@ -1048,8 +1048,8 @@ func_infer_tag ()
# was found and let the user know that the "--tag" command
# line option must be used.
if test -z "$tagname"; then
- func_echo "unable to infer tagged configuration"
- func_fatal_error "specify a tag with \`--tag'"
+ func_echo "defaulting to \`CC'"
+ func_echo "if this is not correct, specify a tag with \`--tag'"
# else
# func_verbose "using $tagname tagged configuration"
fi
@@ -2018,8 +2018,11 @@ func_mode_install ()
# At present, this check doesn't affect windows .dll's that
# are installed into $libdir/../bin (currently, that works fine)
# but it's something to keep an eye on.
- test "$inst_prefix_dir" = "$destdir" && \
- func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+ #
+ # This breaks install into our staging area. -PB
+ #
+ # test "$inst_prefix_dir" = "$destdir" && \
+ # func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
if test -n "$inst_prefix_dir"; then
# Stick the inst_prefix_dir data into the link command.
@@ -5412,8 +5415,14 @@ func_mode_link ()
absdir="$abs_ladir"
libdir="$abs_ladir"
else
- dir="$libdir"
- absdir="$libdir"
+ # Adding 'libdir' from the .la file to our library search paths
+ # breaks crosscompilation horribly. We cheat here and don't add
+ # it, instead adding the path where we found the .la. -CL
+ dir="$abs_ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ #dir="$libdir"
+ #absdir="$libdir"
fi
test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
else
@@ -5564,7 +5573,7 @@ func_mode_link ()
*)
if test "$installed" = no; then
notinst_deplibs="$notinst_deplibs $lib"
- need_relink=yes
+ need_relink=no
fi
;;
esac
@@ -8052,6 +8061,10 @@ EOF
# Replace all uninstalled libtool libraries with the installed ones
newdependency_libs=
for deplib in $dependency_libs; do
+ # Replacing uninstalled with installed can easily break crosscompilation,
+ # since the installed path is generally the wrong architecture. -CL
+ newdependency_libs="$newdependency_libs $deplib"
+ continue
case $deplib in
*.la)
func_basename "$deplib"