libucontext: Switch to meson build system

cross compiling with meson is easier than the plain makefile build
method that libucontext has, there were bunch of problems passing
compiler and make variables, compounded by the fact that makefile
decided on some compiler flags internally and thought that cflags are
synthesized completely in makefile and not passed from environment like
OE is doing. As a result some features were not being compiled in e.g.
function name aliases were missing

meson, on the other hand is cleaner and we have to add a patch to
support cpu architecture on meson cmdline, everything else pretty much
works out of box

(From OE-Core rev: 6e186e75d62e1afabd19a339924b66eac1418274)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj
2021-05-30 08:57:34 -07:00
committed by Richard Purdie
parent aa0f01f1cd
commit 21a919c821
2 changed files with 53 additions and 14 deletions

View File

@@ -0,0 +1,49 @@
From a530eed9e7e6872e10fe92efaf1e9739471c30ca Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 30 May 2021 08:30:28 -0700
Subject: [PATCH] meson: Add option to pass cpu
This helps with cross compile setups, where host_cpu != target_cpu
therefore detecting it on the fly will end up with wrong cpu to build
for
Upstream-Status: Submitted [https://github.com/kaniini/libucontext/pull/28]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
meson.build | 6 +++++-
meson_options.txt | 4 +++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index e863780..2b4bdbd 100644
--- a/meson.build
+++ b/meson.build
@@ -6,7 +6,11 @@ project(
version : run_command('head', files('VERSION')).stdout()
)
-cpu = host_machine.cpu_family()
+cpu = get_option('cpu')
+if cpu == ''
+ cpu = host_machine.cpu_family()
+endif
+
if cpu == 'sh4'
cpu = 'sh'
endif
diff --git a/meson_options.txt b/meson_options.txt
index d4201d1..864d83c 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,4 +1,6 @@
option('freestanding', type : 'boolean', value : false,
description: 'Do not use system headers')
option('export_unprefixed', type : 'boolean', value : true,
- description: 'Export POSIX 2004 ucontext names as alises')
\ No newline at end of file
+ description: 'Export POSIX 2004 ucontext names as alises')
+option('cpu', type : 'string', value : '',
+ description: 'Target CPU architecture for cross compile')
--
2.31.1

View File

@@ -11,7 +11,8 @@ DEPENDS = ""
PV = "1.1+${SRCPV}"
SRCREV = "335ee864ef6f4a5d4b525453fd9dbfb3507cfecc"
SRC_URI = "git://github.com/kaniini/libucontext \
"
file://0001-meson-Add-option-to-pass-cpu.patch \
"
S = "${WORKDIR}/git"
@@ -49,16 +50,5 @@ def map_kernel_arch(a, d):
return a
bb.error("cannot map '%s' to a linux kernel architecture" % a)
export ARCH = "${@map_kernel_arch(d.getVar('TARGET_ARCH'), d)}"
CFLAGS += "-Iarch/${ARCH} -Iarch/common"
EXTRA_OEMAKE = "CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}' LIBDIR='${base_libdir}'"
do_compile() {
oe_runmake ARCH=${ARCH}
}
do_install() {
oe_runmake ARCH="${ARCH}" DESTDIR="${D}" install
}
EXTRA_OEMESON = "-Dcpu=${@map_kernel_arch(d.getVar('TARGET_ARCH'), d)}"
inherit meson