diff -durN serf-1.3.9.orig/auth/auth_spnego_sspi.c serf-1.3.9/auth/auth_spnego_sspi.c
--- serf-1.3.9.orig/auth/auth_spnego_sspi.c	2015-09-17 21:28:14.000000000 +0800
+++ serf-1.3.9/auth/auth_spnego_sspi.c	2017-05-20 12:49:21.328125000 +0800
@@ -27,6 +27,8 @@
 #include <apr_strings.h>
 
 #define SECURITY_WIN32
+#include <windows.h>
+#include <netdb.h>
 #include <sspi.h>
 
 /* SEC_E_MUTUAL_AUTH_FAILED is not defined in Windows Platform SDK 5.0. */
diff -durN serf-1.3.9.orig/SConstruct serf-1.3.9/SConstruct
--- serf-1.3.9.orig/SConstruct	2017-05-20 12:46:18.718750000 +0800
+++ serf-1.3.9/SConstruct	2017-05-20 12:48:37.375000000 +0800
@@ -386,8 +386,11 @@
         return env.MergeFlags(cmd, unique)
     env.ParseConfig('$GSSAPI --libs gssapi', parse_libs)
     env.Append(CPPDEFINES=['SERF_HAVE_GSSAPI'])
-if sys.platform == 'win32':
+if sys.platform == 'win32' or sys.platform == 'cygwin':
   env.Append(CPPDEFINES=['SERF_HAVE_SSPI'])
+  if sys.platform == 'cygwin':
+    env['SECUR32_LIBS'] = '-lsecur32'
+    env.Append(LIBS='secur32')
 
 # On some systems, the -R values that APR describes never make it into actual
 # RPATH flags. We'll manually map all directories in LIBPATH into new
@@ -404,8 +407,9 @@
                            '@LIBDIR@': '$LIBDIR',
                            '@INCLUDE_SUBDIR@': 'serf-%d' % (MAJOR,),
                            '@VERSION@': '%d.%d.%d' % (MAJOR, MINOR, PATCH),
-                           '@LIBS@': '%s %s %s -lz' % (apu_libs, apr_libs,
-                                                       env.get('GSSAPI_LIBS', '')),
+                           '@LIBS@': '%s %s %s %s -lz' % (apu_libs, apr_libs,
+                                                       env.get('GSSAPI_LIBS', ''),
+                              env.get('SECUR32_LIBS', '')),
                            })
 
 env.Default(lib_static, lib_shared, pkgconfig)
