We already DEPEND on the native texinfo being present before building so
there isn't any need to try and build the required native texinfo binaries
before cross-compiling. This simplifies the recipe somewhat!

Upstream-Status: Inappropriate oe specific

Signed-off-by: Joshua Lock <josh@linux.intel.com>

Index: texinfo-4.13/configure.ac
===================================================================
--- texinfo-4.13.orig/configure.ac
+++ texinfo-4.13/configure.ac
@@ -100,29 +100,7 @@ AC_CANONICAL_BUILD
 # $native_tools is also added to SUBDIRS in the main Makefile.am,
 # so that make compiles the native tools first.
 #
-if test "$cross_compiling" = no; then
-  native_tools=
-else
-  native_tools=tools
-  test -d "$native_tools" || mkdir "$native_tools"
-  confdir=`(cd "$srcdir";pwd)`
-  # Make sure the secondary configure won't fail with
-  # "error: source directory already configured".
-  rm -f config.status
-  AC_MSG_NOTICE([[Doing configure of native tools (${build}).]])
-  cd "$native_tools" || exit 1
-  # Run secondary configure in alternate environment or
-  # it gets the wrong CC etc.
-  # env -i gives this build host configure a clean environment;
-  # consequently, we have to re-initialize $PATH.
-  env -i CC="$BUILD_CC" AR="$BUILD_AR" RANLIB="$BUILD_RANLIB" \
-      PATH="$PATH" \
-      tools_only=1 \
-    ${confdir}/configure --build=${build} --host=${build} \
-                         --disable-rpath --disable-nls
-  cd .. || exit 1
-  AC_MSG_NOTICE([[Continuing with main configure (${host}).]])
-fi
+native_tools=
 AC_SUBST(native_tools)
 AM_CONDITIONAL(TOOLS_ONLY, [[test "x$tools_only" = x1]])
 
