diff -Naur Python-3.8.0-orig/setup.py Python-3.8.0/setup.py
--- Python-3.8.0-orig/setup.py	2019-10-22 10:01:44.336020000 +0300
+++ Python-3.8.0/setup.py	2019-10-22 10:01:45.428021900 +0300
@@ -800,13 +800,21 @@
         if (self.config_h_vars.get('FLOCK_NEEDS_LIBBSD', False)):
             # May be necessary on AIX for flock function
             libs = ['bsd']
-        self.add(Extension('fcntl', ['fcntlmodule.c'],
-                           libraries=libs))
+        if not MS_WINDOWS:
+            self.add(Extension('fcntl', ['fcntlmodule.c'],
+                               libraries=libs))
+        else:
+            self.missing.append('fcntl')
         # pwd(3)
-        self.add(Extension('pwd', ['pwdmodule.c']))
+        if not MS_WINDOWS:
+            self.add(Extension('pwd', ['pwdmodule.c']))
+        else:
+            self.missing.append('pwd')
         # grp(3)
-        if not VXWORKS:
+        if not VXWORKS and not MS_WINDOWS:
             self.add(Extension('grp', ['grpmodule.c']))
+        else:
+            self.missing.append('grp')
         # spwd, shadow passwords
         if (self.config_h_vars.get('HAVE_GETSPNAM', False) or
                 self.config_h_vars.get('HAVE_GETSPENT', False)):
@@ -831,7 +839,10 @@
 
         # Lance Ellinghaus's syslog module
         # syslog daemon interface
-        self.add(Extension('syslog', ['syslogmodule.c']))
+        if not MS_WINDOWS:
+            self.add(Extension('syslog', ['syslogmodule.c']))
+        else:
+            self.missing.append('syslog')
 
         # Python interface to subinterpreter C-API.
         self.add(Extension('_xxsubinterpreters', ['_xxsubinterpretersmodule.c']))
@@ -857,7 +868,10 @@
         self.add(Extension('_csv', ['_csv.c']))
 
         # POSIX subprocess module helper.
-        self.add(Extension('_posixsubprocess', ['_posixsubprocess.c']))
+        if not MS_WINDOWS:
+            self.add(Extension('_posixsubprocess', ['_posixsubprocess.c']))
+        else:
+            self.missing.append('_posixsubprocess')
 
     def detect_test_extensions(self):
         # Python C API test module
@@ -1039,13 +1053,16 @@
             # the encryption.
             return
 
-        if self.compiler.find_library_file(self.lib_dirs, 'crypt'):
-            libs = ['crypt']
-        else:
-            libs = []
+        if not MS_WINDOWS:
+            if self.compiler.find_library_file(self.lib_dirs, 'crypt'):
+                libs = ['crypt']
+            else:
+                libs = []
 
-        self.add(Extension('_crypt', ['_cryptmodule.c'],
-                               libraries=libs))
+            self.add(Extension('_crypt', ['_cryptmodule.c'],
+                                   libraries=libs))
+        else:
+            self.missing.append('_crypt')
 
     def detect_socket(self):
         # socket(2)
