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

Eric Le Bihan eric.le.bihan.dev at free.fr
Tue Oct 24 18:57:04 UTC 2017


Hi!

On 17-10-11 23:04:56, Arnout Vandecappelle wrote:
> 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?

It goes well with the usual suspects (arm, mips, ppc, x86, ...) but I'll
have to check for sparc, sh4 and xtensa. If needed, how should I add a
restriction, given that there is no Config.in.host?

> > +cpu = '@TARGET_CPU@'
> > +endian = '@TARGET_ENDIAN@'
>
>  I'm completely missing our TARGET_CFLAGS and TARGET_LDFLAGS here. Is there no
> way to specify those?

These are to be passed via the c_args, c_link_args parameters in the
"properties" section of the cross-compilation configuration file. I will
add this.

> > 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.

Will do!

> > +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).

Of course! It is mentionned in docs/manual/adding-packages-tips.txt. I
should re-read the manual more often...

> > +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))

Will do!

BTW, the value of the "c_args" parameter in the "properties" section of the
cross-compilation configuration file is formatted as follow:

```
[properties]
c_args = ['foo', 'bar', 'baz']
```

$(TARGET_CFLAGS) is a string like "foo bar baz". To convert it, is
the following OK?

```
qlist = $(shell echo $(1) | sed -e "s/[^ ][^ ]*/'&',/g")

sed -e "s;@TARGET_CFLAGS@;$(call qlist,$(TARGET_CFLAGS));g" \
        $(HOST_MESON_PKGDIR)/cross-compilation.conf.in \
        > $(HOST_DIR)/etc/meson/cross-compilation.conf
```

Regards,

--
ELB


More information about the buildroot mailing list