uboot-tools.mk 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. ################################################################################
  2. #
  3. # uboot-tools
  4. #
  5. ################################################################################
  6. UBOOT_TOOLS_VERSION = 2021.07
  7. UBOOT_TOOLS_SOURCE = u-boot-$(UBOOT_TOOLS_VERSION).tar.bz2
  8. UBOOT_TOOLS_SITE = ftp://ftp.denx.de/pub/u-boot
  9. UBOOT_TOOLS_LICENSE = GPL-2.0+
  10. UBOOT_TOOLS_LICENSE_FILES = Licenses/gpl-2.0.txt
  11. UBOOT_TOOLS_CPE_ID_VENDOR = denx
  12. UBOOT_TOOLS_CPE_ID_PRODUCT = u-boot
  13. UBOOT_TOOLS_INSTALL_STAGING = YES
  14. # u-boot 2020.01+ needs make 4.0+
  15. UBOOT_TOOLS_DEPENDENCIES = $(BR2_MAKE_HOST_DEPENDENCY)
  16. HOST_UBOOT_TOOLS_DEPENDENCIES = $(BR2_MAKE_HOST_DEPENDENCY)
  17. define UBOOT_TOOLS_CONFIGURE_CMDS
  18. mkdir -p $(@D)/include/config
  19. touch $(@D)/include/config/auto.conf
  20. mkdir -p $(@D)/include/generated
  21. touch $(@D)/include/generated/autoconf.h
  22. mkdir -p $(@D)/include/asm
  23. touch $(@D)/include/asm/linkage.h
  24. endef
  25. UBOOT_TOOLS_MAKE_OPTS = CROSS_COMPILE="$(TARGET_CROSS)" \
  26. CFLAGS="$(TARGET_CFLAGS)" \
  27. LDFLAGS="$(TARGET_LDFLAGS)" \
  28. HOSTCFLAGS="$(HOST_CFLAGS)" \
  29. STRIP=$(TARGET_STRIP)
  30. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT),y)
  31. UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc
  32. UBOOT_TOOLS_DEPENDENCIES += dtc
  33. endif
  34. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y)
  35. UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000
  36. UBOOT_TOOLS_DEPENDENCIES += openssl host-pkgconf
  37. endif
  38. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKEFICAPSULE),y)
  39. UBOOT_TOOLS_MAKE_OPTS += CONFIG_EFI_HAVE_CAPSULE_SUPPORT=y
  40. endif
  41. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_CHECK_SIGN),y)
  42. define UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN
  43. $(INSTALL) -m 0755 -D $(@D)/tools/fit_check_sign $(TARGET_DIR)/usr/bin/fit_check_sign
  44. endef
  45. endif
  46. define UBOOT_TOOLS_BUILD_CMDS
  47. $(TARGET_MAKE_ENV) $(BR2_MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \
  48. CROSS_BUILD_TOOLS=y tools-only
  49. $(TARGET_MAKE_ENV) $(BR2_MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \
  50. envtools no-dot-config-targets=envtools
  51. endef
  52. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE),y)
  53. define UBOOT_TOOLS_INSTALL_MKIMAGE
  54. $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(TARGET_DIR)/usr/bin/mkimage
  55. endef
  56. endif
  57. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKEFICAPSULE),y)
  58. define UBOOT_TOOLS_INSTALL_MKEFICAPSULE
  59. $(INSTALL) -m 0755 -D $(@D)/tools/mkeficapsule $(TARGET_DIR)/usr/bin/mkeficapsule
  60. endef
  61. endif
  62. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE),y)
  63. define UBOOT_TOOLS_INSTALL_MKENVIMAGE
  64. $(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(TARGET_DIR)/usr/bin/mkenvimage
  65. endef
  66. endif
  67. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV),y)
  68. define UBOOT_TOOLS_INSTALL_FWPRINTENV
  69. $(INSTALL) -m 0755 -D $(@D)/tools/env/fw_printenv $(TARGET_DIR)/usr/sbin/fw_printenv
  70. ln -sf fw_printenv $(TARGET_DIR)/usr/sbin/fw_setenv
  71. endef
  72. endif
  73. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE),y)
  74. define UBOOT_TOOLS_INSTALL_DUMPIMAGE
  75. $(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(TARGET_DIR)/usr/sbin/dumpimage
  76. endef
  77. endif
  78. define UBOOT_TOOLS_INSTALL_STAGING_CMDS
  79. $(INSTALL) -D -m 0755 $(@D)/tools/env/lib.a $(STAGING_DIR)/usr/lib/libubootenv.a
  80. $(INSTALL) -D -m 0644 $(@D)/tools/env/fw_env.h $(STAGING_DIR)/usr/include/fw_env.h
  81. endef
  82. define UBOOT_TOOLS_INSTALL_TARGET_CMDS
  83. $(UBOOT_TOOLS_INSTALL_MKIMAGE)
  84. $(UBOOT_TOOLS_INSTALL_MKEFICAPSULE)
  85. $(UBOOT_TOOLS_INSTALL_MKENVIMAGE)
  86. $(UBOOT_TOOLS_INSTALL_FWPRINTENV)
  87. $(UBOOT_TOOLS_INSTALL_DUMPIMAGE)
  88. $(UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN)
  89. endef
  90. # host-uboot-tools
  91. define HOST_UBOOT_TOOLS_CONFIGURE_CMDS
  92. mkdir -p $(@D)/include/config
  93. touch $(@D)/include/config/auto.conf
  94. mkdir -p $(@D)/include/generated
  95. touch $(@D)/include/generated/autoconf.h
  96. mkdir -p $(@D)/include/asm
  97. touch $(@D)/include/asm/linkage.h
  98. endef
  99. HOST_UBOOT_TOOLS_MAKE_OPTS = HOSTCC="$(HOSTCC)" \
  100. HOSTCFLAGS="$(HOST_CFLAGS)" \
  101. HOSTLDFLAGS="$(HOST_LDFLAGS)" \
  102. CONFIG_EFI_HAVE_CAPSULE_SUPPORT=y
  103. ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT),y)
  104. HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc
  105. HOST_UBOOT_TOOLS_DEPENDENCIES += host-dtc
  106. endif
  107. ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y)
  108. HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000
  109. HOST_UBOOT_TOOLS_DEPENDENCIES += host-openssl
  110. endif
  111. ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE),y)
  112. UBOOT_TOOLS_GENERATE_ENV_FILE = $(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE))
  113. # If BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE is left empty, we
  114. # will use the default environment provided in the U-Boot build
  115. # directory as boot-env-defaults.txt, which requires having uboot as a
  116. # dependency.
  117. # If BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE is not empty, is
  118. # might be referring to a file within the U-Boot source tree, so we
  119. # also need to have uboot as a dependency.
  120. ifeq ($(BR2_TARGET_UBOOT),y)
  121. HOST_UBOOT_TOOLS_DEPENDENCIES += uboot
  122. # Handle the case where BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE
  123. # is left empty, use the default U-Boot environment.
  124. ifeq ($(UBOOT_TOOLS_GENERATE_ENV_FILE),)
  125. UBOOT_TOOLS_GENERATE_ENV_FILE = $(@D)/boot-env-defaults.txt
  126. define HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS
  127. CROSS_COMPILE="$(TARGET_CROSS)" \
  128. $(UBOOT_SRCDIR)/scripts/get_default_envs.sh \
  129. $(UBOOT_SRCDIR) \
  130. > $(UBOOT_TOOLS_GENERATE_ENV_FILE)
  131. endef
  132. endif # UBOOT_TOOLS_GENERATE_ENV_FILE
  133. endif # BR2_TARGET_UBOOT
  134. ifeq ($(BR_BUILDING),y)
  135. ifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE)),)
  136. $(error Please provide U-Boot environment size (BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE setting))
  137. endif
  138. # If U-Boot is not available, ENVIMAGE_SOURCE must be provided by user,
  139. # otherwise it is optional because the default can be taken from U-Boot
  140. ifeq ($(BR2_TARGET_UBOOT),)
  141. ifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE)),)
  142. $(error Please provide U-Boot environment file (BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE setting))
  143. endif
  144. endif #BR2_TARGET_UBOOT
  145. endif #BR_BUILDING
  146. define HOST_UBOOT_TOOLS_GENERATE_ENVIMAGE
  147. $(HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS)
  148. cat $(UBOOT_TOOLS_GENERATE_ENV_FILE) | \
  149. $(@D)/tools/mkenvimage -s $(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE) \
  150. $(if $(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_REDUNDANT),-r) \
  151. $(if $(filter "BIG",$(BR2_ENDIAN)),-b) \
  152. -o $(@D)/tools/uboot-env.bin \
  153. -
  154. endef
  155. define HOST_UBOOT_TOOLS_INSTALL_ENVIMAGE
  156. $(INSTALL) -m 0755 -D $(@D)/tools/uboot-env.bin $(BINARIES_DIR)/uboot-env.bin
  157. endef
  158. endif #BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE
  159. ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT),y)
  160. ifeq ($(BR_BUILDING),y)
  161. ifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE)),)
  162. $(error Please define a source file for U-Boot boot script (BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE setting))
  163. endif
  164. endif #BR_BUILDING
  165. define HOST_UBOOT_TOOLS_GENERATE_BOOT_SCRIPT
  166. $(@D)/tools/mkimage -C none -A $(MKIMAGE_ARCH) -T script \
  167. -d $(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE)) \
  168. $(@D)/tools/boot.scr
  169. endef
  170. define HOST_UBOOT_TOOLS_INSTALL_BOOT_SCRIPT
  171. $(INSTALL) -m 0755 -D $(@D)/tools/boot.scr $(BINARIES_DIR)/boot.scr
  172. endef
  173. endif #BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT
  174. define HOST_UBOOT_TOOLS_BUILD_CMDS
  175. $(BR2_MAKE1) -C $(@D) $(HOST_UBOOT_TOOLS_MAKE_OPTS) tools-only
  176. $(HOST_UBOOT_TOOLS_GENERATE_ENVIMAGE)
  177. $(HOST_UBOOT_TOOLS_GENERATE_BOOT_SCRIPT)
  178. endef
  179. define HOST_UBOOT_TOOLS_INSTALL_CMDS
  180. $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(HOST_DIR)/bin/mkimage
  181. $(INSTALL) -m 0755 -D $(@D)/tools/mkeficapsule $(HOST_DIR)/bin/mkeficapsule
  182. $(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(HOST_DIR)/bin/mkenvimage
  183. $(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(HOST_DIR)/bin/dumpimage
  184. $(HOST_UBOOT_TOOLS_INSTALL_ENVIMAGE)
  185. $(HOST_UBOOT_TOOLS_INSTALL_BOOT_SCRIPT)
  186. endef
  187. $(eval $(generic-package))
  188. $(eval $(host-generic-package))
  189. # Convenience variables for other mk files that make use of mkimage
  190. MKIMAGE = $(HOST_DIR)/bin/mkimage
  191. # mkimage supports alpha arc arm arm64 blackfin ia64 invalid m68k microblaze mips mips64 nds32 nios2 or1k powerpc riscv s390 sandbox sh sparc sparc64 x86 x86_64 xtensa
  192. # NORMALIZED_ARCH can be arm64 arc arm blackfin m68k microblaze mips nios2 powerpc sh sparc i386 x86_64 xtensa
  193. # For i386, we need to convert
  194. # For openrisc, we need to convert
  195. # For others, we'll just keep NORMALIZED_ARCH
  196. ifeq ($(NORMALIZED_ARCH),i386)
  197. MKIMAGE_ARCH = x86
  198. else ifeq ($(NORMALIZED_ARCH),openrisc)
  199. MKIMAGE_ARCH = or1k
  200. else
  201. MKIMAGE_ARCH = $(NORMALIZED_ARCH)
  202. endif