Detect x86/amd64 from the compilers because system info may be incorrect.

pull/1377/head
Jussi Pakkanen 8 years ago
parent f3d106e786
commit 5973dcc25b
  1. 21
      mesonbuild/environment.py

@ -121,6 +121,18 @@ def detect_cpu_family(compilers):
if trial.startswith('arm'): if trial.startswith('arm'):
return 'arm' return 'arm'
if trial in ('amd64', 'x64'): if trial in ('amd64', 'x64'):
trial = 'x86_64'
if trial == 'x86_64':
# On Linux (and maybe others) there can be any mixture of 32/64 bit
# code in the kernel, Python, system etc. The only reliable way
# to know is to check the compiler defines.
for c in compilers.values():
try:
if c.has_define('__i386__'):
return 'x86'
except mesonlib.MesonException:
# Ignore compilers that do not support has_define.
pass
return 'x86_64' return 'x86_64'
# Add fixes here as bugs are reported. # Add fixes here as bugs are reported.
return trial return trial
@ -131,6 +143,15 @@ def detect_cpu(compilers):
else: else:
trial = platform.machine().lower() trial = platform.machine().lower()
if trial in ('amd64', 'x64'): if trial in ('amd64', 'x64'):
trial = 'x86_64'
if trial == 'x86_64':
# Same check as above for cpu_family
for c in compilers.values():
try:
if c.has_define('__i386__'):
return 'i686' # All 64 bit cpus have at least this level of x86 support.
except mesonlib.MesonException:
pass
return 'x86_64' return 'x86_64'
# Add fixes here as bugs are reported. # Add fixes here as bugs are reported.
return trial return trial

Loading…
Cancel
Save