diff --git a/payloads/external/LinuxBoot/Kconfig b/payloads/external/LinuxBoot/Kconfig index 24bfe3f112..454b7c5f09 100644 --- a/payloads/external/LinuxBoot/Kconfig +++ b/payloads/external/LinuxBoot/Kconfig @@ -66,12 +66,23 @@ config LINUXBOOT_KERNEL_PATH if LINUXBOOT_COMPILE_KERNEL config LINUXBOOT_CROSS_COMPILE + bool "cross compiler" + default n if LINUXBOOT_X86_64 # currently coreboots cross toolchain cannot build Linux + default y + help + Enable this option if you want to compile Linux using a cross compiler. + The coreboot toolchain also counts as a cross toolchain. + +config LINUXBOOT_CROSS_COMPILE_PATH string "cross compiler" + depends on LINUXBOOT_CROSS_COMPILE default "" # e.g. "aarch64-linux-gnu-" help Choose a custom cross compiler toolchain to use. - It can be useful if you don't want to use the coreboot toolchain - or experience problems using it. + The cross toolchain of coreboot will be used if this option is left empty. + If not left empty, it should contain a path to a cross toolchain that is + capable of compiling Linux. It can be useful if you don't want to use the + coreboot toolchain or experience problems using it for building Linux. config LINUXBOOT_KERNEL_VERSION string "kernel version" diff --git a/payloads/external/LinuxBoot/targets/linux.mk b/payloads/external/LinuxBoot/targets/linux.mk index 1a882f143c..5cd3c540e0 100644 --- a/payloads/external/LinuxBoot/targets/linux.mk +++ b/payloads/external/LinuxBoot/targets/linux.mk @@ -2,9 +2,9 @@ SHELL := /bin/sh -OBJCOPY:=$(CONFIG_LINUXBOOT_CROSS_COMPILE)objcopy +OBJCOPY:=$(CONFIG_LINUXBOOT_CROSS_COMPILE_PATH)objcopy KERNEL_MAKE_FLAGS = \ - CROSS_COMPILE=$(CONFIG_LINUXBOOT_CROSS_COMPILE) \ + CROSS_COMPILE=$(CONFIG_LINUXBOOT_CROSS_COMPILE_PATH) \ ARCH=$(LINUX_ARCH-y) \ KBUILD_BUILD_USER="coreboot" \ KBUILD_BUILD_HOST="reproducible" \ diff --git a/payloads/external/Makefile.mk b/payloads/external/Makefile.mk index 53693f5917..52fc07d5a3 100644 --- a/payloads/external/Makefile.mk +++ b/payloads/external/Makefile.mk @@ -390,9 +390,14 @@ LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_ARM) = arm LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_ARM64) = arm64 LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_RISCV_RV32) = riscv LINUXBOOT_CROSS_COMPILE_ARCH-$(CONFIG_LINUXBOOT_RISCV_RV64) = riscv -ifeq ($(CONFIG_LINUXBOOT_CROSS_COMPILE),"") - CONFIG_LINUXBOOT_CROSS_COMPILE=$(CROSS_COMPILE_$(LINUXBOOT_CROSS_COMPILE_ARCH-y)) -endif +ifeq ($(CONFIG_LINUXBOOT_CROSS_COMPILE),y) +ifeq ($(CONFIG_LINUXBOOT_CROSS_COMPILE_PATH),"") + # use coreboots cross toolchain + CONFIG_LINUXBOOT_CROSS_COMPILE_PATH=$(CROSS_COMPILE_$(LINUXBOOT_CROSS_COMPILE_ARCH-y)) +endif # CONFIG_LINUXBOOT_CROSS_COMPILE_PATH +else # CONFIG_LINUXBOOT_CROSS_COMPILE + $(warning "Using host toolchain to build Linuxboot") +endif # CONFIG_LINUXBOOT_CROSS_COMPILE .PHONY: linuxboot payloads/external/LinuxBoot/build/Image linuxboot: $(MAKE) -C payloads/external/LinuxBoot \ @@ -403,7 +408,7 @@ payloads/external/LinuxBoot/build/Image linuxboot: CONFIG_LINUXBOOT_ARM64=$(CONFIG_LINUXBOOT_ARM64) \ CONFIG_LINUXBOOT_RISCV_RV32=$(CONFIG_LINUXBOOT_RISCV_RV32) \ CONFIG_LINUXBOOT_RISCV_RV64=$(CONFIG_LINUXBOOT_RISCV_RV64) \ - CONFIG_LINUXBOOT_CROSS_COMPILE=$(CONFIG_LINUXBOOT_CROSS_COMPILE) \ + CONFIG_LINUXBOOT_CROSS_COMPILE_PATH=$(CONFIG_LINUXBOOT_CROSS_COMPILE_PATH) \ CONFIG_LINUXBOOT_BUILD_INITRAMFS=$(CONFIG_LINUXBOOT_BUILD_INITRAMFS) \ CONFIG_LINUXBOOT_INITRAMFS_PATH=$(CONFIG_LINUXBOOT_INITRAMFS_PATH) \ CONFIG_LINUXBOOT_INITRAMFS_SUFFIX=$(CONFIG_LINUXBOOT_INITRAMFS_SUFFIX) \