autoconf: more aggressively avoid cross-compilation problems

We could end up invoking WINE even when we didn't want to.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
diff --git a/autoconf/m4/pa_cross_compile.m4 b/autoconf/m4/pa_cross_compile.m4
new file mode 100644
index 0000000..f082973
--- /dev/null
+++ b/autoconf/m4/pa_cross_compile.m4
@@ -0,0 +1,41 @@
+dnl --------------------------------------------------------------------------
+dnl  PA_CROSS_COMPILE
+dnl
+dnl Get the canonical name for the build and host (runtime) systems;
+dnl then figure out if this is cross-compilation. Specifically, this
+dnl disables invoking WINE on non-Windows systems which are configured
+dnl to run WINE automatically.
+dnl
+dnl Use PA_CROSS_COMPILE_TOOL if the target system (output of a code-
+dnl generation tool) is applicable.
+dnl
+dnl This doesn't explicitly print any messages as that is automatically
+dnl done elsewhere.
+dnl --------------------------------------------------------------------------
+AC_DEFUN_ONCE([PA_CROSS_COMPILE],
+[
+ AC_BEFORE([$0], [AC_LANG_COMPILER])
+ AC_BEFORE([$0], [AC_LANG])
+ AC_BEFORE([$0], [AC_PROG_CC])
+ AC_BEFORE([$0], [AC_PROG_CPP])
+ AC_BEFORE([$0], [AC_PROG_CXX])
+ AC_BEFORE([$0], [AC_PROG_CXXCPP])
+ AC_BEFORE([$0], [AC_PROG_OBJC])
+ AC_BEFORE([$0], [AC_PROG_OBJCPP])
+ AC_BEFORE([$0], [AC_PROG_OBJCXX])
+ AC_BEFORE([$0], [AC_PROG_OBJCXXCPP])
+ AC_BEFORE([$0], [AC_PROG_F77])
+ AC_BEFORE([$0], [AC_PROG_FC])
+ AC_BEFORE([$0], [AC_PROG_GO])
+
+ # Disable WINE
+ WINELOADER=/dev/null
+ export WINELOADER
+ WINESERVER=/dev/null
+ export WINESERVER
+ WINEPREFIX=/dev/null
+ export WINEPREFIX
+
+ AC_CANONICAL_BUILD
+ AC_CANONICAL_HOST
+])
diff --git a/configure.ac b/configure.ac
index 0099485..c55dfb3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,8 +15,7 @@
 dnl This prevents us from running Wine and thinking we are not
 dnl cross-compiling when in fact we are; running Wine here is at
 dnl the best very slow and doesn't buy us a single thing at all.
-WINELOADER=/dev/null
-export WINELOADER
+PA_CROSS_COMPILE
 
 dnl Get the canonical target system name
 AC_CANONICAL_HOST