uboot-envtools build error in openwrt-21.02.

Ronny Kotzschmar ro.ok at me.com
Fri Feb 19 16:46:07 EST 2021


Hi,

maybe I can add some information here. In u-boot-2021.01 they have added some new variables e.g. KBUILD_HOSTLDFLAGS, KBUILD_HOSTCFLAGS...

In <...>/build_dir/target-mips_24kc_musl/u-boot-2021.01/Makefile you can find this:

...
HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
            sed -e 's/\(cygwin\).*/cygwin/')
...
#
ifeq ($(HOSTOS),darwin)
# get major and minor product version (e.g. '10' and '6' for Snow Leopard)
DARWIN_MAJOR_VERSION    = $(shell sw_vers -productVersion | cut -f 1 -d '.')
DARWIN_MINOR_VERSION    = $(shell sw_vers -productVersion | cut -f 2 -d '.')

os_x_before     = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \
        $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;)

os_x_after = $(shell if [ $(DARWIN_MAJOR_VERSION) -ge $(1) -a \
        $(DARWIN_MINOR_VERSION) -ge $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;)

# Snow Leopards build environment has no longer restrictions as described above
HOSTCC       = $(call os_x_before, 10, 5, "cc", "gcc")
KBUILD_HOSTCFLAGS  += $(call os_x_before, 10, 4, "-traditional-cpp")
KBUILD_HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")

# since Lion (10.7) ASLR is on by default, but we use linker generated lists
# in some host tools which is a problem then ... so disable ASLR for these
# tools
KBUILD_HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie")

# macOS Mojave (10.14.X) 
# Undefined symbols for architecture x86_64: "_PyArg_ParseTuple"
KBUILD_HOSTLDFLAGS += $(call os_x_after, 10, 14, "-lpython -dynamclib", „“…
endif
...

So on macOS as the build system the macOS specific linker flag "-no_pie“ is added which is wrong for the target linker. I think this results in the observed error.

My solution is this:

diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile
index a9eccec0ce..0eb557bb06 100644
--- a/package/boot/uboot-envtools/Makefile
+++ b/package/boot/uboot-envtools/Makefile
@@ -53,6 +53,7 @@ define Build/Configure
 endef
 
 MAKE_FLAGS += \
+       HOSTOS="linux" \
        TARGET_CFLAGS="$(TARGET_CFLAGS)" \
        TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \
        no-dot-config-targets=envtools \


This overwrites the HOSTOS variable and the right flags will be used.

Ronny





More information about the openwrt-devel mailing list