diff options
author | Cyan <cyanoxygen@aosc.io> | 2023-04-13 11:21:55 +0800 |
---|---|---|
committer | Eli Schwartz <eschwartz93@gmail.com> | 2023-04-28 00:20:42 -0400 |
commit | 6def03c787407fc4ff95595abab15083e757275e (patch) | |
tree | d89753502ab8bed7e684e5ea03e9c6bd721556cd /mesonbuild/environment.py | |
parent | f5fa56fdfaf979b2bd124b5b7f24f51a029675f8 (diff) | |
download | meson-6def03c787407fc4ff95595abab15083e757275e.zip meson-6def03c787407fc4ff95595abab15083e757275e.tar.gz meson-6def03c787407fc4ff95595abab15083e757275e.tar.bz2 |
detect_cpu: Fix mips32 detection on mips64
MIPS64 can run MIPS32 code natively, so there is a chance that a mixture
of MIPS64 kernel and MIPS32 userland exists. Before this Meson just
treats such mixture as mips64, because uname -m returns mips64.
So in this case we have to check compiler builtin defines for actual
architecture and CPU in use.
- Also fixes mips64 related detection tests in internaltests:
Normalize mips64 as mips first, then if __mips64 is defined, return
mips64 for mips64* machines.
This is a bit confiusing because normally one would detect if a flag
of 32-bit target is defined while running on a 64-bit machine. For
mips64 it is almost just the other way around - we need to detect if
__mips64 is set to make sure it is a mips64 environment.
Co-Authored-By: Jue Wang <maliya355@outlook.com>
Diffstat (limited to 'mesonbuild/environment.py')
-rw-r--r-- | mesonbuild/environment.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index ccd31eb..36aa94e 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -339,6 +339,11 @@ def detect_cpu_family(compilers: CompilersDict) -> str: # AIX always returns powerpc, check here for 64-bit if any_compiler_has_define(compilers, '__64BIT__'): trial = 'ppc64' + # MIPS64 is able to run MIPS32 code natively, so there is a chance that + # such mixture mentioned above exists. + elif trial == 'mips64': + if not any_compiler_has_define(compilers, '__mips64'): + trial = 'mips' if trial not in known_cpu_families: mlog.warning(f'Unknown CPU family {trial!r}, please report this at ' @@ -377,7 +382,10 @@ def detect_cpu(compilers: CompilersDict) -> str: if '64' not in trial: trial = 'mips' else: - trial = 'mips64' + if not any_compiler_has_define(compilers, '__mips64'): + trial = 'mips' + else: + trial = 'mips64' elif trial == 'ppc': # AIX always returns powerpc, check here for 64-bit if any_compiler_has_define(compilers, '__64BIT__'): |