HOMEPAGE = "http://mesonbuild.com" SUMMARY = "A high performance build system" DESCRIPTION = "Meson is a build system designed to increase programmer \ productivity. It does this by providing a fast, simple and easy to use \ interface for modern software development tools and practices." LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57" GITHUB_BASE_URI = "https://github.com/mesonbuild/meson/releases/" SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/meson-${PV}.tar.gz \ file://meson-setup.py \ file://meson-wrapper \ file://0001-python-module-do-not-manipulate-the-environment-when.patch \ file://0001-Make-CPU-family-warnings-fatal.patch \ file://0002-Support-building-allarch-recipes-again.patch \ " SRC_URI[sha256sum] = "567e533adf255de73a2de35049b99923caf872a455af9ce03e01077e0d384bed" UPSTREAM_CHECK_REGEX = "(?P\d+(\.\d+)+)$" inherit python_setuptools_build_meta github-releases RDEPENDS:${PN} = "ninja python3-modules python3-pkg-resources" FILES:${PN} += "${datadir}/polkit-1" do_install:append () { # As per the same issue in the python recipe itself: # Unfortunately the following pyc files are non-deterministc due to 'frozenset' # being written without strict ordering, even with PYTHONHASHSEED = 0 # Upstream is discussing ways to solve the issue properly, until then let's # just not install the problematic files. # More info: http://benno.id.au/blog/2013/01/15/python-determinism rm -f ${D}${libdir}/python*/site-packages/mesonbuild/dependencies/__pycache__/mpi.cpython* } BBCLASSEXTEND = "native nativesdk" inherit meson-routines # 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 repr(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' elif 'loongarch64' in build_arch: loader = 'ld-linux-loongarch-lp64d.so.1' elif 'riscv64' in build_arch: loader = 'ld-linux-riscv64-lp64d.so.1' if loader: val += ['-Wl,--dynamic-linker=@{OECORE_NATIVE_SYSROOT}${base_libdir_native}/' + loader] return repr(val) install_templates() { install -d ${D}${datadir}/meson cat >${D}${datadir}/meson/meson.native.template <${D}${datadir}/meson/meson.cross.template <