boot/opensbi: add support for version configuration

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@bootlin.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Thomas Petazzoni 2021-04-29 09:46:32 +02:00 committed by Peter Korsgaard
parent bad244ea45
commit 5c7166d387
2 changed files with 69 additions and 1 deletions

View File

@ -13,6 +13,57 @@ config BR2_TARGET_OPENSBI
https://github.com/riscv/opensbi.git https://github.com/riscv/opensbi.git
if BR2_TARGET_OPENSBI 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 config BR2_TARGET_OPENSBI_PLAT
string "OpenSBI Platform" string "OpenSBI Platform"
default "" default ""

View File

@ -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)) OPENSBI_SITE = $(call github,riscv,opensbi,v$(OPENSBI_VERSION))
endif
OPENSBI_LICENSE = BSD-2-Clause OPENSBI_LICENSE = BSD-2-Clause
OPENSBI_LICENSE_FILES = COPYING.BSD OPENSBI_LICENSE_FILES = COPYING.BSD
OPENSBI_INSTALL_TARGET = NO OPENSBI_INSTALL_TARGET = NO
OPENSBI_INSTALL_STAGING = YES 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 = \ OPENSBI_MAKE_ENV = \
CROSS_COMPILE=$(TARGET_CROSS) CROSS_COMPILE=$(TARGET_CROSS)