From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carlos Santos Date: Sun, 3 Jul 2016 13:30:15 -0300 (BRT) Subject: [Buildroot] [PATCH] uboot: fix build with old U-Boot versions In-Reply-To: <1467451543-28926-1-git-send-email-thomas.petazzoni@free-electrons.com> References: <1467451543-28926-1-git-send-email-thomas.petazzoni@free-electrons.com> Message-ID: <301880781.7742692.1467563415744.JavaMail.zimbra@datacom.ind.br> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net > From: "Thomas Petazzoni" > To: buildroot at uclibc.org > Cc: "Thomas Petazzoni" , "Carlos Santos" > 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 > Cc: Carlos Santos > Signed-off-by: Thomas Petazzoni > --- > 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