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:03:36.718617400 +0300
+++ Python-3.8.0/setup.py	2019-10-22 10:03:37.795019300 +0300
@@ -563,7 +563,7 @@
         # Debian/Ubuntu multiarch support.
         # https://wiki.ubuntu.com/MultiarchSpec
         cc = sysconfig.get_config_var('CC')
-        tmpfile = os.path.join(self.build_temp, 'multiarch')
+        tmpfile = os.path.join(self.build_temp, 'multiarch').replace('\\','/')
         if not os.path.exists(self.build_temp):
             os.makedirs(self.build_temp)
         ret = os.system(
@@ -588,7 +588,7 @@
         opt = ''
         if CROSS_COMPILING:
             opt = '-t' + sysconfig.get_config_var('HOST_GNU_TYPE')
-        tmpfile = os.path.join(self.build_temp, 'multiarch')
+        tmpfile = os.path.join(self.build_temp, 'multiarch').replace('\\','/')
         if not os.path.exists(self.build_temp):
             os.makedirs(self.build_temp)
         ret = os.system(
@@ -607,7 +607,7 @@
 
     def add_cross_compiling_paths(self):
         cc = sysconfig.get_config_var('CC')
-        tmpfile = os.path.join(self.build_temp, 'ccpaths')
+        tmpfile = os.path.join(self.build_temp, 'ccpaths').replace('\\','/')
         if not os.path.exists(self.build_temp):
             os.makedirs(self.build_temp)
         ret = os.system('%s -E -v - </dev/null 2>%s 1>/dev/null' % (cc, tmpfile))
@@ -915,7 +915,7 @@
         readline_termcap_library = ""
         curses_library = ""
         # Cannot use os.popen here in py3k.
-        tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib')
+        tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib').replace('\\','/')
         if not os.path.exists(self.build_temp):
             os.makedirs(self.build_temp)
         # Determine if readline is already linked against curses or tinfo.
@@ -1869,16 +1869,16 @@
         cflags = sysconfig.get_config_vars('CFLAGS')[0]
         archs = re.findall(r'-arch\s+(\w+)', cflags)
 
-        tmpfile = os.path.join(self.build_temp, 'tk.arch')
+        tmpfile = os.path.join(self.build_temp, 'tk.arch').replace('\\','/')
         if not os.path.exists(self.build_temp):
             os.makedirs(self.build_temp)
 
         # Note: cannot use os.popen or subprocess here, that
         # requires extensions that are not available here.
         if is_macosx_sdk_path(F):
-            os.system("file %s/Tk.framework/Tk | grep 'for architecture' > %s"%(os.path.join(sysroot, F[1:]), tmpfile))
+            os.system("file %s/Tk.framework/Tk | grep 'for architecture' > %s"%(os.path.join(sysroot, F[1:]).replace('\\','/'), tmpfile))
         else:
-            os.system("file %s/Tk.framework/Tk | grep 'for architecture' > %s"%(F, tmpfile))
+            os.system("file %s/Tk.framework/Tk | grep 'for architecture' > %s"%(F.replace('\\','/'), tmpfile))
 
         with open(tmpfile) as fp:
             detected_archs = []
