From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Le Bihan Date: Tue, 24 Oct 2017 20:57:04 +0200 Subject: [Buildroot] [Patch v3 1/2] meson: new package In-Reply-To: References: <20171011065005.9235-1-eric.le.bihan.dev@free.fr> <20171011065005.9235-2-eric.le.bihan.dev@free.fr> Message-ID: <20171024185704.GA14724@itchy> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net 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 > > Signed-off-by: Eric Le Bihan > > --- > > 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