diff --git a/Modules/Platform/CYGWIN.cmake b/Modules/Platform/CYGWIN.cmake
index c9170a01ce2d9c11de0e01ad193b1257710c19ee..dd179a4d7d81cc54e9ebc59311d8739598277acb 100644
--- a/Modules/Platform/CYGWIN.cmake
+++ b/Modules/Platform/CYGWIN.cmake
@@ -1,6 +1,7 @@
 SET(WIN32 1)
 SET(CYGWIN 1)
 
+SET(CMAKE_EXE_LINKER_FLAGS_INIT "-Wl,--enable-auto-import")
 SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared -Wl,--export-all-symbols -Wl,--enable-auto-import")
 SET(CMAKE_SHARED_MODULE_CREATE_C_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
 SET(CMAKE_DL_LIBS "-lgdi32" )
diff --git a/bootstrap b/bootstrap
index b8dee528f7a052970865bff475ca69599ec1817f..a4509119ad93bac88a1340a0e8fd5513f1358cdc 100755
--- a/bootstrap
+++ b/bootstrap
@@ -55,6 +55,13 @@ cmake_bootstrap_system_libs=""
 cmake_bootstrap_qt_gui=""
 cmake_bootstrap_qt_qmake=""
 
+# Determine whether this is a Cygwin environment.
+if echo "${cmake_system}" | grep CYGWIN >/dev/null 2>&1; then
+  cmake_system_cygwin=true
+else
+  cmake_system_cygwin=false
+fi
+
 # Determine whether this is a MinGW environment.
 if echo "${cmake_system}" | grep MINGW >/dev/null 2>&1; then
   cmake_system_mingw=true
@@ -598,6 +605,11 @@ cmake_c_flags=${CFLAGS}
 cmake_cxx_flags=${CXXFLAGS}
 cmake_ld_flags=${LDFLAGS}
 
+# Add Cygwin-specific flags
+if ${cmake_system_cygwin}; then
+  cmake_ld_flags="${LDFLAGS} -Wl,--enable-auto-import"
+fi
+
 # Add Carbon framework on Darwin
 if ${cmake_system_darwin}; then
   cmake_ld_flags="${LDFLAGS} -framework Carbon"