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

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Sat Jul 2 09:25:43 UTC 2016


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
 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)
+
+# 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



More information about the buildroot mailing list