summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Banky <martin.banky@gmail.com>2010-10-09 12:52:49 +0200
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>2010-10-14 07:27:07 -0400
commit83af822f7b28169b096d592027e97c55cc83eb27 (patch)
treee830ad597f9e462f03a7b8e1a342ac3979d28051
parentfda95b5b10be51cb8d73448fc0f2208921e6d07e (diff)
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>
-rw-r--r--package/Makefile.autotools.in23
-rw-r--r--package/buildroot-libtool-v1.5.patch (renamed from package/buildroot-libtool.patch)0
-rw-r--r--package/buildroot-libtool-v2.2.patch64
3 files changed, 81 insertions, 6 deletions
diff --git a/package/Makefile.autotools.in b/package/Makefile.autotools.in
index 589079b6a..87c309269 100644
--- a/package/Makefile.autotools.in
+++ b/package/Makefile.autotools.in
@@ -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
diff --git a/package/buildroot-libtool.patch b/package/buildroot-libtool-v1.5.patch
index 57a7c58e3..57a7c58e3 100644
--- a/package/buildroot-libtool.patch
+++ b/package/buildroot-libtool-v1.5.patch
diff --git a/package/buildroot-libtool-v2.2.patch b/package/buildroot-libtool-v2.2.patch
new file mode 100644
index 000000000..0df00ae54
--- /dev/null
+++ b/package/buildroot-libtool-v2.2.patch
@@ -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"