[PATCH v2 1/1] sandbox: allow cross-compiling sandbox

Sean Anderson sean.anderson at seco.com
Wed Feb 10 19:20:23 CET 2021



On 2/10/21 12:54 PM, Heinrich Schuchardt wrote:
 > UEFI test files like helloworld.efi require an architecture specific
 > PE-COFF header.
 >
 > Currently this does not work for cross compiling. If $CROSS_COMPILE 
is set,
 > use the first part of the architecture triplet from the variable to
 > choose the PE-COFF header.
 >
 > Now we can cross-compile the sandbox, e.g.
 >
 >      make sandbox_defconfig NO_SDL=1
 >      CROSS_COMPILE=/opt/bin/aarch64-linux-gnu- NO_SDL=1 
MK_ARCH=aarch64 make
 >
 > Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
 > ---
 > v2:
 > 	use $CROSS_COMPILE instead of an extra environment variable
 > ---
 >   Makefile | 10 +++++++---
 >   1 file changed, 7 insertions(+), 3 deletions(-)
 >
 > diff --git a/Makefile b/Makefile
 > index ebbedb1fb1..6c256a23b6 100644
 > --- a/Makefile
 > +++ b/Makefile
 > @@ -17,9 +17,13 @@ NAME =
 >   # o Look for make include files relative to root of kernel src
 >   MAKEFLAGS += -rR --include-dir=$(CURDIR)
 >
 > -# Determine host architecture
 > +# Determine target architecture for the sandbox
 >   include include/host_arch.h
 > -MK_ARCH="${shell uname -m}"
 > +ifeq ("", "$(CROSS_COMPILE)")
 > +  MK_ARCH="${shell uname -m}"
 > +else
 > +  MK_ARCH="${shell echo $(CROSS_COMPILE) | sed -n 
's/^\s*\([^\/]*\/\)*\([^-]*\)-\S*/\2/p'}"
 > +endif

Won't this break cross-compiling? E.g. if on my x86_64 machine I run
"CROSS_COMPILE=arm-linux-gnueabihf- make" my HOST_ARCH will be
HOST_ARCH_ARM, even though it should be HOST_ARCH_X86_64.

I think you need a separate variable for a "canadian cross." gcc uses
"build," "host," and "target," but as-is U-Boot's HOST_ARCH is gcc's
"build" arch.

--Sean

 >   unexport HOST_ARCH
 >   ifeq ("x86_64", $(MK_ARCH))
 >     export HOST_ARCH=$(HOST_ARCH_X86_64)
 > @@ -27,7 +31,7 @@ else ifneq (,$(findstring $(MK_ARCH), "i386" "i486" 
"i586" "i686"))
 >     export HOST_ARCH=$(HOST_ARCH_X86)
 >   else ifneq (,$(findstring $(MK_ARCH), "aarch64" "armv8l"))
 >     export HOST_ARCH=$(HOST_ARCH_AARCH64)
 > -else ifeq ("armv7l", $(MK_ARCH))
 > +else ifneq (,$(findstring $(MK_ARCH), "arm" "armv7" "armv7l"))
 >     export HOST_ARCH=$(HOST_ARCH_ARM)
 >   else ifeq ("riscv32", $(MK_ARCH))
 >     export HOST_ARCH=$(HOST_ARCH_RISCV32)
 > --
 > 2.30.0
 >


More information about the U-Boot mailing list