rm -f confcache
 
 
-if test "$cross_compiling" = "yes" ; then
+if test "$build" != "$host" ; then
     CC=$host_alias-gcc
     CXX=$host_alias-c++
     AR=$host_alias-ar
 
 if test "$wxUSE_CYGWIN" = 1 || test "$wxUSE_MINGW" = 1 ; then
     if test "$cross_compiling" = "yes" ; then
-        echo "configure: warning: Cross compiling --- skipping windows.h check" 1>&2
+                echo "configure: warning: skipping windows.h check for cross-compilation" 1>&2
     else
         echo $ac_n "checking for Windows headers""... $ac_c" 1>&6
 echo "configure:7029: checking for Windows headers" >&5
 done
 
 
-if test "$wxUSE_GUI" = "yes"; then
+if test "$wxUSE_GUI" = "yes" -a test "$wxUSE_UNIX" = "yes"; then
         for ac_hdr in X11/XKBlib.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 
 dnl the file passed to AC_INIT should be specific to our package
 AC_INIT(wx-config.in)
 
+dnl sets build, host, target variables and the same with _alias
 AC_CANONICAL_SYSTEM
 
 dnl When making releases do:
 
 dnl cross-compiling support: we're cross compiling if the build system is
 dnl different from the target one (assume host and target be always the same)
-if test "$cross_compiling" = "yes" ; then
+if test "$build" != "$host" ; then
     CC=$host_alias-gcc
     CXX=$host_alias-c++
     AR=$host_alias-ar
 
 if test "$wxUSE_CYGWIN" = 1 || test "$wxUSE_MINGW" = 1 ; then
     if test "$cross_compiling" = "yes" ; then
-        AC_MSG_WARN(Cross compiling --- skipping windows.h check)
+        dnl mingw32 will find them even if they're not in one of standard paths
+        AC_MSG_WARN(skipping windows.h check for cross-compilation)
     else
         AC_MSG_CHECKING(for Windows headers)
         WX_PATH_FIND_INCLUDES($SEARCH_INCLUDE, windows.h)
 dnl defines HAVE_FNMATCH_H
 AC_CHECK_HEADERS(fnmatch.h)
 
-if test "$wxUSE_GUI" = "yes"; then
+if test "$wxUSE_GUI" = "yes" -a test "$wxUSE_UNIX" = "yes"; then
     dnl defines HAVE_X11_XKBLIB_H
     AC_CHECK_HEADERS(X11/XKBlib.h)
 fi