Browse Source

meson: new package

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>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Eric Le Bihan 7 years ago
parent
commit
5cd8afbdfc
4 changed files with 62 additions and 0 deletions
  1. 1 0
      DEVELOPERS
  2. 23 0
      package/meson/cross-compilation.conf.in
  3. 3 0
      package/meson/meson.hash
  4. 35 0
      package/meson/meson.mk

+ 1 - 0
DEVELOPERS

@@ -542,6 +542,7 @@ F:	package/eudev/
 F:	package/execline/
 F:	package/execline/
 F:	package/hicolor-icon-theme/
 F:	package/hicolor-icon-theme/
 F:	package/jemalloc/
 F:	package/jemalloc/
+F:	package/meson/
 F:	package/ninja/
 F:	package/ninja/
 F:	package/s6/
 F:	package/s6/
 F:	package/s6-dns/
 F:	package/s6-dns/

+ 23 - 0
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@'

+ 3 - 0
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

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