uboot: ensure host includes are searched before system default includes

Commit baae5156ce (uboot: use local fdt headers) changed the uboot logic
to pass the host include directories with -idirafter instead of -I, so
include files local to u-boot would be preferred over host includes.

This unfortunately breaks configurations using
BR2_TARGET_UBOOT_NEEDS_OPENSSL on hosts with incompatible openssl headers
installed in the system default include directories as explained here:

http://lists.busybox.net/pipermail/buildroot/2018-March/214651.html

The problem is that -idirafter directories gets added to the very end of the
search order, AFTER the system default directories.

Instead use -isystem which causes the directories to be added after -I but
before the system default directories.  With this in place, the include
directories of u-boot will first be scanned, followed by the host includes
and finally the system default include directories.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Peter Korsgaard 2018-03-01 21:54:29 +01:00
parent 3538b5fb10
commit 0bf80e4bcd

View File

@ -131,7 +131,7 @@ endif
UBOOT_MAKE_OPTS += \ UBOOT_MAKE_OPTS += \
CROSS_COMPILE="$(TARGET_CROSS)" \ CROSS_COMPILE="$(TARGET_CROSS)" \
ARCH=$(UBOOT_ARCH) \ ARCH=$(UBOOT_ARCH) \
HOSTCC="$(HOSTCC) $(subst -I/,-idirafter /,$(subst -I /,-idirafter /,$(HOST_CFLAGS)))" \ HOSTCC="$(HOSTCC) $(subst -I/,-isystem /,$(subst -I /,-isystem /,$(HOST_CFLAGS)))" \
HOSTLDFLAGS="$(HOST_LDFLAGS)" HOSTLDFLAGS="$(HOST_LDFLAGS)"
ifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31),y) ifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31),y)