diff -Naur a/Modules/selectmodule.c b/Modules/selectmodule.c --- a/Modules/selectmodule.c 2014-05-31 22:58:40.000000000 +0400 +++ b/Modules/selectmodule.c 2014-06-03 08:13:17.942800000 +0400 @@ -107,9 +107,9 @@ v = PyObject_AsFileDescriptor( o ); if (v == -1) goto finally; -#if defined(_MSC_VER) +#if defined(MS_WIN32) max = 0; /* not used for Win32 */ -#else /* !_MSC_VER */ +#else /* !MS_WIN32 */ if (!_PyIsSelectable_fd(v)) { PyErr_SetString(PyExc_ValueError, "filedescriptor out of range in select()"); @@ -117,7 +117,7 @@ } if (v > max) max = v; -#endif /* _MSC_VER */ +#endif /* MS_WIN32 */ FD_SET(v, set); /* add object and its file descriptor to the list */ diff -Naur a/setup.py b/setup.py --- a/setup.py 2014-06-03 08:13:17.833600000 +0400 +++ b/setup.py 2014-06-03 08:13:17.942800000 +0400 @@ -658,7 +658,11 @@ missing.append('spwd') # select(2); not on ancient System V - exts.append( Extension('select', ['selectmodule.c']) ) + select_libs = [] + if host_platform.startswith(('mingw', 'win')): + select_libs += ['ws2_32'] + exts.append( Extension('select', ['selectmodule.c'], + libraries=select_libs) ) # Fred Drake's interface to the Python parser exts.append( Extension('parser', ['parsermodule.c']) )