summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2020-01-08 17:19:36 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-01-11 15:19:27 +0000
commit64cacd1be4b70bcef96e383a388277c386ea6206 (patch)
treebedf6059f274a7498791aea83ac6ccc47b2f5f60 /meta/recipes-core
parent3189be6d6319d3b598beb52db0ea48fd7516b381 (diff)
downloadpoky-64cacd1be4b70bcef96e383a388277c386ea6206.tar.gz
glib: support target/os/libc-specific Meson cross files
Build systems have a common problem that some tests can only be done by executing a piece of test code (compared to just compiling or linking test code). In a cross-compilation the execution of this code isn't possible and the Meson solution to this is to allow 'cross properties' to be specified in the cross files. GLib has a number of these, for example determining the direction the stack grows, whether /proc/self/cmdline exists, or the behaviour of snprintf(). Previously we'd passed values for these to the Glib build for target builds, but this misses out nativesdk builds (which are also cross-compiled) and the fact that some of these values are specific to the platform, some are specific to the host OS, and some are specific to the libc implementation. This problem has already been solved for autotools with the siteinfo class, which turns the target platform/OS/libc variables into filenames (such as common common-linux common-glibc). We can look for these in FILESDIR and use them as cross files. Assuming that there are no problems with this appoach it can be moved into meson.bbclass so that all Meson recipes can use it for their cross files. (From OE-Core rev: 5acd9cbc9d5c6355010775250fb25f043441c5cd) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core')
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common3
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-glibc (renamed from meta/recipes-core/glib-2.0/glib-2.0/glib-meson.cross)5
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-linux5
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-mingw6
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-musl6
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.62.4.bb26
-rw-r--r--meta/recipes-core/glib-2.0/glib.inc1
7 files changed, 45 insertions, 7 deletions
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common
new file mode 100644
index 0000000000..0d7c5fa3f8
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common
@@ -0,0 +1,3 @@
1[properties]
2# On all known supported architectures the stack grows down
3growing_stack = false
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/glib-meson.cross b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-glibc
index 5246c77601..c4648f58c7 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/glib-meson.cross
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-glibc
@@ -3,8 +3,3 @@ have_c99_vsnprintf = true
3have_c99_snprintf = true 3have_c99_snprintf = true
4have_unix98_printf = true 4have_unix98_printf = true
5va_val_copy = true 5va_val_copy = true
6growing_stack = false
7have_proc_self_cmdline = true
8
9[binaries]
10env = "/usr/bin/env"
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-linux b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-linux
new file mode 100644
index 0000000000..83596e0efb
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-linux
@@ -0,0 +1,5 @@
1[properties]
2have_proc_self_cmdline = true
3
4[binaries]
5env = "/usr/bin/env"
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-mingw b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-mingw
new file mode 100644
index 0000000000..75f911ba1e
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-mingw
@@ -0,0 +1,6 @@
1[properties]
2have_c99_vsnprintf = false
3have_c99_snprintf = false
4have_unix98_printf = false
5va_val_copy = true
6have_proc_self_cmdline = false
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-musl b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-musl
new file mode 100644
index 0000000000..3049e5116e
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/meson.cross.d/common-musl
@@ -0,0 +1,6 @@
1[properties]
2have_c99_vsnprintf = true
3have_c99_snprintf = true
4have_unix98_printf = true
5va_val_copy = true
6have_strlcpy = true
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.62.4.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.62.4.bb
index 7bf8648cad..953fba501a 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0_2.62.4.bb
+++ b/meta/recipes-core/glib-2.0/glib-2.0_2.62.4.bb
@@ -18,7 +18,31 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
18 " 18 "
19 19
20SRC_URI_append_class-native = " file://relocate-modules.patch" 20SRC_URI_append_class-native = " file://relocate-modules.patch"
21SRC_URI_append_class-target = " file://glib-meson.cross"
22 21
23SRC_URI[md5sum] = "d52234ecba128932bed90bbc3553bfe5" 22SRC_URI[md5sum] = "d52234ecba128932bed90bbc3553bfe5"
24SRC_URI[sha256sum] = "4c84030d77fa9712135dfa8036ad663925655ae95b1d19399b6200e869925bbc" 23SRC_URI[sha256sum] = "4c84030d77fa9712135dfa8036ad663925655ae95b1d19399b6200e869925bbc"
24
25# Find any meson cross files in FILESPATH that are relevant for the current
26# build (using siteinfo) and add them to EXTRA_OEMESON.
27inherit siteinfo
28def find_meson_cross_files(d):
29 if bb.data.inherits_class('native', d):
30 return ""
31
32 import collections
33 sitedata = siteinfo_data(d)
34 # filename -> found
35 files = collections.OrderedDict()
36 for path in d.getVar("FILESPATH").split(":"):
37 for element in sitedata:
38 filename = os.path.join(path, "meson.cross.d", element)
39 files[filename] = os.path.exists(filename)
40
41 items = ["--cross-file=" + k for k,v in files.items() if v]
42 d.appendVar("EXTRA_OEMESON", " " + " ".join(items))
43 items = ["%s:%s" % (k, "True" if v else "False") for k,v in files.items()]
44 d.appendVarFlag("do_configure", "file-checksums", " " + " ".join(items))
45
46python () {
47 find_meson_cross_files(d)
48}
diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
index e811b42d77..f4aff297e5 100644
--- a/meta/recipes-core/glib-2.0/glib.inc
+++ b/meta/recipes-core/glib-2.0/glib.inc
@@ -49,7 +49,6 @@ PACKAGECONFIG[libelf] = ",,elfutils"
49PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false,dbus" 49PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false,dbus"
50 50
51EXTRA_OEMESON = "-Ddtrace=false -Dfam=false -Dsystemtap=false -Dselinux=disabled" 51EXTRA_OEMESON = "-Ddtrace=false -Dfam=false -Dsystemtap=false -Dselinux=disabled"
52EXTRA_OEMESON_append_class-target = " --cross-file ${WORKDIR}/glib-meson.cross"
53 52
54do_configure_prepend() { 53do_configure_prepend() {
55 sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/gio/gdbus-2.0/codegen/gdbus-codegen.in 54 sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/gio/gdbus-2.0/codegen/gdbus-codegen.in