environment.py: Properly check platform on MSVC 2008

The 'Platform' envvar may not be set on Visual Studio 2008, at least
when using the SDK 7.0 compilers, so check the 'BUILD_PLAT' envvar so
that we do not mis-detect x64 build environments as x86.
pull/3705/head
Chun-wei Fan 7 years ago committed by Nirbheek Chauhan
parent f9f3a51243
commit 3c4c8bf775
  1. 14
      mesonbuild/environment.py

@ -171,9 +171,17 @@ def detect_windows_arch(compilers):
for compiler in compilers.values():
# Check if we're using and inside an MSVC toolchain environment
if compiler.id == 'msvc' and 'VCINSTALLDIR' in os.environ:
# 'Platform' is only set when the target arch is not 'x86'.
# It's 'x64' when targeting x86_64 and 'arm' when targeting ARM.
platform = os.environ.get('Platform', 'x86').lower()
if float(compiler.get_toolset_version()) < 10.0:
# On MSVC 2008 and earlier, check 'BUILD_PLAT', where
# 'Win32' means 'x86'
platform = os.environ.get('BUILD_PLAT', 'x86')
if platform == 'Win32':
return 'x86'
else:
# On MSVC 2010 and later 'Platform' is only set when the
# target arch is not 'x86'. It's 'x64' when targeting
# x86_64 and 'arm' when targeting ARM.
platform = os.environ.get('Platform', 'x86').lower()
if platform == 'x86':
return platform
if compiler.id == 'gcc' and compiler.has_builtin_define('__i386__'):

Loading…
Cancel
Save