[Buildroot] [git commit] boot/opensbi: add support for version configuration

Peter Korsgaard peter at korsgaard.com
Fri Apr 30 07:46:21 UTC 2021


commit: https://git.buildroot.net/buildroot/commit/?id=5c7166d387bbae63456f9820e0fd0658c503f07b
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

OpenSBI contains platform-specific code, so very much like Linux,
U-Boot or other bootloaders, using the upstream version of OpenSBI
will very often not be sufficient.

This commit therefore adds the possibility of specifying a custom
version of OpenSBI, either custom from upstream, custom tarball, or
custom from Git. Support for other version control systems has not
been implemented for now, but could be added later if needed.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
Signed-off-by: Peter Korsgaard <peter at korsgaard.com>
---
 boot/opensbi/Config.in  | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
 boot/opensbi/opensbi.mk | 19 +++++++++++++++++-
 2 files changed, 69 insertions(+), 1 deletion(-)

diff --git a/boot/opensbi/Config.in b/boot/opensbi/Config.in
index b9b0ace8af..83f40f04fa 100644
--- a/boot/opensbi/Config.in
+++ b/boot/opensbi/Config.in
@@ -13,6 +13,57 @@ config BR2_TARGET_OPENSBI
 	  https://github.com/riscv/opensbi.git
 
 if BR2_TARGET_OPENSBI
+choice
+	prompt "OpenSBI Version"
+	help
+	  Select the specific OpenSBI version you want to use
+
+config BR2_TARGET_OPENSBI_LATEST_VERSION
+	bool "0.8"
+
+config BR2_TARGET_OPENSBI_CUSTOM_VERSION
+	bool "Custom version"
+	help
+	  This option allows to use a specific official versions
+
+config BR2_TARGET_OPENSBI_CUSTOM_TARBALL
+	bool "Custom tarball"
+
+config BR2_TARGET_OPENSBI_CUSTOM_GIT
+	bool "Custom Git repository"
+
+endchoice
+
+config BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE
+	string "OpenSBI version"
+	depends on BR2_TARGET_OPENSBI_CUSTOM_VERSION
+
+config BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION
+	string "URL of custom OpenSBI tarball"
+	depends on BR2_TARGET_OPENSBI_CUSTOM_TARBALL
+
+if BR2_TARGET_OPENSBI_CUSTOM_GIT
+
+config BR2_TARGET_OPENSBI_CUSTOM_REPO_URL
+	string "URL of custom repository"
+
+config BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION
+	string "Custom repository version"
+	help
+	  Revision to use in the typical format used by Git. E.G. a
+	  sha id, a tag, branch, ..
+
+endif
+
+config BR2_TARGET_OPENSBI_VERSION
+	string
+	default "0.8"	if BR2_TARGET_OPENSBI_LATEST_VERSION
+	default BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE \
+		if BR2_TARGET_OPENSBI_CUSTOM_VERSION
+	default "custom"	if BR2_TARGET_OPENSBI_CUSTOM_TARBALL
+	default BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION \
+		if BR2_TARGET_OPENSBI_CUSTOM_GIT
+
 config BR2_TARGET_OPENSBI_PLAT
 	string "OpenSBI Platform"
 	default ""
diff --git a/boot/opensbi/opensbi.mk b/boot/opensbi/opensbi.mk
index 60b87c268d..250a6078af 100644
--- a/boot/opensbi/opensbi.mk
+++ b/boot/opensbi/opensbi.mk
@@ -4,13 +4,30 @@
 #
 ################################################################################
 
-OPENSBI_VERSION = 0.8
+OPENSBI_VERSION = $(call qstrip,$(BR2_TARGET_OPENSBI_VERSION))
+
+ifeq ($(OPENSBI_VERSION),custom)
+# Handle custom OpenSBI tarballs as specified by the configuration
+OPENSBI_TARBALL = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION))
+OPENSBI_SITE = $(patsubst %/,%,$(dir $(OPENSBI_TARBALL)))
+OPENSBI_SOURCE = $(notdir $(OPENSBI_TARBALL))
+else ifeq ($(BR2_TARGET_OPENSBI_CUSTOM_GIT),y)
+OPENSBI_SITE = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_REPO_URL))
+OPENSBI_SITE_METHOD = git
+else
+# Handle official OpenSBI versions
 OPENSBI_SITE = $(call github,riscv,opensbi,v$(OPENSBI_VERSION))
+endif
+
 OPENSBI_LICENSE = BSD-2-Clause
 OPENSBI_LICENSE_FILES = COPYING.BSD
 OPENSBI_INSTALL_TARGET = NO
 OPENSBI_INSTALL_STAGING = YES
 
+ifeq ($(BR2_TARGET_OPENSBI)$(BR2_TARGET_OPENSBI_LATEST_VERSION),y)
+BR_NO_CHECK_HASH_FOR += $(OPENSBI_SOURCE)
+endif
+
 OPENSBI_MAKE_ENV = \
 	CROSS_COMPILE=$(TARGET_CROSS)
 


More information about the buildroot mailing list