diff mbox series

[v4,1/2] meson: new package

Message ID 20171029131052.18850-2-eric.le.bihan.dev@free.fr
State Accepted
Headers show
Series Add support for Meson build | expand

Commit Message

Eric Le Bihan Oct. 29, 2017, 1:10 p.m. UTC
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@embedded.rocks>
Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>
---
 package/meson/cross-compilation.conf.in | 23 ++++++++++++++++++++++
 package/meson/meson.hash                |  3 +++
 package/meson/meson.mk                  | 35 +++++++++++++++++++++++++++++++++
 3 files changed, 61 insertions(+)
 create mode 100644 package/meson/cross-compilation.conf.in
 create mode 100644 package/meson/meson.hash
 create mode 100644 package/meson/meson.mk

Comments

Yegor Yefremov Nov. 24, 2017, 10:54 a.m. UTC | #1
On Sun, Oct 29, 2017 at 2:10 PM, Eric Le Bihan
<eric.le.bihan.dev@free.fr> 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@embedded.rocks>
> Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>

Tested-by: Yegor Yefremov <yegorslists@googlemail.com>

> ---
>  package/meson/cross-compilation.conf.in | 23 ++++++++++++++++++++++
>  package/meson/meson.hash                |  3 +++
>  package/meson/meson.mk                  | 35 +++++++++++++++++++++++++++++++++
>  3 files changed, 61 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..0eec74087b
> --- /dev/null
> +++ b/package/meson/cross-compilation.conf.in
> @@ -0,0 +1,23 @@
> +# 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@gcc'
> +cpp = '@TARGET_CROSS@g++'
> +ar = '@TARGET_CROSS@ar'
> +strip = '@TARGET_CROSS@strip'
> +pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
> +
> +[properties]
> +c_args = [@TARGET_CFLAGS@]
> +c_link_args = [@TARGET_LDFLAGS@]
> +cpp_args = [@TARGET_CXXFLAGS@]
> +cpp_link_args = [@TARGET_LDFLAGS@]
> +
> +[host_machine]
> +system = 'linux'
> +cpu_family ='@TARGET_ARCH@'
> +cpu = '@TARGET_CPU@'
> +endian = '@TARGET_ENDIAN@'
> diff --git a/package/meson/meson.hash b/package/meson/meson.hash
> new file mode 100644
> index 0000000000..412c10eb2f
> --- /dev/null
> +++ b/package/meson/meson.hash
> @@ -0,0 +1,3 @@
> +# Locally calculated after checking pgp signature
> +# https://github.com/mesonbuild/meson/releases/download/0.43.0/meson-0.43.0.tar.gz.asc
> +sha256 c513eca90e0d70bf14cd1eaafea2fa91cf40a73326a7ff61f08a005048057340  meson-0.43.0.tar.gz
> diff --git a/package/meson/meson.mk b/package/meson/meson.mk
> new file mode 100644
> index 0000000000..55ce84da07
> --- /dev/null
> +++ b/package/meson/meson.mk
> @@ -0,0 +1,35 @@
> +################################################################################
> +#
> +# meson
> +#
> +################################################################################
> +
> +MESON_VERSION = 0.43.0
> +MESON_SITE = https://github.com/mesonbuild/meson/releases/download/$(MESON_VERSION)
> +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 = $(call LOWERCASE,$(BR2_ENDIAN))
> +HOST_MESON_TARGET_CPU = $(call qstrip,$(BR2_GCC_TARGET_CPU))
> +
> +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@%$(HOST_MESON_TARGET_CPU)%g" \
> +           -e "s%@TARGET_ENDIAN@%$(HOST_MESON_TARGET_ENDIAN)%g" \
> +           -e "s%@TARGET_CFLAGS@%`printf '"%s", ' $(TARGET_CFLAGS)`%g" \
> +           -e "s%@TARGET_LDFLAGS@%`printf '"%s", ' $(TARGET_LDFLAGS)`%g" \
> +           -e "s%@TARGET_CXXFLAGS@%`printf '"%s", ' $(TARGET_CXXFLAGS)`%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))
> --
> 2.13.6
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thomas Petazzoni Dec. 28, 2017, 10:21 p.m. UTC | #2
Hello,

On Sun, 29 Oct 2017 14:10:51 +0100, 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@embedded.rocks>
> Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>
> ---
>  package/meson/cross-compilation.conf.in | 23 ++++++++++++++++++++++
>  package/meson/meson.hash                |  3 +++
>  package/meson/meson.mk                  | 35 +++++++++++++++++++++++++++++++++
>  3 files changed, 61 insertions(+)
>  create mode 100644 package/meson/cross-compilation.conf.in
>  create mode 100644 package/meson/meson.hash
>  create mode 100644 package/meson/meson.mk

Applied to master after adding an entry to the DEVELOPERS file. It
would be nice to quickly have a package that uses this, as right now
host-meson is not used anywhere.

Thanks a lot!

Thomas
diff mbox series

Patch

diff --git a/package/meson/cross-compilation.conf.in b/package/meson/cross-compilation.conf.in
new file mode 100644
index 0000000000..0eec74087b
--- /dev/null
+++ b/package/meson/cross-compilation.conf.in
@@ -0,0 +1,23 @@ 
+# 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@gcc'
+cpp = '@TARGET_CROSS@g++'
+ar = '@TARGET_CROSS@ar'
+strip = '@TARGET_CROSS@strip'
+pkgconfig = '@HOST_DIR@/usr/bin/pkg-config'
+
+[properties]
+c_args = [@TARGET_CFLAGS@]
+c_link_args = [@TARGET_LDFLAGS@]
+cpp_args = [@TARGET_CXXFLAGS@]
+cpp_link_args = [@TARGET_LDFLAGS@]
+
+[host_machine]
+system = 'linux'
+cpu_family ='@TARGET_ARCH@'
+cpu = '@TARGET_CPU@'
+endian = '@TARGET_ENDIAN@'
diff --git a/package/meson/meson.hash b/package/meson/meson.hash
new file mode 100644
index 0000000000..412c10eb2f
--- /dev/null
+++ b/package/meson/meson.hash
@@ -0,0 +1,3 @@ 
+# Locally calculated after checking pgp signature
+# https://github.com/mesonbuild/meson/releases/download/0.43.0/meson-0.43.0.tar.gz.asc
+sha256 c513eca90e0d70bf14cd1eaafea2fa91cf40a73326a7ff61f08a005048057340  meson-0.43.0.tar.gz
diff --git a/package/meson/meson.mk b/package/meson/meson.mk
new file mode 100644
index 0000000000..55ce84da07
--- /dev/null
+++ b/package/meson/meson.mk
@@ -0,0 +1,35 @@ 
+################################################################################
+#
+# meson
+#
+################################################################################
+
+MESON_VERSION = 0.43.0
+MESON_SITE = https://github.com/mesonbuild/meson/releases/download/$(MESON_VERSION)
+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 = $(call LOWERCASE,$(BR2_ENDIAN))
+HOST_MESON_TARGET_CPU = $(call qstrip,$(BR2_GCC_TARGET_CPU))
+
+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@%$(HOST_MESON_TARGET_CPU)%g" \
+	    -e "s%@TARGET_ENDIAN@%$(HOST_MESON_TARGET_ENDIAN)%g" \
+	    -e "s%@TARGET_CFLAGS@%`printf '"%s", ' $(TARGET_CFLAGS)`%g" \
+	    -e "s%@TARGET_LDFLAGS@%`printf '"%s", ' $(TARGET_LDFLAGS)`%g" \
+	    -e "s%@TARGET_CXXFLAGS@%`printf '"%s", ' $(TARGET_CXXFLAGS)`%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))