Commit bafe9fba authored by Steve Dower's avatar Steve Dower

Issue #25850: Use cross-compilation by default for 64-bit Windows.

parent d569bea4
...@@ -125,11 +125,11 @@ def _find_exe(exe, paths=None): ...@@ -125,11 +125,11 @@ def _find_exe(exe, paths=None):
return exe return exe
# A map keyed by get_platform() return values to values accepted by # A map keyed by get_platform() return values to values accepted by
# 'vcvarsall.bat'. Note a cross-compile may combine these (eg, 'x86_amd64' is # 'vcvarsall.bat'. Always cross-compile from x86 to work with the
# the param to cross-compile on x86 targetting amd64.) # lighter-weight MSVC installs that do not include native 64-bit tools.
PLAT_TO_VCVARS = { PLAT_TO_VCVARS = {
'win32' : 'x86', 'win32' : 'x86',
'win-amd64' : 'amd64', 'win-amd64' : 'x86_amd64',
} }
# A map keyed by get_platform() return values to the file under # A map keyed by get_platform() return values to the file under
...@@ -193,19 +193,8 @@ class MSVCCompiler(CCompiler) : ...@@ -193,19 +193,8 @@ class MSVCCompiler(CCompiler) :
raise DistutilsPlatformError("--plat-name must be one of {}" raise DistutilsPlatformError("--plat-name must be one of {}"
.format(tuple(PLAT_TO_VCVARS))) .format(tuple(PLAT_TO_VCVARS)))
# On x86, 'vcvarsall.bat amd64' creates an env that doesn't work; # Get the vcvarsall.bat spec for the requested platform.
# to cross compile, you use 'x86_amd64'. plat_spec = PLAT_TO_VCVARS[plat_name]
# On AMD64, 'vcvarsall.bat amd64' is a native build env; to cross
# compile use 'x86' (ie, it runs the x86 compiler directly)
if plat_name == get_platform() or plat_name == 'win32':
# native build or cross-compile to win32
plat_spec = PLAT_TO_VCVARS[plat_name]
else:
# cross compile from win32 -> some 64bit
plat_spec = '{}_{}'.format(
PLAT_TO_VCVARS[get_platform()],
PLAT_TO_VCVARS[plat_name]
)
vc_env = _get_vc_env(plat_spec) vc_env = _get_vc_env(plat_spec)
if not vc_env: if not vc_env:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment