mirror of
https://github.com/Dasharo/coreboot.git
synced 2026-03-06 14:43:26 -08:00
Currently our coreboot toolchain cannot build the Linux kernel in case of x86_64. It spits out the following error during build: ``` make -C build/kernel-6_3 \ CROSS_COMPILE=/home/max/coreboot-amd/util/crossgcc/xgcc/bin/x86_64-elf- \ ARCH=x86_64 KBUILD_BUILD_USER=coreboot KBUILD_BUILD_HOST=reproducible \ KBUILD_BUILD_TIMESTAMP=Tue Aug 20 13:36:03 2024 KBUILD_BUILD_VERSION=0 bzImage arch/x86/lib/clear_page_64.S: Assembler messages: arch/x86/lib/clear_page_64.S:18: Error: number of operands mismatch for `mov' arch/x86/lib/clear_page_64.S:27: Error: number of operands mismatch for `mov' make[4]: *** [scripts/Makefile.build:374: arch/x86/lib/clear_page_64.o] Error 1 make[3]: *** [scripts/Makefile.build:494: arch/x86/lib] Error 2 make[3]: *** Waiting for unfinished jobs.... arch/x86/entry/entry_64.S: Assembler messages: arch/x86/entry/entry_64.S:437: Error: unbalanced parenthesis in operand 1. arch/x86/entry/entry_64.S:262: Info: macro invoked from here arch/x86/entry/entry_64.S:265: Info: macro invoked from here arch/x86/entry/entry_64.S:439: Error: unbalanced parenthesis in operand 1. arch/x86/entry/entry_64.S:262: Info: macro invoked from here arch/x86/entry/entry_64.S:265: Info: macro invoked from here make[5]: *** [scripts/Makefile.build:374: arch/x86/entry/entry_64.o] Error 1 make[4]: *** [scripts/Makefile.build:494: arch/x86/entry] Error 2 make[4]: *** Waiting for unfinished jobs.... make[3]: *** [scripts/Makefile.build:494: arch/x86] Error 2 make[2]: *** [Makefile:2025: .] Error 2 make[1]: *** [targets/linux.mk:60: build/kernel-6_3/arch/x86/boot/bzImage] Error 2 make: *** [payloads/external/Makefile.mk:401: payloads/external/LinuxBoot/build/Image] Error 2 ``` In order to fix it, we will default to the host toolchain in order to build x86_64 Linux. For that we add another Kconfig that decides, whether or not a cross toolchain is used to build Linux. Change-Id: Icaf56d6991d79f629e9ba8c901b441d81921d594 Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83990 Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Frans Hendriks <fhendriks@eltan.com>
63 lines
2.4 KiB
Makefile
63 lines
2.4 KiB
Makefile
## SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
SHELL := /bin/sh
|
|
|
|
OBJCOPY:=$(CONFIG_LINUXBOOT_CROSS_COMPILE_PATH)objcopy
|
|
KERNEL_MAKE_FLAGS = \
|
|
CROSS_COMPILE=$(CONFIG_LINUXBOOT_CROSS_COMPILE_PATH) \
|
|
ARCH=$(LINUX_ARCH-y) \
|
|
KBUILD_BUILD_USER="coreboot" \
|
|
KBUILD_BUILD_HOST="reproducible" \
|
|
KBUILD_BUILD_TIMESTAMP="$(shell perl -e 'print scalar gmtime($(SOURCE_DATE_EPOCH))')" \
|
|
KBUILD_BUILD_VERSION="0"
|
|
|
|
kernel_version = $(CONFIG_LINUXBOOT_KERNEL_VERSION)
|
|
kernel_dir = build/kernel-$(subst .,_,$(kernel_version))
|
|
kernel_tarball = linux-$(kernel_version).tar
|
|
kernel_mirror = https://mirrors.edge.kernel.org/pub/linux/kernel
|
|
|
|
ifeq ($(findstring x2.6.,x$(kernel_version)),x2.6.)
|
|
kernel_mirror_path := $(kernel_mirror)/v2.6
|
|
else ifeq ($(findstring x3.,x$(kernel_version)),x3.)
|
|
kernel_mirror_path := $(kernel_mirror)/v3.x
|
|
else ifeq ($(findstring x4.,x$(kernel_version)),x4.)
|
|
kernel_mirror_path := $(kernel_mirror)/v4.x
|
|
else ifeq ($(findstring x5.,x$(kernel_version)),x5.)
|
|
kernel_mirror_path := $(kernel_mirror)/v5.x
|
|
else ifeq ($(findstring x6.,x$(kernel_version)),x6.)
|
|
kernel_mirror_path := $(kernel_mirror)/v6.x
|
|
endif
|
|
|
|
build/$(kernel_tarball).xz: | build
|
|
echo " Test $(kernel_version)"
|
|
echo " WWW $(kernel_mirror_path)/$(kernel_tarball).xz";
|
|
curl -OLSs --output-dir build "$(kernel_mirror_path)/$(kernel_tarball).xz";
|
|
|
|
$(kernel_dir): build/$(kernel_tarball).xz
|
|
echo " XZ $(kernel_tarball).xz";
|
|
mkdir $(kernel_dir);
|
|
tar xJf build/$(kernel_tarball).xz --strip 1 -C $(kernel_dir);
|
|
|
|
$(kernel_dir)/.config: $(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) | $(kernel_dir)
|
|
@echo " CONFIG Linux $(kernel_version)"
|
|
cp $(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) $(kernel_dir)/.config
|
|
$(MAKE) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) olddefconfig
|
|
|
|
$(kernel_dir)/vmlinux : $(kernel_dir)/.config | $(kernel_dir)
|
|
@echo " MAKE Linux $(kernel_version)"
|
|
echo "$(MAKE) -j $(CPUS) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) vmlinux"
|
|
$(MAKE) -j $(CPUS) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) vmlinux
|
|
|
|
build/vmlinux.bin: $(kernel_dir)/vmlinux | build
|
|
$(OBJCOPY) -O binary $< $@
|
|
|
|
build/vmlinux.bin.lzma: build/vmlinux.bin
|
|
xz -c -k -f --format=lzma --lzma1=dict=1MiB,lc=3,lp=0,pb=3 $< > $@
|
|
|
|
$(kernel_dir)/arch/x86/boot/bzImage: $(kernel_dir)/.config
|
|
@echo " MAKE Linux $(kernel_version)"
|
|
echo "$(MAKE) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) bzImage"
|
|
$(MAKE) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) bzImage
|
|
|
|
.PHONY: kernel
|