https://github.com/libsdl-org/autoconf/commit/2b4a771d5a906bddcabb808761865a96b913674b
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.
m4_define([_AC_COMPILER_EXEEXT_CROSS],
[# 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
_AC_DO_VAR(ac_link)
if _AC_DO_TOKENS([./conftest$ac_cv_exeext]); then
cross_compiling=no