summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Roth <martin@coreboot.org>2018-09-13 04:06:39 -0600
committerPhilipp Deppenwiese <zaolin.daisuki@gmail.com>2018-09-16 13:10:17 +0000
commitf2c3d8076e6ed0d8f1e2bc83d61f1930ec9d1e18 (patch)
tree5157f22949a10253e741f617933089668fc84028
parentd91b5cf5c94c35a23ace9938c5b406e408de8632 (diff)
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>
-rw-r--r--payloads/Makefile.inc1
-rw-r--r--payloads/external/Makefile.inc12
-rw-r--r--payloads/external/Yabits/Kconfig47
-rw-r--r--payloads/external/Yabits/Kconfig.name11
-rw-r--r--payloads/external/Yabits/Makefile69
5 files changed, 140 insertions, 0 deletions
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