From 83af822f7b28169b096d592027e97c55cc83eb27 Mon Sep 17 00:00:00 2001 From: Martin Banky Date: Sat, 9 Oct 2010 12:52:49 +0200 Subject: [PATCH] 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 Signed-off-by: Thomas Petazzoni --- package/Makefile.autotools.in | 23 +++++-- ...ool.patch => buildroot-libtool-v1.5.patch} | 0 package/buildroot-libtool-v2.2.patch | 64 +++++++++++++++++++ 3 files changed, 81 insertions(+), 6 deletions(-) rename package/{buildroot-libtool.patch => buildroot-libtool-v1.5.patch} (100%) create mode 100644 package/buildroot-libtool-v2.2.patch diff --git a/package/Makefile.autotools.in b/package/Makefile.autotools.in index 589079b6ac..87c309269e 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 similarity index 100% rename from package/buildroot-libtool.patch rename to 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 0000000000..0df00ae54a --- /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" -- 2.30.2