diff -urN a/Modules/_winapi.c b/Modules/_winapi.c --- a/Modules/_winapi.c 2014-10-11 14:20:25.474190900 +0100 +++ b/Modules/_winapi.c 2014-10-11 14:20:27.224291000 +0100 @@ -39,7 +39,9 @@ #define WINDOWS_LEAN_AND_MEAN #include "windows.h" +#if defined(Py_DEBUG) #include +#endif #if defined(MS_WIN32) && !defined(MS_WIN64) #define HANDLE_TO_PYNUM(handle) \ diff -urN a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c --- a/PC/msvcrtmodule.c 2014-10-11 14:20:25.201175300 +0100 +++ b/PC/msvcrtmodule.c 2014-10-11 14:20:27.225291100 +0100 @@ -21,7 +21,9 @@ #include #include #include +#ifdef _DEBUG #include +#endif #include #ifdef _MSC_VER diff -urN a/setup.py b/setup.py --- a/setup.py 2014-10-11 14:20:24.603141100 +0100 +++ b/setup.py 2014-10-11 14:20:27.226291100 +0100 @@ -887,6 +887,24 @@ min_db_ver = (3, 3) db_setup_debug = False # verbose debug prints from this script? + # Modules with some Windows dependencies: + if host_platform.startswith(('mingw', 'win')): + srcdir = sysconfig.get_config_var('srcdir') + pc_srcdir = os.path.abspath(os.path.join(srcdir, 'PC')) + + exts.append( Extension('msvcrt', [os.path.join(pc_srcdir, p) + for p in ['msvcrtmodule.c']]) ) + + exts.append( Extension('_winapi', ['_winapi.c']) ) + + exts.append( Extension('_msi', [os.path.join(pc_srcdir, p) + for p in ['_msi.c']], + libraries=['msi','cabinet','rpcrt4']) ) # To link with lib(msi|cabinet|rpcrt4).a + + exts.append( Extension('winsound', [os.path.join(pc_srcdir, p) + for p in ['winsound.c']], + libraries=['winmm']) ) + def allow_db_ver(db_ver): """Returns a boolean if the given BerkeleyDB version is acceptable.