1## SPDX-License-Identifier: GPL-2.0-only 2 3SHELL := /bin/sh 4 5OBJCOPY:=$(CONFIG_LINUXBOOT_CROSS_COMPILE)objcopy 6KERNEL_MAKE_FLAGS = \ 7 CROSS_COMPILE=$(CONFIG_LINUXBOOT_CROSS_COMPILE) \ 8 ARCH=$(LINUX_ARCH-y) \ 9 KBUILD_BUILD_USER="coreboot" \ 10 KBUILD_BUILD_HOST="reproducible" \ 11 KBUILD_BUILD_TIMESTAMP="$(shell perl -e 'print scalar gmtime($(SOURCE_DATE_EPOCH))')" \ 12 KBUILD_BUILD_VERSION="0" 13 14kernel_version = $(CONFIG_LINUXBOOT_KERNEL_VERSION) 15kernel_dir = build/kernel-$(subst .,_,$(kernel_version)) 16kernel_tarball = linux-$(kernel_version).tar 17kernel_mirror = https://mirrors.edge.kernel.org/pub/linux/kernel 18 19ifeq ($(findstring x2.6.,x$(kernel_version)),x2.6.) 20kernel_mirror_path := $(kernel_mirror)/v2.6 21else ifeq ($(findstring x3.,x$(kernel_version)),x3.) 22kernel_mirror_path := $(kernel_mirror)/v3.x 23else ifeq ($(findstring x4.,x$(kernel_version)),x4.) 24kernel_mirror_path := $(kernel_mirror)/v4.x 25else ifeq ($(findstring x5.,x$(kernel_version)),x5.) 26kernel_mirror_path := $(kernel_mirror)/v5.x 27else ifeq ($(findstring x6.,x$(kernel_version)),x6.) 28kernel_mirror_path := $(kernel_mirror)/v6.x 29endif 30 31build/$(kernel_tarball).xz: | build 32 echo " Test $(kernel_version)" 33 echo " WWW $(kernel_mirror_path)/$(kernel_tarball).xz"; 34 curl -OLSs --output-dir build "$(kernel_mirror_path)/$(kernel_tarball).xz"; 35 36$(kernel_dir): build/$(kernel_tarball).xz 37 echo " XZ $(kernel_tarball).xz"; 38 mkdir $(kernel_dir); 39 tar xJf build/$(kernel_tarball).xz --strip 1 -C $(kernel_dir); 40 41$(kernel_dir)/.config: $(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) | $(kernel_dir) 42 @echo " CONFIG Linux $(kernel_version)" 43 cp $(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) $(kernel_dir)/.config 44 $(MAKE) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) olddefconfig 45 46$(kernel_dir)/vmlinux : $(kernel_dir)/.config | $(kernel_dir) 47 @echo " MAKE Linux $(kernel_version)" 48 echo "$(MAKE) -j $(CPUS) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) vmlinux" 49 $(MAKE) -j $(CPUS) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) vmlinux 50 51build/vmlinux.bin: $(kernel_dir)/vmlinux | build 52 $(OBJCOPY) -O binary $< $@ 53 54build/vmlinux.bin.lzma: build/vmlinux.bin 55 xz -c -k -f --format=lzma --lzma1=dict=1MiB,lc=3,lp=0,pb=3 $< > $@ 56 57$(kernel_dir)/arch/x86/boot/bzImage: $(kernel_dir)/.config 58 @echo " MAKE Linux $(kernel_version)" 59 echo "$(MAKE) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) bzImage" 60 $(MAKE) -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) bzImage 61 62.PHONY: kernel 63