ti-k3-r5-loader.mk 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. ################################################################################
  2. #
  3. # ti-k3-r5-loader
  4. #
  5. ################################################################################
  6. TI_K3_R5_LOADER_VERSION = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_VERSION))
  7. ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL),y)
  8. # Handle custom U-Boot tarballs as specified by the configuration
  9. TI_K3_R5_LOADER_TARBALL = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL_LOCATION))
  10. TI_K3_R5_LOADER_SITE = $(patsubst %/,%,$(dir $(TI_K3_R5_LOADER_TARBALL)))
  11. TI_K3_R5_LOADER_SOURCE = $(notdir $(TI_K3_R5_LOADER_TARBALL))
  12. else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT),y)
  13. TI_K3_R5_LOADER_SITE = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_URL))
  14. TI_K3_R5_LOADER_SITE_METHOD = git
  15. else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG),y)
  16. TI_K3_R5_LOADER_SITE = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_URL))
  17. TI_K3_R5_LOADER_SITE_METHOD = hg
  18. else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN),y)
  19. TI_K3_R5_LOADER_SITE = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_URL))
  20. TI_K3_R5_LOADER_SITE_METHOD = svn
  21. else
  22. # Handle stable official U-Boot versions
  23. TI_K3_R5_LOADER_SITE = https://ftp.denx.de/pub/u-boot
  24. TI_K3_R5_LOADER_SOURCE = u-boot-$(TI_K3_R5_LOADER_VERSION).tar.bz2
  25. endif
  26. ifeq ($(BR2_TARGET_TI_K3_R5_LOADER)$(BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION),y)
  27. BR_NO_CHECK_HASH_FOR += $(TI_K3_R5_LOADER_SOURCE)
  28. endif
  29. TI_K3_R5_LOADER_LICENSE = GPL-2.0+
  30. TI_K3_R5_LOADER_LICENSE_FILES = Licenses/gpl-2.0.txt
  31. TI_K3_R5_LOADER_CPE_ID_VENDOR = denx
  32. TI_K3_R5_LOADER_CPE_ID_PRODUCT = u-boot
  33. TI_K3_R5_LOADER_INSTALL_IMAGES = YES
  34. # https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/binman/binman.rst?plain=1#L377
  35. # https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/buildman/requirements.txt
  36. # Make sure that all binman requirements are built before ti-k3-r5-loader.
  37. TI_K3_R5_LOADER_DEPENDENCIES = \
  38. host-pkgconf \
  39. $(BR2_MAKE_HOST_DEPENDENCY) \
  40. host-arm-gnu-toolchain \
  41. host-openssl \
  42. host-python3 \
  43. host-python-jsonschema \
  44. host-python-pyelftools \
  45. host-python-pylibfdt \
  46. host-python-pyyaml \
  47. host-python-setuptools \
  48. host-python-yamllint \
  49. ti-k3-boot-firmware
  50. TI_K3_R5_LOADER_MAKE = $(BR2_MAKE)
  51. TI_K3_R5_LOADER_MAKE_ENV = $(TARGET_MAKE_ENV)
  52. TI_K3_R5_LOADER_KCONFIG_DEPENDENCIES = \
  53. host-arm-gnu-toolchain \
  54. $(BR2_MAKE_HOST_DEPENDENCY) \
  55. $(BR2_BISON_HOST_DEPENDENCY) \
  56. $(BR2_FLEX_HOST_DEPENDENCY)
  57. ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG),y)
  58. TI_K3_R5_LOADER_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG))_defconfig
  59. else ifeq ($(BR2_TARGET_TI_K3_R5_LOADER_USE_CUSTOM_CONFIG),y)
  60. TI_K3_R5_LOADER_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_CONFIG_FILE))
  61. endif # BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG
  62. TI_K3_R5_LOADER_MAKE_OPTS = \
  63. CROSS_COMPILE=$(HOST_DIR)/bin/arm-none-eabi- \
  64. ARCH=arm \
  65. HOSTCC="$(HOSTCC) $(subst -I/,-isystem /,$(subst -I /,-isystem /,$(HOST_CFLAGS)))" \
  66. HOSTLDFLAGS="$(HOST_LDFLAGS)" \
  67. BINMAN_INDIRS=$(BINARIES_DIR)
  68. TI_K3_R5_LOADER_TIBOOT3_BIN = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN))
  69. define TI_K3_R5_LOADER_INSTALL_TIBOOT3_BIN
  70. cp $(@D)/$(TI_K3_R5_LOADER_TIBOOT3_BIN) $(BINARIES_DIR)/tiboot3.bin
  71. endef
  72. TI_K3_R5_LOADER_SYSFW_ITB = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_SYSFW_ITB))
  73. # sysfw*.itb are only generated for Split binary based Boot Flow (eg: am65, j721e).
  74. # So, if sysfw.itb symlink exist we must copy it or the custom sysfw.itb.
  75. define TI_K3_R5_LOADER_INSTALL_SWSFW_ITB
  76. if test -e $(@D)/sysfw.itb ; then \
  77. cp $(@D)/$(TI_K3_R5_LOADER_SYSFW_ITB) $(BINARIES_DIR)/sysfw.itb ; \
  78. fi
  79. endef
  80. TI_K3_R5_LOADER_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_DTS_PATH))
  81. define TI_K3_R5_LOADER_BUILD_CMDS
  82. $(if $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH),
  83. cp -f $(TI_K3_R5_LOADER_CUSTOM_DTS_PATH) $(@D)/arch/arm/dts/
  84. )
  85. $(TARGET_CONFIGURE_OPTS) $(TI_K3_R5_LOADER_MAKE) -C $(@D) $(TI_K3_R5_LOADER_MAKE_OPTS)
  86. endef
  87. define TI_K3_R5_LOADER_INSTALL_IMAGES_CMDS
  88. cp $(@D)/spl/u-boot-spl.bin $(BINARIES_DIR)/r5-u-boot-spl.bin
  89. $(TI_K3_R5_LOADER_INSTALL_TIBOOT3_BIN)
  90. $(TI_K3_R5_LOADER_INSTALL_SWSFW_ITB)
  91. endef
  92. # Checks to give errors that the user can understand
  93. # Must be before we call to kconfig-package
  94. ifeq ($(BR2_TARGET_TI_K3_R5_LOADER)$(BR_BUILDING),yy)
  95. ifeq ($(TI_K3_R5_LOADER_TIBOOT3_BIN),)
  96. $(error No custom tiboot3 name specified, check your BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN setting)
  97. endif
  98. ifeq ($(TI_K3_R5_LOADER_SYSFW_ITB),)
  99. $(error No custom sysfw name specified, check your BR2_TARGET_TI_K3_R5_LOADER_SYSFW_ITB setting)
  100. endif
  101. endif # BR_BUILDING
  102. $(eval $(kconfig-package))