[Buildroot] [PATCH] uboot: fix build with old U-Boot versions

Carlos Santos casantos at datacom.ind.br
Sun Jul 3 16:30:15 UTC 2016


> From: "Thomas Petazzoni" <thomas.petazzoni at free-electrons.com>
> To: buildroot at uclibc.org
> Cc: "Thomas Petazzoni" <thomas.petazzoni at free-electrons.com>, "Carlos Santos" <casantos at datacom.ind.br>
> Sent: Saturday, July 2, 2016 6:25:43 AM
> Subject: [PATCH] uboot: fix build with old U-Boot versions

> Since commit 0dca644e443c8f28bfe5aa1c98201dc3b49e1165 ("boot/uboot: fix
> missing host-openssl for i.MX28 target"), we pass HOSTCFLAGS/HOSTLDFLAGS
> in the environment of U-Boot when building. This is needed to allow
> U-Boot to find the OpenSSL headers/libraries when they are
> needed. Unfortunately, this breaks the build with old U-Boot versions as
> the U-Boot Makefiles were not designed to have HOSTCFLAGS/HOSTLDFLAGS
> passed in, which causes some important CFLAGS from the U-Boot build
> system to be ignored.
> 
> To address this, we only pass HOSTCFLAGS/HOSTLDFLAGS when OpenSSL
> support is needed. We make the assumption that the OpenSSL requirement
> only exists in sufficiently recent U-Boot versions, for which passing
> HOSTCFLAGS/HOSTLDFLAGS work fine.
> 
> Reported-by: Carlos Santos <casantos at datacom.ind.br>
> Cc: Carlos Santos <casantos at datacom.ind.br>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> ---
> boot/uboot/uboot.mk | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
> index a2274ee..50d7045 100644
> --- a/boot/uboot/uboot.mk
> +++ b/boot/uboot/uboot.mk
> @@ -64,15 +64,18 @@ UBOOT_BIN = u-boot.sb
> UBOOT_MAKE_TARGET = $(UBOOT_BIN)
> # mxsimage needs OpenSSL
> UBOOT_DEPENDENCIES += host-elftosb host-openssl
> +UBOOT_NEEDS_OPENSSL = y

What about "UBOOT_NEEDS_HOST_OPENSSL", instead?

> else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y)
> # BootStream (.sb) is generated by U-Boot, we convert it to SD format
> UBOOT_BIN = u-boot.sd
> UBOOT_MAKE_TARGET = u-boot.sb
> UBOOT_DEPENDENCIES += host-elftosb host-openssl
> +UBOOT_NEEDS_OPENSSL = y
> else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y)
> UBOOT_BIN = u-boot.nand
> UBOOT_MAKE_TARGET = u-boot.sb
> UBOOT_DEPENDENCIES += host-elftosb host-openssl
> +UBOOT_NEEDS_OPENSSL = y
> else ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y)
> UBOOT_BIN = $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME))
> else
> @@ -92,9 +95,18 @@ endif
> 
> UBOOT_MAKE_OPTS += \
> CROSS_COMPILE="$(TARGET_CROSS)" \
> -	ARCH=$(UBOOT_ARCH) \
> +	ARCH=$(UBOOT_ARCH)

I'd still pass HOSTCC="$(HOSTCC)" here, too, to prevent future problems. It is detected as just "gcc" by U-Boot 2012.10 and as "cc" by U-Boot 2015.01.

> +
> +# Passing HOST_CFLAGS and HOST_LDFLAGS is only needed when we have
> +# host-openssl as a dependency. We could pass them unconditionally,
> +# but this causes build issues with old U-Boot versions. We assume
> +# that old U-Boot versions didn't had support for generating images
> +# that required OpenSSL.
> +ifeq ($(UBOOT_NEEDS_OPENSSL),y)
> +UBOOT_MAKE_OPTS += \
> 	HOSTCFLAGS="$(HOST_CFLAGS)" \
> 	HOSTLDFLAGS="$(HOST_LDFLAGS)"
> +endif
> 
> ifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC),y)
> UBOOT_DEPENDENCIES += host-dtc
> --
> 2.7.4

Carlos Santos (Casantos)
DATACOM, P&D



More information about the buildroot mailing list