diff options
author | Patrick Rudolph <patrick.rudolph@9elements.com> | 2018-03-13 11:22:26 +0100 |
---|---|---|
committer | Philipp Deppenwiese <zaolin.daisuki@gmail.com> | 2018-07-19 13:54:24 +0000 |
commit | 02c08147645d37e8d21f89b62cb7029be7543bd6 (patch) | |
tree | 98dc70e780a4a1a01145d58c254ce16d7471e276 /payloads/external/LinuxBoot/Makefile | |
parent | 4e2f95b789d8f3b505f52c42b634401dd5f718a2 (diff) |
payloads/LinuxBoot: Add ARM64 support
Add support for ARCH=ARM64 and introduce CROSS_COMPILE for all architectures.
* Always compress kernel Image using xz
* Create FIT uImage containing the kernel, initramfs and DTB
* Add ARM64 defconfig for all SoCs
Change-Id: I9a0cc248283432fb2384956ca55e687d4127398c
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/25152
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Diffstat (limited to 'payloads/external/LinuxBoot/Makefile')
-rw-r--r-- | payloads/external/LinuxBoot/Makefile | 63 |
1 files changed, 54 insertions, 9 deletions
diff --git a/payloads/external/LinuxBoot/Makefile b/payloads/external/LinuxBoot/Makefile index 10ad0c3391..651e9827b8 100644 --- a/payloads/external/LinuxBoot/Makefile +++ b/payloads/external/LinuxBoot/Makefile @@ -17,9 +17,30 @@ project_dir=linuxboot kernel_dir=$(project_dir)/kernel unexport $(COREBOOT_EXPORTS) +unexport MAKEFLAGS + +XGCCPATH?=$(PWD)/util/crossgcc/xgcc/bin +ifeq ($(CONFIG_LINUXBOOT_ARCH),386) +CROSS_COMPILE?=$(XGCCPATH)/i386-linux- +ARCH?=x86 +else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64) +CROSS_COMPILE?=$(XGCCPATH)/x86_64-linux- +ARCH?=x86_64 +else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) +CROSS_COMPILE?=$(XGCCPATH)/aarch64-linux- +ARCH?=arm64 +endif + +OBJCOPY:=$(CROSS_COMPILE)objcopy all: payload +toolchain: + if [[ ! -x "$(CROSS_COMPILE)gcc" ]]; then \ + echo "Toolchain '$(CROSS_COMPILE)*' is missing."; \ + exit 1; \ + fi + $(kernel_dir)/.config: echo " WWW Download Linux $(CONFIG_LINUXBOOT_KERNEL_VERSION)" mkdir -p $(kernel_dir) @@ -36,23 +57,47 @@ ifeq ($(CONFIG_LINUXBOOT_ARCH),386) cp x86/defconfig $(kernel_dir)/.config else ifeq ($(CONFIG_LINUXBOOT_ARCH),amd64) cp x86_64/defconfig $(kernel_dir)/.config +else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) + cp arm64/defconfig $(kernel_dir)/.config endif -$(project_dir)/kernel-image: config +ifneq (,$(filter $(CONFIG_LINUXBOOT_ARCH),386 amd64)) +$(kernel_dir)/arch/x86/boot/bzImage: config toolchain +else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) +$(kernel_dir)/vmlinux: config toolchain +endif 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 + $(MAKE) -C $(kernel_dir) olddefconfig CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH) + $(MAKE) -C $(kernel_dir) -j $(CPUS) CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH) + +ifneq (,$(filter $(CONFIG_LINUXBOOT_ARCH),386 amd64)) +$(project_dir)/kernel-image: $(kernel_dir)/arch/x86/boot/bzImage + cp $< $@ +else ifeq ($(CONFIG_LINUXBOOT_ARCH),arm64) +$(project_dir)/vmlinux.bin: $(kernel_dir)/vmlinux + $(OBJCOPY) -O binary $< $@ + +$(project_dir)/target.dtb: $(CONFIG_LINUXBOOT_DTB_FILE) + cp $< $@ + +$(project_dir)/vmlinux.bin.lzma: $(project_dir)/vmlinux.bin + xz -c -k -f --format=lzma --lzma1=dict=1MiB,lc=3,lp=0,pb=3 $< > $@ + +$(project_dir)/kernel-image: $(project_dir)/vmlinux.bin.lzma $(project_dir)/../arm64/kernel_fdt_lzma.its $(project_dir)/target.dtb $(project_dir)/initramfs.cpio.xz + cp $(project_dir)/../arm64/kernel_fdt_lzma.its $(project_dir) + mkimage -f $(project_dir)/kernel_fdt_lzma.its $@ endif -payload: $(project_dir)/kernel-image ifeq ($(CONFIG_LINUXBOOT_UROOT),y) +$(project_dir)/initramfs.cpio.xz: $(MAKE) -f targets/u-root.mk +else +$(project_dir)/initramfs.cpio.xz: + echo "Building without u-root support" endif +payload: $(project_dir)/kernel-image $(project_dir)/initramfs.cpio.xz + clean: if [ -d "$(kernel_dir)" ]; then make -C $(kernel_dir) clean; fi rm -f $(project_dir)/initramfs.cpio.xz @@ -60,4 +105,4 @@ clean: distclean: rm -rf $(project_dir) -.PHONY: config patch payload clean distclean clone fetch all +.PHONY: config patch payload clean distclean clone fetch all toolchain |