xref: /OK3568_Linux_fs/yocto/poky/meta/classes/meson-routines.bbclass (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyuninherit siteinfo
2*4882a593Smuzhiyun
3*4882a593Smuzhiyundef meson_array(var, d):
4*4882a593Smuzhiyun    items = d.getVar(var).split()
5*4882a593Smuzhiyun    return repr(items[0] if len(items) == 1 else items)
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun# Map our ARCH values to what Meson expects:
8*4882a593Smuzhiyun# http://mesonbuild.com/Reference-tables.html#cpu-families
9*4882a593Smuzhiyundef meson_cpu_family(var, d):
10*4882a593Smuzhiyun    import re
11*4882a593Smuzhiyun    arch = d.getVar(var)
12*4882a593Smuzhiyun    if arch == 'powerpc':
13*4882a593Smuzhiyun        return 'ppc'
14*4882a593Smuzhiyun    elif arch == 'powerpc64' or arch == 'powerpc64le':
15*4882a593Smuzhiyun        return 'ppc64'
16*4882a593Smuzhiyun    elif arch == 'armeb':
17*4882a593Smuzhiyun        return 'arm'
18*4882a593Smuzhiyun    elif arch == 'aarch64_be':
19*4882a593Smuzhiyun        return 'aarch64'
20*4882a593Smuzhiyun    elif arch == 'mipsel':
21*4882a593Smuzhiyun        return 'mips'
22*4882a593Smuzhiyun    elif arch == 'mips64el':
23*4882a593Smuzhiyun        return 'mips64'
24*4882a593Smuzhiyun    elif re.match(r"i[3-6]86", arch):
25*4882a593Smuzhiyun        return "x86"
26*4882a593Smuzhiyun    elif arch == "microblazeel":
27*4882a593Smuzhiyun        return "microblaze"
28*4882a593Smuzhiyun    else:
29*4882a593Smuzhiyun        return arch
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun# Map our OS values to what Meson expects:
32*4882a593Smuzhiyun# https://mesonbuild.com/Reference-tables.html#operating-system-names
33*4882a593Smuzhiyundef meson_operating_system(var, d):
34*4882a593Smuzhiyun    os = d.getVar(var)
35*4882a593Smuzhiyun    if "mingw" in os:
36*4882a593Smuzhiyun        return "windows"
37*4882a593Smuzhiyun    # avoid e.g 'linux-gnueabi'
38*4882a593Smuzhiyun    elif "linux" in os:
39*4882a593Smuzhiyun        return "linux"
40*4882a593Smuzhiyun    else:
41*4882a593Smuzhiyun        return os
42*4882a593Smuzhiyun
43*4882a593Smuzhiyundef meson_endian(prefix, d):
44*4882a593Smuzhiyun    arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS")
45*4882a593Smuzhiyun    sitedata = siteinfo_data_for_machine(arch, os, d)
46*4882a593Smuzhiyun    if "endian-little" in sitedata:
47*4882a593Smuzhiyun        return "little"
48*4882a593Smuzhiyun    elif "endian-big" in sitedata:
49*4882a593Smuzhiyun        return "big"
50*4882a593Smuzhiyun    else:
51*4882a593Smuzhiyun        bb.fatal("Cannot determine endianism for %s-%s" % (arch, os))
52