Libtool fixes for cross-compilation, many past contributors/authors.
Update based on libtool-2.4.4, useful for 2.4.3 as well but not 2.4.2.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

--- a/ltmain.sh	2014-12-16 09:51:23.068441045 -0300
+++ b/ltmain.sh	2014-12-16 09:57:10.509430339 -0300
@@ -2687,8 +2687,8 @@
 	# 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
@@ -4277,8 +4277,12 @@
 	  # 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.
@@ -6550,7 +6554,8 @@
 	;;
       -all-static | -static | -static-libtool-libs)
 	case $arg in
-	-all-static)
+	# Make -static behave like -all-static -GZ
+	-all-static | -static)
 	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
 	    func_warning "complete static linking is impossible in this configuration"
 	  fi
@@ -6559,12 +6564,6 @@
 	  fi
 	  prefer_static_libs=yes
 	  ;;
-	-static)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=built
-	  ;;
 	-static-libtool-libs)
 	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
 	    dlopen_self=$dlopen_self_static
@@ -6858,7 +6857,8 @@
       prevarg=$arg
 
       case $arg in
-      -all-static)
+      # Make -static behave like -all-static -GZ
+      -all-static | -static)
 	if test -n "$link_static_flag"; then
 	  # See comment for -static flag below, for more details.
 	  func_append compile_command " $link_static_flag"
@@ -7149,7 +7149,7 @@
 	continue
 	;;
 
-      -static | -static-libtool-libs)
+      -static-libtool-libs)
 	# The effects of -static are defined in a previous loop.
 	# We used to do the same as -all-static on platforms that
 	# didn't have a PIC flag, but the assumption that the effects
@@ -8112,7 +8112,7 @@
 	  *)
 	    if test no = "$installed"; then
 	      func_append notinst_deplibs " $lib"
-	      need_relink=yes
+	      need_relink=no
 	    fi
 	    ;;
 	  esac
@@ -10710,6 +10710,10 @@
 	    # 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"
