xref: /OK3568_Linux_fs/buildroot/boot/opensbi/opensbi.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1################################################################################
2#
3# opensbi
4#
5################################################################################
6
7OPENSBI_VERSION = $(call qstrip,$(BR2_TARGET_OPENSBI_VERSION))
8
9ifeq ($(OPENSBI_VERSION),custom)
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
36OPENSBI_PLAT = $(call qstrip,$(BR2_TARGET_OPENSBI_PLAT))
37ifneq ($(OPENSBI_PLAT),)
38OPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT)
39endif
40
41ifeq ($(BR2_TARGET_OPENSBI_LINUX_PAYLOAD),y)
42OPENSBI_DEPENDENCIES += linux
43OPENSBI_MAKE_ENV += FW_PAYLOAD_PATH="$(BINARIES_DIR)/Image"
44endif
45
46ifeq ($(BR2_TARGET_OPENSBI_UBOOT_PAYLOAD),y)
47OPENSBI_DEPENDENCIES += uboot
48OPENSBI_MAKE_ENV += FW_PAYLOAD_PATH="$(BINARIES_DIR)/u-boot.bin"
49ifeq ($(BR2_TARGET_OPENSBI_FW_FDT_PATH),y)
50OPENSBI_MAKE_ENV += FW_FDT_PATH="$(BINARIES_DIR)/u-boot.dtb"
51endif
52endif
53
54define OPENSBI_BUILD_CMDS
55	$(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D)
56endef
57
58ifeq ($(BR2_TARGET_OPENSBI_INSTALL_DYNAMIC_IMG),y)
59OPENSBI_INSTALL_IMAGES = YES
60OPENSBI_FW_IMAGES += dynamic
61endif
62
63ifeq ($(BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG),y)
64OPENSBI_INSTALL_IMAGES = YES
65OPENSBI_FW_IMAGES += jump
66endif
67
68ifeq ($(BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG),y)
69OPENSBI_INSTALL_IMAGES = YES
70OPENSBI_FW_IMAGES += payload
71endif
72
73define OPENSBI_INSTALL_IMAGES_CMDS
74	$(foreach f,$(OPENSBI_FW_IMAGES),\
75		$(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).bin \
76			$(BINARIES_DIR)/fw_$(f).bin
77		$(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).elf \
78			$(BINARIES_DIR)/fw_$(f).elf
79	)
80endef
81
82# libsbi.a is not a library meant to be linked in user-space code, but
83# with bare metal code, which is why we don't install it in
84# $(STAGING_DIR)/usr/lib
85define OPENSBI_INSTALL_STAGING_CMDS
86	$(INSTALL) -m 0644 -D $(@D)/build/lib/libsbi.a $(STAGING_DIR)/usr/share/opensbi/libsbi.a
87endef
88
89$(eval $(generic-package))
90