xref: /aosp_15_r20/external/coreboot/payloads/external/LinuxBoot/targets/linux.mk (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
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