[Buildroot] [Patch v3 1/2] meson: new package

Arnout Vandecappelle arnout at mind.be
Wed Oct 11 21:04:56 UTC 2017


On 11-10-17 08:50, Eric Le Bihan wrote:
> This new package provides the host variant of the Meson Build System, an
> open source build system meant to be both extremely fast, and as user
> friendly as possible.
> 
> More precisely, Meson creates configuration files for the Ninja build
> system.
> 
> Besides building Meson, it generates a configuration file
> ("$(HOST_DIR)/etc/meson/cross-compilation.conf") to be used when
> cross-compiling a Meson-based project.
> 
> Signed-off-by: Jörg Krause <joerg.krause at embedded.rocks>
> Signed-off-by: Eric Le Bihan <eric.le.bihan.dev at free.fr>
> ---
>  package/meson/cross-compilation.conf.in | 17 +++++++++++++++++
>  package/meson/meson.hash                |  2 ++
>  package/meson/meson.mk                  | 31 +++++++++++++++++++++++++++++++
>  3 files changed, 50 insertions(+)
>  create mode 100644 package/meson/cross-compilation.conf.in
>  create mode 100644 package/meson/meson.hash
>  create mode 100644 package/meson/meson.mk
> 
> diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
> new file mode 100644
> index 0000000000..84b399f51f
> --- /dev/null
> +++ b/package/meson/cross-compilation.conf.in
> @@ -0,0 +1,17 @@
> +# Note: Buildroot's and Meson's terminologies differ about the meaning
> +# of 'build', 'host' and 'target':
> +# - Buildroot's 'host' is Meson's 'build'
> +# - Buildroot's 'target' is Meson's 'host'
> +
> +[binaries]
> +c = '@TARGET_CROSS at gcc'
> +cpp = '@TARGET_CROSS at g++'
> +ar = '@TARGET_CROSS at ar'
> +strip = '@TARGET_CROSS at strip'
> +pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
> +
> +[host_machine]
> +system = 'linux'
> +cpu_family ='@TARGET_ARCH@'

 Does meson have the same definition of ARCH as we do? Does it support all our
ARCHes?

> +cpu = '@TARGET_CPU@'
> +endian = '@TARGET_ENDIAN@'

 I'm completely missing our TARGET_CFLAGS and TARGET_LDFLAGS here. Is there no
way to specify those?

> diff --git a/package/meson/meson.hash b/package/meson/meson.hash
> new file mode 100644
> index 0000000000..cdb7d1b9ef
> --- /dev/null
> +++ b/package/meson/meson.hash
> @@ -0,0 +1,2 @@
> +# Locally generated

 You should also verify it against upstream's meson-0.43.0.tar.gz.asc.

> +sha256 324894427dcd29f6156fe06b046c6ad1b998470714debd7c5705902f21aaaa73  meson-0.43.0.tar.gz
> diff --git a/package/meson/meson.mk b/package/meson/meson.mk
> new file mode 100644
> index 0000000000..e4bff229a6
> --- /dev/null
> +++ b/package/meson/meson.mk
> @@ -0,0 +1,31 @@
> +################################################################################
> +#
> +# meson
> +#
> +################################################################################
> +
> +MESON_VERSION = 0.43.0
> +MESON_SITE = $(call github,mesonbuild,meson,$(MESON_VERSION))

 Upstream has an uploaded tarball. In that case, we use the uploaded tarball,
not the autogenerated one. The uploaded tarball is signed, and sometimes it is
subtly different (e.g. containing some generated files).

> +MESON_LICENSE = Apache-2.0
> +MESON_LICENSE_FILES = COPYING
> +MESON_SETUP_TYPE = setuptools
> +
> +HOST_MESON_DEPENDENCIES = host-ninja
> +HOST_MESON_NEEDS_HOST_PYTHON = python3
> +
> +HOST_MESON_TARGET_ENDIAN = $(shell echo $(BR2_ENDIAN) | tr 'A-Z' 'a-z')

 $(call LOWERCASE,$(BR2_ENDIAN))

 Regards,
 Arnout

> +
> +define HOST_MESON_INSTALL_CROSS_CONF
> +	mkdir -p $(HOST_DIR)/etc/meson
> +	sed -e 's;@TARGET_CROSS@;$(TARGET_CROSS);g' \
> +	    -e 's;@TARGET_ARCH@;$(ARCH);g' \
> +	    -e 's;@TARGET_CPU@;$(BR2_GCC_TARGET_CPU);g' \
> +	    -e 's;@TARGET_ENDIAN@;$(HOST_MESON_TARGET_ENDIAN);g' \
> +	    -e 's;@HOST_DIR@;$(HOST_DIR);g' \
> +	    $(HOST_MESON_PKGDIR)/cross-compilation.conf.in \
> +	    > $(HOST_DIR)/etc/meson/cross-compilation.conf
> +endef
> +
> +HOST_MESON_POST_INSTALL_HOOKS += HOST_MESON_INSTALL_CROSS_CONF
> +
> +$(eval $(host-python-package))
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF


More information about the buildroot mailing list