summaryrefslogtreecommitdiff
path: root/payloads/external/LinuxBoot/targets/linux.mk
blob: 01da40cc11442996a9ab818cd67ffb301059ed5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
## SPDX-License-Identifier: GPL-2.0-only

SHELL := /bin/sh

OBJCOPY:=$(CONFIG_LINUXBOOT_CROSS_COMPILE)objcopy
KERNEL_MAKE_FLAGS = \
	CROSS_COMPILE=$(CONFIG_LINUXBOOT_CROSS_COMPILE) \
	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 4 -C $(kernel_dir) $(KERNEL_MAKE_FLAGS) vmlinux"
	$(MAKE) -j 4 -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