diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-02-17 15:41:14 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-17 15:41:14 -0500 |
commit | 16adedf6bc941745d3f10a2ad70fe710dfe1b206 (patch) | |
tree | 27f71e8a9c6f5d86c015913a74c2ee5b7a21b1fe /mesonbuild/environment.py | |
parent | cda24a641df045ebcfff1251e649c2411a3babcb (diff) | |
parent | 1f2f01076555f943023d1fb74e4977750db5d8a3 (diff) | |
download | meson-16adedf6bc941745d3f10a2ad70fe710dfe1b206.zip meson-16adedf6bc941745d3f10a2ad70fe710dfe1b206.tar.gz meson-16adedf6bc941745d3f10a2ad70fe710dfe1b206.tar.bz2 |
Merge pull request #1377 from mesonbuild/64_32
Fix mixed x86/amd64 Linux platforms
Diffstat (limited to 'mesonbuild/environment.py')
-rw-r--r-- | mesonbuild/environment.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index e143b0b..51a3d43 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -121,6 +121,18 @@ def detect_cpu_family(compilers): if trial.startswith('arm'): return 'arm' 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' # Add fixes here as bugs are reported. return trial @@ -131,6 +143,15 @@ def detect_cpu(compilers): else: trial = platform.machine().lower() 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' # Add fixes here as bugs are reported. return trial |