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