aboutsummaryrefslogtreecommitdiff
path: root/payloads/external/LinuxBoot/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'payloads/external/LinuxBoot/Makefile')
-rw-r--r--payloads/external/LinuxBoot/Makefile63
1 files changed, 63 insertions, 0 deletions
diff --git a/payloads/external/LinuxBoot/Makefile b/payloads/external/LinuxBoot/Makefile
new file mode 100644
index 0000000000..10ad0c3391
--- /dev/null
+++ b/payloads/external/LinuxBoot/Makefile
@@ -0,0 +1,63 @@
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2017 Facebook Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; version 2 of the License.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+
+kernel_tarball=https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-$(CONFIG_LINUXBOOT_KERNEL_VERSION).tar.xz
+project_dir=linuxboot
+kernel_dir=$(project_dir)/kernel
+
+unexport $(COREBOOT_EXPORTS)
+
+all: payload
+
+$(kernel_dir)/.config:
+ echo " WWW Download Linux $(CONFIG_LINUXBOOT_KERNEL_VERSION)"
+ mkdir -p $(kernel_dir)
+ifeq ("$(wildcard $(kernel_dir)/README)","")
+ wget -qO- $(kernel_tarball) | tar xJ -C $(kernel_dir) --strip 1
+endif
+
+config: $(kernel_dir)/.config
+ echo " CONFIG Linux $(CONFIG_LINUXBOOT_KERNEL_VERSION)"
+ifneq ($(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE),)
+ cp $(CONFIG_LINUXBOOT_KERNEL_CONFIGFILE) $(kernel_dir)/.config
+endif
+ifeq ($(CONFIG_LINUXBOOT_ARCH),386)
+ cp x86/defconfig $(kernel_dir)/.config
+else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64)
+ cp x86_64/defconfig $(kernel_dir)/.config
+endif
+
+$(project_dir)/kernel-image: config
+ echo " MAKE Kernel $(CONFIG_LINUXBOOT_KERNEL_VERSION)"
+ $(MAKE) -C $(kernel_dir) olddefconfig
+ $(MAKE) -C $(kernel_dir) -j $(CPUS)
+ifeq ($(CONFIG_LINUXBOOT_ARCH),386)
+ cp $(kernel_dir)/arch/x86/boot/bzImage $(project_dir)/kernel-image
+else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64)
+ cp $(kernel_dir)/arch/x86/boot/bzImage $(project_dir)/kernel-image
+endif
+
+payload: $(project_dir)/kernel-image
+ifeq ($(CONFIG_LINUXBOOT_UROOT),y)
+ $(MAKE) -f targets/u-root.mk
+endif
+
+clean:
+ if [ -d "$(kernel_dir)" ]; then make -C $(kernel_dir) clean; fi
+ rm -f $(project_dir)/initramfs.cpio.xz
+
+distclean:
+ rm -rf $(project_dir)
+
+.PHONY: config patch payload clean distclean clone fetch all