summaryrefslogtreecommitdiff
path: root/poky/meta/recipes-devtools/meson
diff options
context:
space:
mode:
Diffstat (limited to 'poky/meta/recipes-devtools/meson')
-rw-r--r--poky/meta/recipes-devtools/meson/meson.inc6
-rw-r--r--poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch20
-rw-r--r--poky/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch26
-rw-r--r--poky/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch41
-rw-r--r--poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch94
-rw-r--r--poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch41
-rwxr-xr-xpoky/meta/recipes-devtools/meson/meson/meson-setup.py8
-rwxr-xr-xpoky/meta/recipes-devtools/meson/meson/meson-wrapper1
-rw-r--r--poky/meta/recipes-devtools/meson/meson_0.59.2.bb (renamed from poky/meta/recipes-devtools/meson/meson_0.58.1.bb)0
-rw-r--r--poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.1.bb56
-rw-r--r--poky/meta/recipes-devtools/meson/nativesdk-meson_0.59.2.bb104
11 files changed, 150 insertions, 247 deletions
diff --git a/poky/meta/recipes-devtools/meson/meson.inc b/poky/meta/recipes-devtools/meson/meson.inc
index f1746d2094..174ebd9f31 100644
--- a/poky/meta/recipes-devtools/meson/meson.inc
+++ b/poky/meta/recipes-devtools/meson/meson.inc
@@ -9,15 +9,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${PV}.tar.gz \
file://0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch \
- file://0003-native_bindir.patch \
file://0001-python-module-do-not-manipulate-the-environment-when.patch \
file://disable-rpath-handling.patch \
- file://0001-modules-python.py-do-not-substitute-python-s-install.patch \
- file://gi-target-dep.patch \
file://0001-Make-CPU-family-warnings-fatal.patch \
file://0002-Support-building-allarch-recipes-again.patch \
+ file://0001-is_debianlike-always-return-False.patch \
"
-SRC_URI[sha256sum] = "3144a3da662fcf79f1e5602fa929f2821cba4eba28c2c923fe0a7d3e3db04d5d"
+SRC_URI[sha256sum] = "13dee549a7ba758b7e33ce7719f28d1d337a98d10d378a4779ccc996f5a2fc49"
UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases"
UPSTREAM_CHECK_REGEX = "meson-(?P<pver>\d+(\.\d+)+)\.tar"
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
index bcccfabd17..c5be526b10 100644
--- a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
+++ b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
@@ -1,20 +1,21 @@
-From b64032a2eb1fb760f4ffd5b4b666e2433cf80d39 Mon Sep 17 00:00:00 2001
+From 6c4eef1d92e9e42fdbc888365cab3c95fb33c605 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Tue, 3 Jul 2018 13:59:09 +0100
-Subject: [PATCH 1/2] Make CPU family warnings fatal
+Subject: [PATCH] Make CPU family warnings fatal
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Ross Burton <ross.burton@intel.com>
+
---
mesonbuild/envconfig.py | 2 +-
mesonbuild/environment.py | 4 +---
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py
-index c6a4df3..4d58c91 100644
+index 307aac3..66fb7ec 100644
--- a/mesonbuild/envconfig.py
+++ b/mesonbuild/envconfig.py
-@@ -266,7 +266,7 @@ class MachineInfo:
+@@ -267,7 +267,7 @@ class MachineInfo(HoldableObject):
cpu_family = literal['cpu_family']
if cpu_family not in known_cpu_families:
@@ -24,20 +25,17 @@ index c6a4df3..4d58c91 100644
endian = literal['endian']
if endian not in ('little', 'big'):
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
-index fc9b703..eea8345 100644
+index 71286a5..179917e 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
-@@ -436,9 +436,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
+@@ -352,9 +352,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
trial = 'ppc64'
if trial not in known_cpu_families:
-- mlog.warning('Unknown CPU family {!r}, please report this at '
+- 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`'.format(trial))
+- 'output of `uname -a` and `cat /proc/cpuinfo`')
+ raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % trial)
return trial
---
-2.24.0
-
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch b/poky/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch
new file mode 100644
index 0000000000..83c4782a61
--- /dev/null
+++ b/poky/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch
@@ -0,0 +1,26 @@
+From 667b9ede638677fb37911306937ea62f05897581 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 18 Oct 2021 15:55:59 +0200
+Subject: [PATCH] is_debianlike(): always return False
+
+Otherwise, host contamination happens.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ mesonbuild/mesonlib/universal.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mesonbuild/mesonlib/universal.py b/mesonbuild/mesonlib/universal.py
+index d670d04..47d1b52 100644
+--- a/mesonbuild/mesonlib/universal.py
++++ b/mesonbuild/mesonlib/universal.py
+@@ -651,7 +651,7 @@ def is_cygwin() -> bool:
+
+
+ def is_debianlike() -> bool:
+- return os.path.isfile('/etc/debian_version')
++ return False
+
+
+ def is_dragonflybsd() -> bool:
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch b/poky/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch
deleted file mode 100644
index 231414fcb6..0000000000
--- a/poky/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From f8f67c8d5c3f374b1e30e2d40cb56a79f0544471 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 18 Apr 2019 17:36:11 +0200
-Subject: [PATCH] modules/python.py: do not substitute python's install prefix
- with meson's
-
-Not sure why this is being done, but it
-a) relies on Python's internal variable substitution which may break in the future
-b) shouldn't be necessary as Python's prefix ought to be correct in the first place
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- mesonbuild/modules/python.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py
-index eda70ce..18edd15 100644
---- a/mesonbuild/modules/python.py
-+++ b/mesonbuild/modules/python.py
-@@ -251,7 +251,7 @@ INTROSPECT_COMMAND = '''import sysconfig
- import json
- import sys
-
--install_paths = sysconfig.get_paths(scheme='posix_prefix', vars={'base': '', 'platbase': '', 'installed_base': ''})
-+install_paths = sysconfig.get_paths(scheme='posix_prefix')
-
- def links_against_libpython():
- from distutils.core import Distribution, Extension
-@@ -280,8 +280,8 @@ class PythonInstallation(ExternalProgramHolder):
- self.variables = info['variables']
- self.paths = info['paths']
- install_paths = info['install_paths']
-- self.platlib_install_path = os.path.join(prefix, install_paths['platlib'][1:])
-- self.purelib_install_path = os.path.join(prefix, install_paths['purelib'][1:])
-+ self.platlib_install_path = install_paths['platlib']
-+ self.purelib_install_path = install_paths['purelib']
- self.version = info['version']
- self.platform = info['platform']
- self.is_pypy = info['is_pypy']
diff --git a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch b/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
deleted file mode 100644
index 89257b9e05..0000000000
--- a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 30e97d4090a3d3f5b7ddcaf27cfa17f3c8c1d462 Mon Sep 17 00:00:00 2001
-From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
-Date: Wed, 15 Nov 2017 15:05:01 +0100
-Subject: [PATCH] native_bindir
-
-Some libraries, like QT, have pre-processors that convert their input
-files into something that the cross-compiler can process. We find the
-path of those pre-processors via pkg-config-native instead of
-pkg-config.
-
-This path forces the use of pkg-config-native for host_bins arguments.
-
-There are some discussions upstream to merge this patch, but I presonaly believe
-that is is OE only. https://github.com/mesonbuild/meson/issues/1849#issuecomment-303730323
-
-Upstream-Status: Inappropriate [OE specific]
-Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
-
----
- mesonbuild/dependencies/base.py | 19 +++++++++++--------
- 1 file changed, 11 insertions(+), 8 deletions(-)
-
-diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
-index 14380d4..d0c443f 100644
---- a/mesonbuild/dependencies/base.py
-+++ b/mesonbuild/dependencies/base.py
-@@ -179,7 +179,7 @@ class Dependency:
- def get_exe_args(self, compiler):
- return []
-
-- def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any]) -> str:
-+ def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any], use_native=False) -> str:
- raise DependencyException(f'{self.name!r} is not a pkgconfig dependency')
-
- def get_configtool_variable(self, variable_name):
-@@ -267,7 +267,7 @@ class InternalDependency(Dependency):
- return True
- return any(d.is_built() for d in self.ext_deps)
-
-- def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any]) -> str:
-+ def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any], use_native=False) -> str:
- raise DependencyException('Method "get_pkgconfig_variable()" is '
- 'invalid for an internal dependency')
-
-@@ -645,8 +645,11 @@ class PkgConfigDependency(ExternalDependency):
- return s.format(self.__class__.__name__, self.name, self.is_found,
- self.version_reqs)
-
-- def _call_pkgbin_real(self, args, env):
-- cmd = self.pkgbin.get_command() + args
-+ def _call_pkgbin_real(self, args, env, use_native=False):
-+ if use_native:
-+ cmd = [self.pkgbin.get_command()[0] + "-native"] + args
-+ else:
-+ cmd = self.pkgbin.get_command() + args
- p, out, err = Popen_safe(cmd, env=env)
- rc, out, err = p.returncode, out.strip(), err.strip()
- call = ' '.join(cmd)
-@@ -674,7 +677,7 @@ class PkgConfigDependency(ExternalDependency):
- if key.startswith('PKG_'):
- mlog.debug(f'env[{key}]: {value}')
-
-- def _call_pkgbin(self, args, env=None):
-+ def _call_pkgbin(self, args, env=None, use_native=False):
- # Always copy the environment since we're going to modify it
- # with pkg-config variables
- if env is None:
-@@ -688,7 +691,7 @@ class PkgConfigDependency(ExternalDependency):
- targs = tuple(args)
- cache = PkgConfigDependency.pkgbin_cache
- if (self.pkgbin, targs, fenv) not in cache:
-- cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env)
-+ cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env, use_native)
- return cache[(self.pkgbin, targs, fenv)]
-
- def _convert_mingw_paths(self, args: T.List[str]) -> T.List[str]:
-@@ -894,7 +897,7 @@ class PkgConfigDependency(ExternalDependency):
- (self.name, out_raw))
- self.link_args, self.raw_link_args = self._search_libs(out, out_raw)
-
-- def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any]) -> str:
-+ def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any], use_native=False) -> str:
- options = ['--variable=' + variable_name, self.name]
-
- if 'define_variable' in kwargs:
-@@ -907,7 +910,7 @@ class PkgConfigDependency(ExternalDependency):
-
- options = ['--define-variable=' + '='.join(definition)] + options
-
-- ret, out, err = self._call_pkgbin(options)
-+ ret, out, err = self._call_pkgbin(options, use_native=use_native)
- variable = ''
- if ret != 0:
- if self.required:
diff --git a/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch b/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch
deleted file mode 100644
index 29e164ccc7..0000000000
--- a/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-When building gobject-introspection we want the *native* binaries (as they need
-to be executed) but *host* gobject-introspection libraries, as otherwise the
-native pkg-config can be used and the build will try to link native and host
-binaries together.
-
-Upstream-Status: Backport [589236226856f591c9e8daf0cb7aa1aef8862388]
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index f9660838e..2eefc3fc7 100644
---- a/mesonbuild/modules/gnome.py
-+++ b/mesonbuild/modules/gnome.py
-@@ -84,8 +84,8 @@ class GnomeModule(ExtensionModule):
- mlog.bold('https://github.com/mesonbuild/meson/issues/1387'),
- once=True)
-
-- def _get_native_dep(self, state, depname, required=True):
-- kwargs = {'native': True, 'required': required}
-+ def _get_dep(self, state, depname, native=False, required=True):
-+ kwargs = {'native': native, 'required': required}
- holder = self.interpreter.func_dependency(state.current_node, [depname], kwargs)
- return holder.held_object
-
-@@ -101,7 +101,7 @@ class GnomeModule(ExtensionModule):
- return ExternalProgram.from_entry(name, prog)
-
- # Check if pkgconfig has a variable
-- dep = self._get_native_dep(state, depname, required=False)
-+ dep = self._get_dep(state, depname, native=True, required=False)
- if dep.found() and dep.type_name == 'pkgconfig':
- value = dep.get_pkgconfig_variable(varname, {})
- if value:
-@@ -481,7 +481,7 @@ class GnomeModule(ExtensionModule):
-
- def _get_gir_dep(self, state):
- if not self.gir_dep:
-- self.gir_dep = self._get_native_dep(state, 'gobject-introspection-1.0')
-+ self.gir_dep = self._get_dep(state, 'gobject-introspection-1.0')
- self.giscanner = self._get_native_binary(state, 'g-ir-scanner', 'gobject-introspection-1.0', 'g_ir_scanner')
- self.gicompiler = self._get_native_binary(state, 'g-ir-compiler', 'gobject-introspection-1.0', 'g_ir_compiler')
- return self.gir_dep, self.giscanner, self.gicompiler
diff --git a/poky/meta/recipes-devtools/meson/meson/meson-setup.py b/poky/meta/recipes-devtools/meson/meson/meson-setup.py
index 7ac4e3ad47..daaa551de2 100755
--- a/poky/meta/recipes-devtools/meson/meson/meson-setup.py
+++ b/poky/meta/recipes-devtools/meson/meson/meson-setup.py
@@ -27,9 +27,17 @@ except KeyError:
template_file = os.path.join(sysroot, 'usr/share/meson/meson.cross.template')
cross_file = os.path.join(sysroot, 'usr/share/meson/%smeson.cross' % os.environ["TARGET_PREFIX"])
+native_template_file = os.path.join(sysroot, 'usr/share/meson/meson.native.template')
+native_file = os.path.join(sysroot, 'usr/share/meson/meson.native')
with open(template_file) as in_file:
template = in_file.read()
output = Template(template).substitute(Environ())
with open(cross_file, "w") as out_file:
out_file.write(output)
+
+with open(native_template_file) as in_file:
+ template = in_file.read()
+ output = Template(template).substitute({'OECORE_NATIVE_SYSROOT': os.environ['OECORE_NATIVE_SYSROOT']})
+ with open(native_file, "w") as out_file:
+ out_file.write(output)
diff --git a/poky/meta/recipes-devtools/meson/meson/meson-wrapper b/poky/meta/recipes-devtools/meson/meson/meson-wrapper
index d4ffe60f9a..d4b5187f8d 100755
--- a/poky/meta/recipes-devtools/meson/meson/meson-wrapper
+++ b/poky/meta/recipes-devtools/meson/meson/meson-wrapper
@@ -11,4 +11,5 @@ unset CC CXX CPP LD AR NM STRIP
exec "$OECORE_NATIVE_SYSROOT/usr/bin/meson.real" \
--cross-file "${OECORE_NATIVE_SYSROOT}/usr/share/meson/${TARGET_PREFIX}meson.cross" \
+ --native-file "${OECORE_NATIVE_SYSROOT}/usr/share/meson/meson.native" \
"$@"
diff --git a/poky/meta/recipes-devtools/meson/meson_0.58.1.bb b/poky/meta/recipes-devtools/meson/meson_0.59.2.bb
index de9b905c12..de9b905c12 100644
--- a/poky/meta/recipes-devtools/meson/meson_0.58.1.bb
+++ b/poky/meta/recipes-devtools/meson/meson_0.59.2.bb
diff --git a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.1.bb b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.1.bb
deleted file mode 100644
index 0e76cc78f8..0000000000
--- a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.1.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-include meson.inc
-
-inherit meson-routines
-inherit nativesdk
-
-SRC_URI += "file://meson-setup.py \
- file://meson-wrapper"
-
-# The cross file logic is similar but not identical to that in meson.bbclass,
-# since it's generating for an SDK rather than a cross-compile. Important
-# differences are:
-# - We can't set vars like CC, CXX, etc. yet because they will be filled in with
-# real paths by meson-setup.sh when the SDK is extracted.
-# - Some overrides aren't needed, since the SDK injects paths that take care of
-# them.
-do_install:append() {
- install -d ${D}${datadir}/meson
- cat >${D}${datadir}/meson/meson.cross.template <<EOF
-[binaries]
-c = @CC
-cpp = @CXX
-ar = @AR
-nm = @NM
-strip = @STRIP
-pkgconfig = 'pkg-config'
-
-[properties]
-needs_exe_wrapper = true
-c_args = @CFLAGS
-c_link_args = @LDFLAGS
-cpp_args = @CPPFLAGS
-cpp_link_args = @LDFLAGS
-sys_root = @OECORE_TARGET_SYSROOT
-
-[host_machine]
-system = '${SDK_OS}'
-cpu_family = '${@meson_cpu_family("SDK_ARCH", d)}'
-cpu = '${SDK_ARCH}'
-endian = '${@meson_endian("SDK", d)}'
-EOF
-
- install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
- install -m 0755 ${WORKDIR}/meson-setup.py ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
-
- # We need to wrap the real meson with a thin env setup wrapper.
- mv ${D}${bindir}/meson ${D}${bindir}/meson.real
- install -m 0755 ${WORKDIR}/meson-wrapper ${D}${bindir}/meson
-}
-
-RDEPENDS:${PN} += "\
- nativesdk-ninja \
- nativesdk-python3 \
- nativesdk-python3-setuptools \
- "
-
-FILES:${PN} += "${datadir}/meson ${SDKPATHNATIVE}"
diff --git a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.59.2.bb b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.59.2.bb
new file mode 100644
index 0000000000..7b77041c7e
--- /dev/null
+++ b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.59.2.bb
@@ -0,0 +1,104 @@
+include meson.inc
+
+inherit meson-routines
+inherit nativesdk
+
+SRC_URI += "file://meson-setup.py \
+ file://meson-wrapper"
+
+# The cross file logic is similar but not identical to that in meson.bbclass,
+# since it's generating for an SDK rather than a cross-compile. Important
+# differences are:
+# - We can't set vars like CC, CXX, etc. yet because they will be filled in with
+# real paths by meson-setup.sh when the SDK is extracted.
+# - Some overrides aren't needed, since the SDK injects paths that take care of
+# them.
+def var_list2str(var, d):
+ items = d.getVar(var).split()
+ return items[0] if len(items) == 1 else ', '.join(repr(s) for s in items)
+
+def generate_native_link_template(d):
+ val = ['-L@{OECORE_NATIVE_SYSROOT}${libdir_native}',
+ '-L@{OECORE_NATIVE_SYSROOT}${base_libdir_native}',
+ '-Wl,-rpath-link,@{OECORE_NATIVE_SYSROOT}${libdir_native}',
+ '-Wl,-rpath-link,@{OECORE_NATIVE_SYSROOT}${base_libdir_native}',
+ '-Wl,--allow-shlib-undefined'
+ ]
+ build_arch = d.getVar('BUILD_ARCH')
+ if 'x86_64' in build_arch:
+ loader = 'ld-linux-x86-64.so.2'
+ elif 'i686' in build_arch:
+ loader = 'ld-linux.so.2'
+ elif 'aarch64' in build_arch:
+ loader = 'ld-linux-aarch64.so.1'
+ elif 'ppc64le' in build_arch:
+ loader = 'ld64.so.2'
+
+ if loader:
+ val += ['-Wl,--dynamic-linker=@{OECORE_NATIVE_SYSROOT}${base_libdir_native}/' + loader]
+
+ return repr(val)
+
+do_install:append() {
+ install -d ${D}${datadir}/meson
+
+ cat >${D}${datadir}/meson/meson.native.template <<EOF
+[binaries]
+c = ${@meson_array('BUILD_CC', d)}
+cpp = ${@meson_array('BUILD_CXX', d)}
+ar = ${@meson_array('BUILD_AR', d)}
+nm = ${@meson_array('BUILD_NM', d)}
+strip = ${@meson_array('BUILD_STRIP', d)}
+readelf = ${@meson_array('BUILD_READELF', d)}
+pkgconfig = 'pkg-config-native'
+
+[built-in options]
+c_args = ['-isystem@{OECORE_NATIVE_SYSROOT}${includedir_native}' , ${@var_list2str('BUILD_OPTIMIZATION', d)}]
+c_link_args = ${@generate_native_link_template(d)}
+cpp_args = ['-isystem@{OECORE_NATIVE_SYSROOT}${includedir_native}' , ${@var_list2str('BUILD_OPTIMIZATION', d)}]
+cpp_link_args = ${@generate_native_link_template(d)}
+[properties]
+sys_root = '@OECORE_NATIVE_SYSROOT'
+EOF
+
+ cat >${D}${datadir}/meson/meson.cross.template <<EOF
+[binaries]
+c = @CC
+cpp = @CXX
+ar = @AR
+nm = @NM
+strip = @STRIP
+pkgconfig = 'pkg-config'
+
+[built-in options]
+c_args = @CFLAGS
+c_link_args = @LDFLAGS
+cpp_args = @CPPFLAGS
+cpp_link_args = @LDFLAGS
+
+[properties]
+needs_exe_wrapper = true
+sys_root = @OECORE_TARGET_SYSROOT
+
+[host_machine]
+system = '${SDK_OS}'
+cpu_family = '${@meson_cpu_family("SDK_ARCH", d)}'
+cpu = '${SDK_ARCH}'
+endian = '${@meson_endian("SDK", d)}'
+EOF
+
+ install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
+ install -m 0755 ${WORKDIR}/meson-setup.py ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
+
+ # We need to wrap the real meson with a thin env setup wrapper.
+ mv ${D}${bindir}/meson ${D}${bindir}/meson.real
+ install -m 0755 ${WORKDIR}/meson-wrapper ${D}${bindir}/meson
+}
+
+RDEPENDS:${PN} += "\
+ nativesdk-ninja \
+ nativesdk-python3 \
+ nativesdk-python3-setuptools \
+ "
+
+FILES:${PN} += "${datadir}/meson ${SDKPATHNATIVE}"