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