uboot-tools.mk 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. ################################################################################
  2. #
  3. # uboot-tools
  4. #
  5. ################################################################################
  6. UBOOT_TOOLS_VERSION = 2020.04
  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_INSTALL_STAGING = YES
  12. # u-boot 2020.01+ needs make 4.0+
  13. UBOOT_TOOLS_DEPENDENCIES = $(BR2_MAKE_HOST_DEPENDENCY)
  14. HOST_UBOOT_TOOLS_DEPENDENCIES = $(BR2_MAKE_HOST_DEPENDENCY)
  15. define UBOOT_TOOLS_CONFIGURE_CMDS
  16. mkdir -p $(@D)/include/config
  17. touch $(@D)/include/config/auto.conf
  18. endef
  19. UBOOT_TOOLS_MAKE_OPTS = CROSS_COMPILE="$(TARGET_CROSS)" \
  20. CFLAGS="$(TARGET_CFLAGS)" \
  21. LDFLAGS="$(TARGET_LDFLAGS)" \
  22. HOSTCFLAGS="$(HOST_CFLAGS)" \
  23. STRIP=$(TARGET_STRIP)
  24. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT),y)
  25. UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc
  26. UBOOT_TOOLS_DEPENDENCIES += dtc
  27. endif
  28. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y)
  29. UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000
  30. UBOOT_TOOLS_DEPENDENCIES += openssl host-pkgconf
  31. endif
  32. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_CHECK_SIGN),y)
  33. define UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN
  34. $(INSTALL) -m 0755 -D $(@D)/tools/fit_check_sign $(TARGET_DIR)/usr/bin/fit_check_sign
  35. endef
  36. endif
  37. define UBOOT_TOOLS_BUILD_CMDS
  38. $(TARGET_MAKE_ENV) $(BR2_MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \
  39. CROSS_BUILD_TOOLS=y tools-only
  40. $(TARGET_MAKE_ENV) $(BR2_MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \
  41. envtools no-dot-config-targets=envtools
  42. endef
  43. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE),y)
  44. define UBOOT_TOOLS_INSTALL_MKIMAGE
  45. $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(TARGET_DIR)/usr/bin/mkimage
  46. endef
  47. endif
  48. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE),y)
  49. define UBOOT_TOOLS_INSTALL_MKENVIMAGE
  50. $(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(TARGET_DIR)/usr/bin/mkenvimage
  51. endef
  52. endif
  53. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV),y)
  54. define UBOOT_TOOLS_INSTALL_FWPRINTENV
  55. $(INSTALL) -m 0755 -D $(@D)/tools/env/fw_printenv $(TARGET_DIR)/usr/sbin/fw_printenv
  56. ln -sf fw_printenv $(TARGET_DIR)/usr/sbin/fw_setenv
  57. endef
  58. endif
  59. ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE),y)
  60. define UBOOT_TOOLS_INSTALL_DUMPIMAGE
  61. $(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(TARGET_DIR)/usr/sbin/dumpimage
  62. endef
  63. endif
  64. define UBOOT_TOOLS_INSTALL_STAGING_CMDS
  65. $(INSTALL) -D -m 0755 $(@D)/tools/env/lib.a $(STAGING_DIR)/usr/lib/libubootenv.a
  66. $(INSTALL) -D -m 0644 $(@D)/tools/env/fw_env.h $(STAGING_DIR)/usr/include/fw_env.h
  67. endef
  68. define UBOOT_TOOLS_INSTALL_TARGET_CMDS
  69. $(UBOOT_TOOLS_INSTALL_MKIMAGE)
  70. $(UBOOT_TOOLS_INSTALL_MKENVIMAGE)
  71. $(UBOOT_TOOLS_INSTALL_FWPRINTENV)
  72. $(UBOOT_TOOLS_INSTALL_DUMPIMAGE)
  73. $(UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN)
  74. endef
  75. define HOST_UBOOT_TOOLS_CONFIGURE_CMDS
  76. mkdir -p $(@D)/include/config
  77. touch $(@D)/include/config/auto.conf
  78. endef
  79. HOST_UBOOT_TOOLS_MAKE_OPTS = HOSTCC="$(HOSTCC)" \
  80. HOSTCFLAGS="$(HOST_CFLAGS)" \
  81. HOSTLDFLAGS="$(HOST_LDFLAGS)"
  82. ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT),y)
  83. HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc
  84. HOST_UBOOT_TOOLS_DEPENDENCIES += host-dtc
  85. endif
  86. ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y)
  87. HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000
  88. HOST_UBOOT_TOOLS_DEPENDENCIES += host-openssl
  89. endif
  90. define HOST_UBOOT_TOOLS_BUILD_CMDS
  91. $(BR2_MAKE1) -C $(@D) $(HOST_UBOOT_TOOLS_MAKE_OPTS) tools-only
  92. endef
  93. ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE),y)
  94. UBOOT_TOOLS_GENERATE_ENV_FILE = $(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE))
  95. ifeq ($(UBOOT_TOOLS_GENERATE_ENV_FILE):$(BR2_TARGET_UBOOT),:y)
  96. UBOOT_TOOLS_GENERATE_ENV_FILE = $(@D)/boot-env-defaults.txt
  97. define HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS
  98. CROSS_COMPILE="$(TARGET_CROSS)" \
  99. $(UBOOT_SRCDIR)/scripts/get_default_envs.sh \
  100. $(UBOOT_SRCDIR) \
  101. > $(UBOOT_TOOLS_GENERATE_ENV_FILE)
  102. endef
  103. HOST_UBOOT_TOOLS_DEPENDENCIES += uboot
  104. endif
  105. define HOST_UBOOT_TOOLS_GENERATE_ENV_IMAGE
  106. $(HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS)
  107. $(HOST_DIR)/bin/mkenvimage -s $(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE) \
  108. $(if $(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_REDUNDANT),-r) \
  109. $(if $(filter "BIG",$(BR2_ENDIAN)),-b) \
  110. -o $(BINARIES_DIR)/uboot-env.bin \
  111. $(UBOOT_TOOLS_GENERATE_ENV_FILE)
  112. endef
  113. ifeq ($(BR_BUILDING),y)
  114. ifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE)),)
  115. $(error Please provide U-Boot environment size (BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE setting))
  116. endif
  117. # If U-Boot is available, ENVIMAGE_SOURCE is optional because the default can
  118. # be taken from U-Boot.
  119. ifeq ($(BR2_TARGET_UBOOT),)
  120. ifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE),)
  121. $(error Please provide U-Boot environment file BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE setting))
  122. endif
  123. endif #BR2_TARGET_UBOOT
  124. endif #BR_BUILDING
  125. endif #BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE
  126. define HOST_UBOOT_TOOLS_INSTALL_CMDS
  127. $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(HOST_DIR)/bin/mkimage
  128. $(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(HOST_DIR)/bin/mkenvimage
  129. $(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(HOST_DIR)/bin/dumpimage
  130. $(HOST_UBOOT_TOOLS_GENERATE_ENV_IMAGE)
  131. endef
  132. $(eval $(generic-package))
  133. $(eval $(host-generic-package))
  134. # Convenience variables for other mk files that make use of mkimage
  135. MKIMAGE = $(HOST_DIR)/bin/mkimage
  136. # mkimage supports arm blackfin m68k microblaze mips mips64 nios2 powerpc ppc sh sparc sparc64 x86
  137. # KERNEL_ARCH can be arm64 arc arm blackfin m68k microblaze mips nios2 powerpc sh sparc i386 x86_64 xtensa
  138. # For arm64, arc, xtensa we'll just keep KERNEL_ARCH
  139. # For mips64, we'll just keep mips
  140. # For i386 and x86_64, we need to convert
  141. ifeq ($(KERNEL_ARCH),x86_64)
  142. MKIMAGE_ARCH = x86
  143. else ifeq ($(KERNEL_ARCH),i386)
  144. MKIMAGE_ARCH = x86
  145. else
  146. MKIMAGE_ARCH = $(KERNEL_ARCH)
  147. endif