(compilers: CompilersDict)
return trial
Python is inconsistent in its platform module.
    It returns different values for the same cpu.
    For x86 it might return 'x86', 'i686' or somesuch.
    Do some canonicalization.
Python is inconsistent in its platform module.
    It returns different values for the same cpu.
    For x86 it might return 'x86', 'i686' or somesuch.
    Do some canonicalization.
Python is inconsistent in its platform module . It returns different values for the same cpu . For x86 it might return x86 i686 or somesuch . Do some canonicalization .
def detect_cpu_family(compilers: CompilersDict) -> str:
    """
    Python is inconsistent in its platform module.
    It returns different values for the same cpu.
    For x86 it might return 'x86', 'i686' or somesuch.
    Do some canonicalization.
    """
    if mesonlib.is_windows():
        trial = detect_windows_arch(compilers)
    elif mesonlib.is_freebsd() or mesonlib.is_netbsd() or mesonlib.is_openbsd() or mesonlib.is_qnx() or mesonlib.is_aix():
        trial = platform.processor().lower()
    else:
        trial = platform.machine().lower()
    if trial.startswith('i') and trial.endswith('86'):
        trial = 'x86'
    elif trial == 'bepc':
        trial = 'x86'
    elif trial == 'arm64':
        trial = 'aarch64'
    elif trial.startswith('aarch64'):
        # This can be `aarch64_be`
        trial = 'aarch64'
    elif trial.startswith('arm') or trial.startswith('earm'):
        trial = 'arm'
    elif trial.startswith(('powerpc64', 'ppc64')):
        trial = 'ppc64'
    elif trial.startswith(('powerpc', 'ppc')) or trial in {'macppc', 'power macintosh'}:
        trial = 'ppc'
    elif trial in ('amd64', 'x64', 'i86pc'):
        trial = 'x86_64'
    elif trial in {'sun4u', 'sun4v'}:
        trial = 'sparc64'
    elif trial.startswith('mips'):
        if '64' not in trial:
            trial = 'mips'
        else:
            trial = 'mips64'
    elif trial in {'ip30', 'ip35'}:
        trial = 'mips64'

    # On Linux (and maybe others) there can be any mixture of 32/64 bit code in
    # the kernel, Python, system, 32-bit chroot on 64-bit host, etc. The only
    # reliable way to know is to check the compiler defines.
    if trial == 'x86_64':
        if any_compiler_has_define(compilers, '__i386__'):
            trial = 'x86'
    elif trial == 'aarch64':
        if any_compiler_has_define(compilers, '__arm__'):
            trial = 'arm'
    # Add more quirks here as bugs are reported. Keep in sync with detect_cpu()
    # below.
    elif trial == 'parisc64':
        # ATM there is no 64 bit userland for PA-RISC. Thus always
        # report it as 32 bit for simplicity.
        trial = 'parisc'
    elif trial == 'ppc':
        # AIX always returns powerpc, check here for 64-bit
        if any_compiler_has_define(compilers, '__64BIT__'):
            trial = 'ppc64'

    if trial not in known_cpu_families:
        mlog.warning(f'Unknown CPU family {trial!r}, please report this at '
                     'https://github.com/mesonbuild/meson/issues/new with the '
                     'output of `uname -a` and `cat /proc/cpuinfo`')

    return trial
def detect_cpu_family ( compilers : CompilersDict ) -> str : if mesonlib . is_windows ( ) : trial = detect_windows_arch ( compilers ) elif mesonlib . is_freebsd ( ) or mesonlib . is_netbsd ( ) or mesonlib . is_openbsd ( ) or mesonlib . is_qnx ( ) or mesonlib . is_aix ( ) : trial = platform . processor ( ) . lower ( ) else : trial = platform . machine ( ) . lower ( ) if trial . startswith ( 'i' ) and trial . endswith ( '86' ) : trial = 'x86' elif trial == 'bepc' : trial = 'x86' elif trial == 'arm64' : trial = 'aarch64' elif trial . startswith ( 'aarch64' ) : # This can be `aarch64_be` trial = 'aarch64' elif trial . startswith ( 'arm' ) or trial . startswith ( 'earm' ) : trial = 'arm' elif trial . startswith ( ( 'powerpc64' , 'ppc64' ) ) : trial = 'ppc64' elif trial . startswith ( ( 'powerpc' , 'ppc' ) ) or trial in { 'macppc' , 'power macintosh' } : trial = 'ppc' elif trial in ( 'amd64' , 'x64' , 'i86pc' ) : trial = 'x86_64' elif trial in { 'sun4u' , 'sun4v' } : trial = 'sparc64' elif trial . startswith ( 'mips' ) : if '64' not in trial : trial = 'mips' else : trial = 'mips64' elif trial in { 'ip30' , 'ip35' } : trial = 'mips64' # On Linux (and maybe others) there can be any mixture of 32/64 bit code in # the kernel, Python, system, 32-bit chroot on 64-bit host, etc. The only # reliable way to know is to check the compiler defines. if trial == 'x86_64' : if any_compiler_has_define ( compilers , '__i386__' ) : trial = 'x86' elif trial == 'aarch64' : if any_compiler_has_define ( compilers , '__arm__' ) : trial = 'arm' # Add more quirks here as bugs are reported. Keep in sync with detect_cpu() # below. elif trial == 'parisc64' : # ATM there is no 64 bit userland for PA-RISC. Thus always # report it as 32 bit for simplicity. trial = 'parisc' elif trial == 'ppc' : # AIX always returns powerpc, check here for 64-bit if any_compiler_has_define ( compilers , '__64BIT__' ) : trial = 'ppc64' if trial not in known_cpu_families : mlog . warning ( f'Unknown CPU family {trial!r}, please report this at ' 'https://github.com/mesonbuild/meson/issues/new with the ' 'output of `uname -a` and `cat /proc/cpuinfo`' ) return trial