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