Commit 83af822f authored by Martin Banky's avatar Martin Banky Committed by Thomas Petazzoni
Browse files

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: default avatarMartin Banky <Martin.Banky@gmail.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent fda95b5b
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -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 \
	$(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; \
			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
+64 −0
Original line number Diff line number Diff line
--- 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"