binman: Support cross-compiling test files to x86
These test files are currently "intended for use on x86 hosts", but most of the tests using them can still pass when cross-compiled to x86 on an arm64 host. This patch enables non-x86 hosts to run the tests by specifying a cross-compiler via CROSS_COMPILE. The list of variables it sets is taken from the top-level Makefile. It would be possible to automatically set an x86 cross-compiler with a few blocks like: ifneq ($(shell i386-linux-gnu-gcc --version 2> /dev/null),) CROSS_COMPILE = i386-linux-gnu- endif But it wouldn't propagate to the binman process calling this Makefile, so it's better just raise an error and expect 'binman test' to be run with a correct CROSS_COMPILE. Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
36da81e0c1
commit
5ac7687827
1 changed files with 14 additions and 1 deletions
|
@ -7,6 +7,19 @@
|
|||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
HOSTARCH := $(shell uname -m | sed -e s/i.86/x86/ )
|
||||
ifeq ($(findstring $(HOSTARCH),"x86" "x86_64"),)
|
||||
ifeq ($(findstring $(MAKECMDGOALS),"help" "clean"),)
|
||||
ifndef CROSS_COMPILE
|
||||
$(error Binman tests need to compile to x86, but the CPU arch of your \
|
||||
machine is $(HOSTARCH). Set CROSS_COMPILE to a suitable cross compiler)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
CC = $(CROSS_COMPILE)gcc
|
||||
OBJCOPY = $(CROSS_COMPILE)objcopy
|
||||
|
||||
VPATH := $(SRC)
|
||||
CFLAGS := -march=i386 -m32 -nostdlib -I $(SRC)../../../include \
|
||||
-Wl,--no-dynamic-linker
|
||||
|
@ -32,7 +45,7 @@ bss_data: CFLAGS += $(SRC)bss_data.lds
|
|||
bss_data: bss_data.c
|
||||
|
||||
u_boot_binman_syms.bin: u_boot_binman_syms
|
||||
objcopy -O binary $< -R .note.gnu.build-id $@
|
||||
$(OBJCOPY) -O binary $< -R .note.gnu.build-id $@
|
||||
|
||||
u_boot_binman_syms: CFLAGS += $(LDS_BINMAN)
|
||||
u_boot_binman_syms: u_boot_binman_syms.c
|
||||
|
|
Loading…
Reference in a new issue