summaryrefslogtreecommitdiffstats
path: root/package/meson
diff options
context:
space:
mode:
authorPeter Seiderer <ps.report@gmx.net>2018-11-30 11:40:03 +0100
committerPeter Korsgaard <peter@korsgaard.com>2019-01-17 22:52:41 +0100
commit5d882b71a8c0c87b0ccdea7ad620a8f44c33fcb1 (patch)
treeab7b53fb992e4a23238f8bef5203c38cc5c49970 /package/meson
parenta86b626b5b0e3416f2b84c666adf9cb2d00e6596 (diff)
downloadbuildroot-5d882b71a8c0c87b0ccdea7ad620a8f44c33fcb1.tar.gz
buildroot-5d882b71a8c0c87b0ccdea7ad620a8f44c33fcb1.zip
package/pkg-meson: support per-package directories
Currently, package/meson/meson.mk generates a single global cross-compilation.conf file, with the path to the compiler, cflags, ldflags, and various other details. This file is then used when building all meson-based packages. This causes two problems: - It is not compatible with per-package directories, because with per-package folders, we need to use a different compiler, and possibly CFLAGS/LDFLAGS for each package. - It is not possible to define per package CFLAGS. Indeed, when cross-compiling, meson doesn't support passing CFLAGS through the environment, only the CFLAGS from cross-compilation.conf are taken into account. For this reason, this commit: - Introduces a per-package cross-compilation.conf, which is generated by the pkg-meson infrastructure in the "configure" step right before calling meson. The file is generated in $(@D)/build/, and because it is generated within a given package "configure" step, the compiler path is the one of this package. - Keeps the global cross-compilation.conf in $(HOST_DIR)/etc/meson/, for the SDK use-case of Buildroot. Since we want the final and global values of the compiler path, CFLAGS and LDFLAGS, generating this global cross-compilation.conf is moved to a TARGET_FINALIZE_HOOKS. If we were keeping this as a HOST_MESON_POST_INSTALL_HOOKS, it would contain values specific to the host-meson package. For now, we don't yet support per-package CFLAGS/LDFLAGS, but having such per-package cross-compilation.conf is a necessary preparation to achieve this goal. This commit has been tested by building all Buildroot packages that use meson: json-glib, systemd, enlightenment, at-spi2-core, ncmpc, libmpdclient and ncmpc. Signed-off-by: Peter Seiderer <ps.report@gmx.net> [Thomas: - add extended commit log - in pkg-meson.mk, re-use variables defined in meson.mk to do the replacement of CFLAGS/LDFLAGS/CXXFLAGS - move the generation of the global cross-compilation.conf to a TARGET_FINALIZE_HOOKS - testing with per-package folders] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Tested-by: Peter Seiderer <ps.report@gmx.net> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'package/meson')
-rw-r--r--package/meson/meson.mk4
1 files changed, 3 insertions, 1 deletions
diff --git a/package/meson/meson.mk b/package/meson/meson.mk
index 5ac9a1d91b..d76541cc93 100644
--- a/package/meson/meson.mk
+++ b/package/meson/meson.mk
@@ -49,6 +49,8 @@ HOST_MESON_SED_CFLAGS = $(if $(TARGET_CFLAGS),`printf '"%s"$(comma) ' $(TARGET_C
HOST_MESON_SED_LDFLAGS = $(if $(TARGET_LDFLAGS),`printf '"%s"$(comma) ' $(TARGET_LDFLAGS)`)
HOST_MESON_SED_CXXFLAGS = $(if $(TARGET_CXXFLAGS),`printf '"%s"$(comma) ' $(TARGET_CXXFLAGS)`)
+# Generate a Meson cross-compilation.conf suitable for use with the
+# SDK
define HOST_MESON_INSTALL_CROSS_CONF
mkdir -p $(HOST_DIR)/etc/meson
sed -e "s%@TARGET_CROSS@%$(TARGET_CROSS)%g" \
@@ -63,6 +65,6 @@ define HOST_MESON_INSTALL_CROSS_CONF
> $(HOST_DIR)/etc/meson/cross-compilation.conf
endef
-HOST_MESON_POST_INSTALL_HOOKS += HOST_MESON_INSTALL_CROSS_CONF
+TARGET_FINALIZE_HOOKS += HOST_MESON_INSTALL_CROSS_CONF
$(eval $(host-python-package))
OpenPOWER on IntegriCloud