summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorAlexander Kanavin <alex.kanavin@gmail.com>2021-05-13 22:56:19 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-05-14 07:57:27 +0100
commit830e634bbb4dbefbb4059319fbdcc200b5f9ac4e (patch)
treecd2714be62d6ecb7672745b0132dc0f1231fccce /meta
parent6f8cc237bf3f252802904fc732aaf4e8f6c123b4 (diff)
downloadpoky-830e634bbb4dbefbb4059319fbdcc200b5f9ac4e.tar.gz
meson.bbclass: split python routines into a separate class
This allows reusing them in nativesdk-meson without copy-pasting code. (From OE-Core rev: f2715f5f2a56f9b660f9f0fe2933ec231a2dd8c0) Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/meson-routines.bbclass51
-rw-r--r--meta/classes/meson.bbclass52
2 files changed, 52 insertions, 51 deletions
diff --git a/meta/classes/meson-routines.bbclass b/meta/classes/meson-routines.bbclass
new file mode 100644
index 0000000000..be3aeedeba
--- /dev/null
+++ b/meta/classes/meson-routines.bbclass
@@ -0,0 +1,51 @@
1inherit siteinfo
2
3def meson_array(var, d):
4 items = d.getVar(var).split()
5 return repr(items[0] if len(items) == 1 else items)
6
7# Map our ARCH values to what Meson expects:
8# http://mesonbuild.com/Reference-tables.html#cpu-families
9def meson_cpu_family(var, d):
10 import re
11 arch = d.getVar(var)
12 if arch == 'powerpc':
13 return 'ppc'
14 elif arch == 'powerpc64' or arch == 'powerpc64le':
15 return 'ppc64'
16 elif arch == 'armeb':
17 return 'arm'
18 elif arch == 'aarch64_be':
19 return 'aarch64'
20 elif arch == 'mipsel':
21 return 'mips'
22 elif arch == 'mips64el':
23 return 'mips64'
24 elif re.match(r"i[3-6]86", arch):
25 return "x86"
26 elif arch == "microblazeel":
27 return "microblaze"
28 else:
29 return arch
30
31# Map our OS values to what Meson expects:
32# https://mesonbuild.com/Reference-tables.html#operating-system-names
33def meson_operating_system(var, d):
34 os = d.getVar(var)
35 if "mingw" in os:
36 return "windows"
37 # avoid e.g 'linux-gnueabi'
38 elif "linux" in os:
39 return "linux"
40 else:
41 return os
42
43def meson_endian(prefix, d):
44 arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS")
45 sitedata = siteinfo_data_for_machine(arch, os, d)
46 if "endian-little" in sitedata:
47 return "little"
48 elif "endian-big" in sitedata:
49 return "big"
50 else:
51 bb.fatal("Cannot determine endianism for %s-%s" % (arch, os))
diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
index bf9b02e06e..8ae0285f72 100644
--- a/meta/classes/meson.bbclass
+++ b/meta/classes/meson.bbclass
@@ -1,4 +1,4 @@
1inherit siteinfo python3native 1inherit python3native meson-routines
2 2
3DEPENDS_append = " meson-native ninja-native" 3DEPENDS_append = " meson-native ninja-native"
4 4
@@ -35,56 +35,6 @@ MESON_CROSS_FILE = ""
35MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross" 35MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross"
36MESON_CROSS_FILE_class-nativesdk = "--cross-file ${WORKDIR}/meson.cross" 36MESON_CROSS_FILE_class-nativesdk = "--cross-file ${WORKDIR}/meson.cross"
37 37
38def meson_array(var, d):
39 items = d.getVar(var).split()
40 return repr(items[0] if len(items) == 1 else items)
41
42# Map our ARCH values to what Meson expects:
43# http://mesonbuild.com/Reference-tables.html#cpu-families
44def meson_cpu_family(var, d):
45 import re
46 arch = d.getVar(var)
47 if arch == 'powerpc':
48 return 'ppc'
49 elif arch == 'powerpc64' or arch == 'powerpc64le':
50 return 'ppc64'
51 elif arch == 'armeb':
52 return 'arm'
53 elif arch == 'aarch64_be':
54 return 'aarch64'
55 elif arch == 'mipsel':
56 return 'mips'
57 elif arch == 'mips64el':
58 return 'mips64'
59 elif re.match(r"i[3-6]86", arch):
60 return "x86"
61 elif arch == "microblazeel":
62 return "microblaze"
63 else:
64 return arch
65
66# Map our OS values to what Meson expects:
67# https://mesonbuild.com/Reference-tables.html#operating-system-names
68def meson_operating_system(var, d):
69 os = d.getVar(var)
70 if "mingw" in os:
71 return "windows"
72 # avoid e.g 'linux-gnueabi'
73 elif "linux" in os:
74 return "linux"
75 else:
76 return os
77
78def meson_endian(prefix, d):
79 arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS")
80 sitedata = siteinfo_data_for_machine(arch, os, d)
81 if "endian-little" in sitedata:
82 return "little"
83 elif "endian-big" in sitedata:
84 return "big"
85 else:
86 bb.fatal("Cannot determine endianism for %s-%s" % (arch, os))
87
88addtask write_config before do_configure 38addtask write_config before do_configure
89do_write_config[vardeps] += "CC CXX LD AR NM STRIP READELF CFLAGS CXXFLAGS LDFLAGS" 39do_write_config[vardeps] += "CC CXX LD AR NM STRIP READELF CFLAGS CXXFLAGS LDFLAGS"
90do_write_config() { 40do_write_config() {