Without defining HOSTCC Makefile.host was defaulting to the operating
system cc. In the minimal docker image (focal) - cc is not available.
BUILD u-boot (target)
TOOLCHAIN make (auto-detect)
make[1]: Entering directory
HOSTCC scripts/basic/fixdep
/bin/sh: 1: cc: not found
make[2]: *** [scripts/Makefile.host:95: scripts/basic/fixdep] Error 127
make[1]: *** [Makefile:488: scripts_basic] Error 2
make[1]: Leaving directory
FAILURE: scripts/build u-boot:target during make_target (package.mk)
*********** FAILED COMMAND ***********
DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm make $(${ROOT}/${SCRIPTS}/uboot_helper ${PROJECT} ${DEVICE} ${UBOOT_SYSTEM} config)
*********** FAILED COMMAND ***********
With these changes configure_target no longer complains about no-prefix
on cross compiling. On an aarch64 build host the target_ compile fails
when the build host gcc is used with the -m32 option. On an x86_64 build
host, the host gcc compiles grub (-m32 and assembly) successfully.
before:
checking for i386-pc-linux-gcc... no
checking for i386-pc-linux-egcs... no
checking for i386-pc-linux-cc... no
checking for gcc... gcc
configure: WARNING: using cross tools not prefixed with host triplet
checking for i386-pc-linux-objcopy... no
checking for objcopy... objcopy
checking for i386-pc-linux-strip... no
checking for strip... strip
checking for i386-pc-linux-nm... no
checking for nm... nm
checking for i386-pc-linux-ranlib... no
checking for ranlib... ranlib
checking which extra warnings work...
checking if compiling with clang... yes
checking for options to compile assembly... configure: error: could not compile assembly
after:
checking for i386-pc-linux-gcc... /build/build.LibreELEC-Generic.x86_64-11.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-gcc
checking for i386-pc-linux-objcopy... /build/build.LibreELEC-Generic.x86_64-11.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-objcopy
checking for i386-pc-linux-strip... /build/build.LibreELEC-Generic.x86_64-11.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-strip
checking for i386-pc-linux-nm... /build/build.LibreELEC-Generic.x86_64-11.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-nm
checking for i386-pc-linux-ranlib... /build/build.LibreELEC-Generic.x86_64-11.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-ranlib