ti-k3-r5-loader.mk 4.8 KB

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