autoconf: cross-compiling: handling modern platforms able to run foreign binaries.

From 2b4a771d5a906bddcabb808761865a96b913674b Mon Sep 17 00:00:00 2001
From: Jehan <[EMAIL REDACTED]>
Date: Wed, 2 Oct 2013 18:53:50 +1300
Subject: [PATCH] cross-compiling: handling modern platforms able to run
 foreign binaries.

* lib/autoconf/lang.m4 (_AC_COMPILER_EXEEXT_CROSS):
When only --host is set, and no --build, but in the end, the resulting
computed $build and $host are different, set $cross_compiling = yes.
Indeed we can't rely only on a successful test program run, because false
positives occur on some platforms. In particular modern GNU/Linux
distributions set Wine to automatically handle Windows binaries.
Consequently $cross_compiling gets set to "no" even though we are in an
obvious cross-compilation case.
(tiny change)
(cherry picked from commit fbec57294abd097fdc5894e0ec0d0133a0b5445b)
 lib/autoconf/lang.m4 | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/lib/autoconf/lang.m4 b/lib/autoconf/lang.m4
index 19852b8b..acf7bbdd 100644
--- a/lib/autoconf/lang.m4
+++ b/lib/autoconf/lang.m4
@@ -592,11 +592,21 @@ ac_exeext=$ac_cv_exeext
 # detect cross-compiling on Blue Gene.  Note also that AC_COMPUTE_INT
 # requires programs that create files when not cross-compiling, so it
 # is safe and not a bad idea to check for this capability in general.
+# Another false negative would occur on many modern linux distributions,
+# which would have Wine run automatically for Windows binaries. This is
+# a default configuration on several Debian-derivated distributions for
+# instance (see `update-binfmts`).
+# As a consequence the simple test program would run without errors,
+# even though we are on an obvious cross-compilation case and further
+# more complicated tests would fail.
 [# Check that the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
 AC_MSG_CHECKING([whether we are cross compiling])
-if test "$cross_compiling" != yes; then
+if test "$cross_compiling" = maybe && test "x$build" != "x$host"; then
+  cross_compiling=yes
+elif test "$cross_compiling" != yes; then
   if _AC_DO_TOKENS([./conftest$ac_cv_exeext]); then