From f2c3d8076e6ed0d8f1e2bc83d61f1930ec9d1e18 Mon Sep 17 00:00:00 2001 From: Martin Roth Date: Thu, 13 Sep 2018 04:06:39 -0600 Subject: payloads/external: Add yabits payload Yabits (Yet another UEFI bootloader) is designed to be a slim and quick alternative to Tianocore. It is still under heavy development. https://web.archive.org/web/https://yabits.github.io/ Change-Id: I132970e952c605c73cfe33dc47f20170ae8aa899 Signed-off-by: Martin Roth Reviewed-on: https://review.coreboot.org/28590 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi Reviewed-by: Marc Jones --- payloads/Makefile.inc | 1 + payloads/external/Makefile.inc | 12 ++++++ payloads/external/Yabits/Kconfig | 47 ++++++++++++++++++++++++ payloads/external/Yabits/Kconfig.name | 11 ++++++ payloads/external/Yabits/Makefile | 69 +++++++++++++++++++++++++++++++++++ 5 files changed, 140 insertions(+) create mode 100644 payloads/external/Yabits/Kconfig create mode 100644 payloads/external/Yabits/Kconfig.name create mode 100644 payloads/external/Yabits/Makefile (limited to 'payloads') diff --git a/payloads/Makefile.inc b/payloads/Makefile.inc index 0d142d6f4d..83d3910ce0 100644 --- a/payloads/Makefile.inc +++ b/payloads/Makefile.inc @@ -36,6 +36,7 @@ payloads/external/tint \ payloads/external/tianocore \ payloads/external/GRUB2 \ payloads/external/LinuxBoot \ +payloads/external/Yabits \ payloads/coreinfo/build/coreinfo.elf coreinfo: $(MAKE) -C payloads/coreinfo defaultbuild diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc index e4d6d4f3a2..c730bbace3 100644 --- a/payloads/external/Makefile.inc +++ b/payloads/external/Makefile.inc @@ -283,3 +283,15 @@ payloads/external/LinuxBoot/linuxboot/kernel-image: linuxboot payloads/external/LinuxBoot/linuxboot/initramfs.cpio.xz: linuxboot payloads/external/LinuxBoot/linuxboot/kernel/.config: linuxboot payloads/external/LinuxBoot/linuxboot/go/src/github.com/u-root/u-root/.git: linuxboot + +payloads/external/Yabits/uefi/build/uefi.elf yabits: + $(MAKE) -C payloads/external/Yabits all \ + CC="$(CC_x86_32)" \ + LD="$(LD_x86_32)" \ + OBJCOPY="$(OBJCOPY_x86_32)" \ + AS="$(AS_x86_32)" \ + CONFIG_YABITS_REVISION=$(CONFIG_YABITS_REVISION) \ + CONFIG_YABITS_REVISION_ID=$(CONFIG_YABITS_REVISION_ID) \ + CONFIG_YABITS_MASTER=$(CONFIG_YABITS_MASTER) \ + CONFIG_YABITS_STABLE=$(CONFIG_YABITS_STABLE) \ + MFLAGS= MAKEFLAGS= diff --git a/payloads/external/Yabits/Kconfig b/payloads/external/Yabits/Kconfig new file mode 100644 index 0000000000..cd1ade8df6 --- /dev/null +++ b/payloads/external/Yabits/Kconfig @@ -0,0 +1,47 @@ +if PAYLOAD_YABITS + +choice + prompt "Yabits version" + default YABITS_STABLE + +config YABITS_STABLE + bool "Stable" + help + Stable Yabits version. + + For reproducible builds, this option must be selected. + +config YABITS_MASTER + bool "Master" + help + Newest version. + + This option will fetch the newest version of the Yabits code, + updating as new changes are committed. This makes the build + non-reproducible, as it can fetch different code each time. + +config YABITS_REVISION + bool "git revision" + help + Select this option if you have a specific commit or branch + that you want to use as the revision from which to + build Yabits. Using a branch name makes the build + non-reproducible, as it can fetch different code as the + branch changes. + + You will be able to specify the name of a branch or a commit id + later. + +endchoice + +config YABITS_REVISION_ID + string "Insert a commit's SHA-1 or a branch name" + depends on YABITS_REVISION + default "origin/master" + help + The commit's SHA-1 or branch name of the revision to use. + +config PAYLOAD_FILE + default "payloads/external/Yabits/uefi/build/uefi.elf" + +endif diff --git a/payloads/external/Yabits/Kconfig.name b/payloads/external/Yabits/Kconfig.name new file mode 100644 index 0000000000..84f860f296 --- /dev/null +++ b/payloads/external/Yabits/Kconfig.name @@ -0,0 +1,11 @@ +config PAYLOAD_YABITS + bool "Yabits - Yet another UEFI Bootloader (Under Development)" + depends on ARCH_X86 + help + Yabits - yabits.github.io + yabits is a pure UEFI coreboot payload. Compared with + TianoCore, it is fast and lightweight. yabits is based on the + part of Minoca OS. It can run GRUB2, Linux, OpenBSD, and other + UEFI applications. + + It is still under the development and not ready for production. diff --git a/payloads/external/Yabits/Makefile b/payloads/external/Yabits/Makefile new file mode 100644 index 0000000000..ec3c9c5767 --- /dev/null +++ b/payloads/external/Yabits/Makefile @@ -0,0 +1,69 @@ +## +## This file is part of the coreboot project. +## +## Copyright (C) 2016 Google 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. +## + +TAG-$(CONFIG_YABITS_MASTER)=origin/master +NAME-$(CONFIG_YABITS_MASTER)=Master +TAG-$(CONFIG_YABITS_STABLE)=d25abb067431dee9af9f8a874a209730ab7f0e91 +NAME-$(CONFIG_YABITS_STABLE)=Stable +TAG-$(CONFIG_YABITS_REVISION)=$(CONFIG_YABITS_REVISION_ID) + +project_name=Yabits +project_dir=$(CURDIR)/uefi +project_git_repo=https://github.com/yabits/uefi.git +LIBCONFIG_PATH="../../../libpayload" + +all: build + +$(project_dir): + echo " Cloning $(project_name) from Git" + git clone $(project_git_repo) $(project_dir) + +fetch: $(project_dir) +ifeq ($(TAG-y),) + echo "Error: The specified tag is invalid" +ifeq ($(CONFIG_YABITS_REVISION),y) + echo "Error: There is no revision specified for $(project_name)" + false +endif + false +endif + -cd $(project_dir); git show $(TAG-y) >/dev/null 2>&1 ; \ + if [ $$? -ne 0 ] || [ "$(TAG-y)" = "origin/master" ]; then \ + echo " Fetching new commits from the $(project_name) git repo"; \ + git fetch; fi + +checkout: fetch + echo " Checking out $(project_name) revision $(NAME-y) ($(TAG-y))" + cd $(project_dir); \ + git checkout master; \ + git branch -D coreboot 2>/dev/null; \ + git checkout -b coreboot $(TAG-y) + +build: checkout + echo " MAKE $(project_name) $(NAME-y)" + $(if $(wildcard uefi/.xcompile),,$(shell bash ../../../util/xcompile/xcompile > uefi/.xcompile)) + $(MAKE) -C $(project_dir) defconfig LIBCONFIG_PATH=$(LIBCONFIG_PATH) XGCC=$(XGCCPATH) + $(MAKE) -C $(project_dir) all LIBCONFIG_PATH=$(LIBCONFIG_PATH) XGCC=$(XGCCPATH) + +clean: + test -d $(project_dir) && $(MAKE) -C $(project_dir) clean LIBCONFIG_PATH=$(LIBCONFIG_PATH) XGCC=$(XGCCPATH) || exit 0 + +distclean: + rm -rf $(project_dir) + +print-repo-info: + echo "$(project_git_repo) $(project_dir)" + +.PHONY: all build checkout clean distclean fetch print-repo-info -- cgit v1.2.3