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