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