Go to file
Peter Seiderer 5d882b71a8 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>
2019-01-17 22:52:41 +01:00
arch arch: add support for RISC-V 32-bit (riscv32) architecture 2019-01-06 14:09:31 +01:00
board configs/qemu_riscv32_virt: new defconfig 2019-01-06 14:30:11 +01:00
boot boot/uboot: use HOSTCC_NOCCACHE as kconfig HOSTCC 2019-01-16 23:38:13 +01:00
configs configs/olimex_a20_olinuxino_lime*: bump Linux and U-Boot versions 2019-01-16 15:59:06 +01:00
docs docs/manual: standardize a bit more the formatting of commit titles 2019-01-16 09:23:44 +01:00
fs fs/common.mk: make sure that static devices from packages are created 2018-12-04 21:53:14 +01:00
linux linux: use HOSTCC_NOCCACHE as kconfig HOSTCC 2019-01-16 23:39:28 +01:00
package package/pkg-meson: support per-package directories 2019-01-17 22:52:41 +01:00
support support/scripts/check-host-rpath: document existing functions 2019-01-17 22:38:34 +01:00
system skeleton: use BR2_SYSTEM_DEFAULT_PATH as default PATH 2018-12-31 14:32:44 +01:00
toolchain toolchain-external: update Arm AArch64 toolchain 8.2-2018.11 2019-01-04 12:45:17 +01:00
utils check-package: fix Python3 support 2019-01-16 23:14:25 +01:00
.defconfig arch: remove support for sh64 2016-09-08 22:15:15 +02:00
.flake8 .flake8: ignore utils/diffconfig 2018-03-13 22:37:54 +01:00
.gitignore
.gitlab-ci.yml configs/qemu_riscv32_virt: new defconfig 2019-01-06 14:30:11 +01:00
.gitlab-ci.yml.in .gitlab-ci.yml: store .config files as artefacts for defconfig tests 2018-12-09 17:31:13 +01:00
CHANGES Update for 2018.02.9 2018-12-20 14:21:49 +01:00
Config.in core/download: drop the SSH command 2018-11-19 22:11:31 +01:00
Config.in.legacy package/boost: bump to version 1.69.0 2019-01-13 21:45:43 +01:00
COPYING COPYING: add exception about patch licensing 2016-02-26 19:50:13 +01:00
DEVELOPERS package/rtc-tools: new package 2019-01-16 10:56:25 +01:00
Makefile Makefile: move definition of TARGET_DIR inside .config condition 2019-01-17 22:38:52 +01:00
Makefile.legacy Remove BR2_DEPRECATED 2016-10-15 23:14:45 +02:00
README README: add reference to submitting-patches 2016-02-01 19:16:08 +01:00

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with 'make manual-text' and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the target architecture and the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot.  Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
'make list-defconfigs' to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on Freenode IRC.

If you would like to contribute patches, please read
https://buildroot.org/manual.html#submitting-patches