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 <martin@coreboot.org>
Reviewed-on: https://review.coreboot.org/28590
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-by: Marc Jones <marc@marcjonesconsulting.com>
This commit is contained in:
Martin Roth 2018-09-13 04:06:39 -06:00 committed by Philipp Deppenwiese
parent d91b5cf5c9
commit f2c3d8076e
5 changed files with 140 additions and 0 deletions

View File

@ -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

View File

@ -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=

47
payloads/external/Yabits/Kconfig vendored Normal file
View File

@ -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

11
payloads/external/Yabits/Kconfig.name vendored Normal file
View File

@ -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.

69
payloads/external/Yabits/Makefile vendored Normal file
View File

@ -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