1################################################################################ 2# 3# opensbi 4# 5################################################################################ 6 7OPENSBI_VERSION = $(call qstrip,$(BR2_TARGET_OPENSBI_VERSION)) 8 9ifeq ($(BR2_TARGET_OPENSBI_CUSTOM_TARBALL),y) 10# Handle custom OpenSBI tarballs as specified by the configuration 11OPENSBI_TARBALL = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION)) 12OPENSBI_SITE = $(patsubst %/,%,$(dir $(OPENSBI_TARBALL))) 13OPENSBI_SOURCE = $(notdir $(OPENSBI_TARBALL)) 14else ifeq ($(BR2_TARGET_OPENSBI_CUSTOM_GIT),y) 15OPENSBI_SITE = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_REPO_URL)) 16OPENSBI_SITE_METHOD = git 17else 18# Handle official OpenSBI versions 19OPENSBI_SITE = $(call github,riscv,opensbi,v$(OPENSBI_VERSION)) 20endif 21 22OPENSBI_LICENSE = BSD-2-Clause 23ifeq ($(BR2_TARGET_OPENSBI_LATEST_VERSION),y) 24OPENSBI_LICENSE_FILES = COPYING.BSD 25endif 26OPENSBI_INSTALL_TARGET = NO 27OPENSBI_INSTALL_STAGING = YES 28 29ifeq ($(BR2_TARGET_OPENSBI)$(BR2_TARGET_OPENSBI_LATEST_VERSION),y) 30BR_NO_CHECK_HASH_FOR += $(OPENSBI_SOURCE) 31endif 32 33OPENSBI_MAKE_ENV = \ 34 CROSS_COMPILE=$(TARGET_CROSS) \ 35 $(call qstrip,$(BR2_TARGET_OPENSBI_ADDITIONAL_VARIABLES)) 36 37OPENSBI_PLAT = $(call qstrip,$(BR2_TARGET_OPENSBI_PLAT)) 38ifneq ($(OPENSBI_PLAT),) 39OPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT) 40endif 41 42ifeq ($(BR2_TARGET_OPENSBI_LINUX_PAYLOAD),y) 43OPENSBI_DEPENDENCIES += linux 44OPENSBI_MAKE_ENV += FW_PAYLOAD_PATH="$(BINARIES_DIR)/Image" 45endif 46 47ifeq ($(BR2_TARGET_OPENSBI_UBOOT_PAYLOAD),y) 48OPENSBI_DEPENDENCIES += uboot 49OPENSBI_MAKE_ENV += FW_PAYLOAD_PATH="$(BINARIES_DIR)/u-boot.bin" 50ifeq ($(BR2_TARGET_OPENSBI_FW_FDT_PATH),y) 51OPENSBI_MAKE_ENV += FW_FDT_PATH="$(BINARIES_DIR)/u-boot.dtb" 52endif 53endif 54 55define OPENSBI_BUILD_CMDS 56 $(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D) 57endef 58 59ifeq ($(BR2_TARGET_OPENSBI_INSTALL_DYNAMIC_IMG),y) 60OPENSBI_INSTALL_IMAGES = YES 61OPENSBI_FW_IMAGES += dynamic 62endif 63 64ifeq ($(BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG),y) 65OPENSBI_INSTALL_IMAGES = YES 66OPENSBI_FW_IMAGES += jump 67endif 68 69ifeq ($(BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG),y) 70OPENSBI_INSTALL_IMAGES = YES 71OPENSBI_FW_IMAGES += payload 72endif 73 74ifneq ($(OPENSBI_PLAT),) 75define OPENSBI_INSTALL_IMAGES_CMDS 76 $(foreach f,$(OPENSBI_FW_IMAGES),\ 77 $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).bin \ 78 $(BINARIES_DIR)/fw_$(f).bin 79 $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).elf \ 80 $(BINARIES_DIR)/fw_$(f).elf 81 ) 82endef 83endif 84 85# libsbi.a is not a library meant to be linked in user-space code, but 86# with bare metal code, which is why we don't install it in 87# $(STAGING_DIR)/usr/lib 88define OPENSBI_INSTALL_STAGING_CMDS 89 $(INSTALL) -m 0644 -D $(@D)/build/lib/libsbi.a $(STAGING_DIR)/usr/share/opensbi/libsbi.a 90endef 91 92$(eval $(generic-package)) 93