diff --git a/configure.in b/configure.in
index 13d1e3a16cfa781ad5eb41b6bbc74a0be224eba8..a9b8941ffce33c777acf35a2f0812a7f0249e6b1 100644
--- a/configure.in
+++ b/configure.in
@@ -66,6 +66,8 @@ if test x"$TargetPlatform" != x"$HostPlatform" ; then
     echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
     exit 1
 fi
+
+exeext=''
 #
 # The following will be more difficult when we *are* cross-compiling.
 # Suitable names to slam in *_CPP are in platform.h.in.
@@ -143,6 +145,7 @@ i[[3456]]86-*-cygwin32*)
         HostArch_CPP='i386'
         HostVendor_CPP='unknown'
         HostOS_CPP='cygwin32'
+	exeext='.exe'
         ;;
 m68k-next-nextstep2)
         HostPlatform_CPP='m68k_next_nextstep2'
@@ -266,7 +269,9 @@ AC_SUBST(HostVendor_CPP)
 dnl AC_SUBST(BuildVendor_CPP)
 dnl AC_SUBST(TargetVendor_CPP)
 
-####--------------------------------------------------------------------
+AC_SUBST(exeext)
+
+# -------------------------------------------------------------------------
 dnl
 dnl * _GENERAL_ CONFIGURATION CHECKS
 #
diff --git a/mk/config.mk.in b/mk/config.mk.in
index 9ca8f20db0aef4c1a5177f042e54751d2d206df8..27c1ef3fd99182655423fba10d366d51d81585d8 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -87,7 +87,7 @@ HostVendor_CPP	                = @HostVendor_CPP@
 LeadingUnderscore=@LeadingUnderscore@
 
 # Pin a suffix on executables? If so, what. (cygwin32 only).
-exeext=
+exeext=@exeext@
 
 #################################################################################
 #