xref: /OK3568_Linux_fs/buildroot/package/uboot-tools/uboot-tools.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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