diff --git a/m4/xerces_netaccessor_selection.m4 b/m4/xerces_netaccessor_selection.m4
index b305513e89979d7f2f362d1ebf993160bab3f2b9..e19b8f0adfa10eabf79683e0930bd56cf6677f61 100644
--- a/m4/xerces_netaccessor_selection.m4
+++ b/m4/xerces_netaccessor_selection.m4
@@ -87,15 +87,19 @@ AC_DEFUN([XERCES_NETACCESSOR_SELECTION],
 			[AC_MSG_RESULT(no)]
 		)
 		;;
-	windows* | mingw*)
+	windows* | mingw* | cygwin*)
 		list_add=
+		no_winsock=false
+		AC_CHECK_HEADERS([winsock2.h], [], [no_winsock=true])
 		AC_MSG_CHECKING([whether we can support the WinSock NetAccessor (Windows)])
-		AC_ARG_ENABLE([netaccessor-winsock],
-			AS_HELP_STRING([--enable-netaccessor-winsock],
-				[Enable winsock-based NetAccessor support]),
-			[AS_IF([test x"$enableval" = xyes],
-				[list_add=WINSOCK])],
-			[list_add=winsock])
+		AS_IF([! $no_winsock], [
+			AC_ARG_ENABLE([netaccessor-winsock],
+				AS_HELP_STRING([--enable-netaccessor-winsock],
+					[Enable winsock-based NetAccessor support]),
+				[AS_IF([test x"$enableval" = xyes],
+					[list_add=WINSOCK])],
+				[list_add=winsock])
+		])
 		AS_IF([test x"$list_add" != x],
 			[na_list="$na_list -$list_add-"; AC_MSG_RESULT(yes)],
 			[AC_MSG_RESULT(no)]
@@ -121,13 +125,6 @@ AC_DEFUN([XERCES_NETACCESSOR_SELECTION],
 		# Check for each netaccessor, in implicit rank order
 		case $na_list in
 		
-		*-curl-*)
-			netaccessor=curl
-			AC_DEFINE([XERCES_USE_NETACCESSOR_CURL], 1, [Define to use the CURL NetAccessor])
-			LIBS="${LIBS} -L${xerces_cv_curl_prefix}/lib -lcurl"
-			break
-			;;
-			
 		*-cfurl-*)
 			netaccessor=cfurl
 			AC_DEFINE([XERCES_USE_NETACCESSOR_CFURL], 1, [Define to use the Mac OS X CFURL NetAccessor])
@@ -135,6 +132,13 @@ AC_DEFUN([XERCES_NETACCESSOR_SELECTION],
 			break
 			;;
 			
+		*-curl-*)
+			netaccessor=curl
+			AC_DEFINE([XERCES_USE_NETACCESSOR_CURL], 1, [Define to use the CURL NetAccessor])
+			LIBS="${LIBS} -L${xerces_cv_curl_prefix}/lib -lcurl"
+			break
+			;;
+			
 		*-winsock-*)
 			netaccessor=winsock
 			AC_DEFINE([XERCES_USE_NETACCESSOR_WINSOCK], 1, [Define to use the WinSock NetAccessor])
diff --git a/m4/xerces_transcoder_selection.m4 b/m4/xerces_transcoder_selection.m4
index ba5488abfc57e8b14678867bd1185a75019ef7bd..c4cbe7e0c25d9c739b09c589f8c9c877efb3653e 100644
--- a/m4/xerces_transcoder_selection.m4
+++ b/m4/xerces_transcoder_selection.m4
@@ -149,18 +149,18 @@ AC_DEFUN([XERCES_TRANSCODER_SELECTION],
 			break
 			;;
 
-		*-iconv-*)
-			transcoder=iconv
-			AC_DEFINE([XERCES_USE_TRANSCODER_ICONV], 1, [Define to use the iconv transcoder])
-			break
-			;;
-			
 		*-windows-*)
 			transcoder=windows
 			AC_DEFINE([XERCES_USE_TRANSCODER_WINDOWS], 1, [Define to use the Windows transcoder])
 			break
 			;;
 
+		*-iconv-*)
+			transcoder=iconv
+			AC_DEFINE([XERCES_USE_TRANSCODER_ICONV], 1, [Define to use the iconv transcoder])
+			break
+			;;
+			
 		*)
 			AS_IF([test $i -eq 2], [
 				AC_MSG_RESULT([none])