check for cygwin and if built on that, enable the no-undefined option for
libtool. Otherwise disable it.
diff --git a/configure.in b/configure.in
index e40b0e0..e59f183 100644
--- a/configure.in
+++ b/configure.in
@@ -51,6 +51,17 @@
 dnl libtool setup
 AM_PROG_LIBTOOL
 
+case $host in
+  cygwin* | mingw* | pw32*)
+    need_no_undefined=yes
+    ;;
+  *)
+    need_no_undefined=no
+    ;;
+esac
+
+AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
+
 dnl The install stuff has already been taken care of by the automake stuff
 dnl AC_PROG_INSTALL
 AC_PROG_MAKE_SET
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 8085d31..74678fd 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -16,11 +16,7 @@
 # we use srcdir/lib for the lib-private header files
 INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/lib -I$(top_srcdir)/lib
 
-# The -no-undefined flag is CRUCIAL for this to build fine on Cygwin. If we
-# find a case in which we need to remove this flag, we should most likely
-# write a configure check that detects when this flag is needed and when its
-# not.
-libcurl_la_LDFLAGS = -no-undefined -version-info 2:2:0
+VERSION=-version-info 2:2:0
 
 # This flag accepts an argument of the form current[:revision[:age]]. So,
 # passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
@@ -50,6 +46,16 @@
 # set age to 0.
 #
 
+if NO_UNDEFINED
+# The -no-undefined flag is CRUCIAL for this to build fine on Cygwin. If we
+# find a case in which we need to remove this flag, we should most likely
+# write a configure check that detects when this flag is needed and when its
+# not.
+libcurl_la_LDFLAGS = -no-undefined $(VERSION)
+else
+libcurl_la_LDFLAGS = $(VERSION)
+endif
+
 libcurl_la_SOURCES = arpa_telnet.h file.c getpass.h netrc.h timeval.c	\
 base64.c file.h hostip.c progress.c timeval.h base64.h formdata.c	\
 hostip.h progress.h cookie.c formdata.h http.c sendf.c cookie.h ftp.c	\