[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