opensbi.mk 2.8 KB

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