[Buildroot] [PATCH 24/26] Improve TARGETS handling for bootloaders and kernel

Luca Ceresoli luca at lucaceresoli.net
Mon Jun 20 15:01:27 UTC 2011


Hi Thomas,

Thomas Petazzoni wrote:
> As the kernel and bootloaders do not use the normal BR2_PACKAGE_*
> Kconfig options, their target name was not automatically added to the
> global TARGETS variable. Each bootloader .mk and the linux.mk had to
> add their own target manually to TARGETS, and the package
> infrastructure was making tests on non-existing Kconfig variables.
>
> This commit improves the package infrastructure so that it looks at
> BR2_PACKAGE_<pkg>  for packages, BR2_BOOT_<pkg>  for bootloaders and at
> the special BR2_LINUX_KERNEL for the linux package.
>
> This allows to simplify a little bit the bootloaders and linux .mk
> files.
>
> Signed-off-by: Thomas Petazzoni<thomas.petazzoni at free-electrons.com>
> ---
[...snip...]
> --- a/package/Makefile.package.in
> +++ b/package/Makefile.package.in
> @@ -522,10 +522,20 @@ $$($(2)_TARGET_UNINSTALL):		PKG=$(2)
>   $$($(2)_TARGET_CLEAN):			PKG=$(2)
>   $$($(2)_TARGET_DIRCLEAN):		PKG=$(2)
>
> +# Compute the name of the Kconfig option that correspond to the
> +# package being enabled. We handle three cases: the special Linux
> +# kernel case, the bootloaders case, and the normal packages case.
> +ifeq ($(1),linux)
> +$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL
> +else ifeq ($(4),boot)
> +$(2)_KCONFIG_VAR = BR2_BOOT_$(2)
> +else ifeq ($(4),package)
> +$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)
> +endif

This breaks all packages in subdirectories, such as
package/multimedia/ffmpeg, for which $(4) == "package/multimedia".

This can be fixed as:

-else ifeq ($(4),package)
+else ifeq ($(firstword $(subst /, ,$(4))),package)

or, even more simply:

-else ifeq ($(4),package)
+else

Luca




More information about the buildroot mailing list