1 ################################################################################
5 ################################################################################
7 UBOOT_VERSION
= $(call qstrip
,$(BR2_TARGET_UBOOT_VERSION
))
8 UBOOT_BOARD_NAME
= $(call qstrip
,$(BR2_TARGET_UBOOT_BOARDNAME
))
10 UBOOT_LICENSE
= GPLv2
+
11 UBOOT_LICENSE_FILES
= Licenses
/gpl-2.0.txt
13 UBOOT_INSTALL_IMAGES
= YES
15 ifeq ($(UBOOT_VERSION
),custom
)
16 # Handle custom U-Boot tarballs as specified by the configuration
17 UBOOT_TARBALL
= $(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION
))
18 UBOOT_SITE
= $(patsubst %/,%,$(dir $(UBOOT_TARBALL
)))
19 UBOOT_SOURCE
= $(notdir $(UBOOT_TARBALL
))
20 BR_NO_CHECK_HASH_FOR
+= $(UBOOT_SOURCE
)
21 else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT
),y
)
22 UBOOT_SITE
= $(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL
))
23 UBOOT_SITE_METHOD
= git
24 else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_HG
),y
)
25 UBOOT_SITE
= $(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL
))
26 UBOOT_SITE_METHOD
= hg
27 else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_SVN
),y
)
28 UBOOT_SITE
= $(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL
))
29 UBOOT_SITE_METHOD
= svn
31 # Handle stable official U-Boot versions
32 UBOOT_SITE
= ftp
://ftp.denx.de
/pub
/u-boot
33 UBOOT_SOURCE
= u-boot-
$(UBOOT_VERSION
).
tar.bz2
34 ifeq ($(BR2_TARGET_UBOOT_CUSTOM_VERSION
),y
)
35 BR_NO_CHECK_HASH_FOR
+= $(UBOOT_SOURCE
)
39 ifeq ($(BR2_TARGET_UBOOT_FORMAT_BIN
),y
)
40 UBOOT_BINS
+= u-boot.bin
43 ifeq ($(BR2_TARGET_UBOOT_FORMAT_ELF
),y
)
45 # To make elf usable for debuging on ARC use special target
47 UBOOT_MAKE_TARGET
+= mdbtrick
51 ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB
),y
)
52 UBOOT_BINS
+= u-boot.kwb
53 UBOOT_MAKE_TARGET
+= u-boot.kwb
56 ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS
),y
)
57 UBOOT_BINS
+= u-boot.ais
58 UBOOT_MAKE_TARGET
+= u-boot.ais
61 ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR
),y
)
62 UBOOT_BINS
+= u-boot.ldr
65 ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN
),y
)
66 UBOOT_BINS
+= u-boot-nand.bin
69 ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG
),y
)
70 UBOOT_BINS
+= u-boot-dtb.img
71 UBOOT_MAKE_TARGET
+= all u-boot-dtb.img
74 ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG
),y
)
75 UBOOT_BINS
+= u-boot.img
76 UBOOT_MAKE_TARGET
+= u-boot.img
79 ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX
),y
)
80 UBOOT_BINS
+= u-boot.imx
81 UBOOT_MAKE_TARGET
+= u-boot.imx
84 ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB
),y
)
85 UBOOT_BINS
+= u-boot.sb
86 UBOOT_MAKE_TARGET
+= u-boot.sb
87 # mxsimage needs OpenSSL
88 UBOOT_DEPENDENCIES
+= host-elftosb host-openssl
91 ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD
),y
)
92 # BootStream (.sb) is generated by U-Boot, we convert it to SD format
93 UBOOT_BINS
+= u-boot.sd
94 UBOOT_MAKE_TARGET
+= u-boot.sb
95 UBOOT_DEPENDENCIES
+= host-elftosb host-openssl
98 ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND
),y
)
99 UBOOT_BINS
+= u-boot.nand
100 UBOOT_MAKE_TARGET
+= u-boot.sb
101 UBOOT_DEPENDENCIES
+= host-elftosb host-openssl
104 ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM
),y
)
105 UBOOT_BINS
+= $(call qstrip
,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME
))
108 ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT
),y
)
109 UBOOT_BINS
+= u-boot.bin
110 UBOOT_BIN_IFT
= u-boot.bin.ift
113 # The kernel calls AArch64 'arm64', but U-Boot calls it just 'arm', so
114 # we have to special case it. Similar for i386/x86_64 -> x86
115 ifeq ($(KERNEL_ARCH
),arm64
)
117 else ifneq ($(filter $(KERNEL_ARCH
),i386 x86_64
),)
120 UBOOT_ARCH
= $(KERNEL_ARCH
)
124 CROSS_COMPILE
="$(TARGET_CROSS)" \
126 HOSTCC
="$(HOSTCC) $(HOST_CFLAGS)" \
127 HOSTLDFLAGS
="$(HOST_LDFLAGS)"
129 ifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC
),y
)
130 UBOOT_DEPENDENCIES
+= host-dtc
133 # prior to u-boot 2013.10 the license info was in COPYING. Copy it so
134 # legal-info finds it
135 define UBOOT_COPY_OLD_LICENSE_FILE
136 if
[ -f
$(@D
)/COPYING
]; then \
137 $(INSTALL
) -m
0644 -D
$(@D
)/COPYING
$(@D
)/Licenses
/gpl-2.0.txt
; \
141 UBOOT_POST_EXTRACT_HOOKS
+= UBOOT_COPY_OLD_LICENSE_FILE
142 UBOOT_POST_RSYNC_HOOKS
+= UBOOT_COPY_OLD_LICENSE_FILE
144 # Analogous code exists in linux/linux.mk. Basically, the generic
145 # package infrastructure handles downloading and applying remote
146 # patches. Local patches are handled depending on whether they are
147 # directories or files.
148 UBOOT_PATCHES
= $(call qstrip
,$(BR2_TARGET_UBOOT_PATCH
))
149 UBOOT_PATCH
= $(filter ftp
://% http
://% https
://%,$(UBOOT_PATCHES
))
151 define UBOOT_APPLY_LOCAL_PATCHES
152 for p in
$(filter-out ftp
://% http
://% https
://%,$(UBOOT_PATCHES
)) ; do \
153 if
test -d
$$p ; then \
154 $(APPLY_PATCHES
) $(@D
) $$p \
*.patch || exit
1 ; \
156 $(APPLY_PATCHES
) $(@D
) `dirname $$p` `basename $$p` || exit
1; \
160 UBOOT_POST_PATCH_HOOKS
+= UBOOT_APPLY_LOCAL_PATCHES
162 ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
),y
)
163 define UBOOT_CONFIGURE_CMDS
164 $(TARGET_CONFIGURE_OPTS
) \
165 $(MAKE
) -C
$(@D
) $(UBOOT_MAKE_OPTS
) \
166 $(UBOOT_BOARD_NAME
)_config
168 else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
),y
)
169 ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG
),y
)
170 UBOOT_KCONFIG_DEFCONFIG
= $(call qstrip
,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG
))_defconfig
171 else ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
),y
)
172 UBOOT_KCONFIG_FILE
= $(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE
))
173 endif # BR2_TARGET_UBOOT_USE_DEFCONFIG
175 UBOOT_KCONFIG_EDITORS
= menuconfig xconfig gconfig nconfig
176 UBOOT_KCONFIG_OPTS
= $(UBOOT_MAKE_OPTS
)
177 endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
179 define UBOOT_BUILD_CMDS
180 $(TARGET_CONFIGURE_OPTS
) \
181 $(MAKE
) -C
$(@D
) $(UBOOT_MAKE_OPTS
) \
183 $(if
$(BR2_TARGET_UBOOT_FORMAT_SD
),
184 $(@D
)/tools
/mxsboot sd
$(@D
)/u-boot.sb
$(@D
)/u-boot.sd
)
185 $(if
$(BR2_TARGET_UBOOT_FORMAT_NAND
),
186 $(@D
)/tools
/mxsboot \
187 -w
$(BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE
) \
188 -o
$(BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE
) \
189 -e
$(BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE
) \
190 nand
$(@D
)/u-boot.sb
$(@D
)/u-boot.nand
)
193 define UBOOT_BUILD_OMAP_IFT
194 $(HOST_DIR
)/usr
/bin
/gpsign
-f
$(@D
)/u-boot.bin \
195 -c
$(call qstrip
,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG
))
198 define UBOOT_INSTALL_IMAGES_CMDS
199 $(foreach f
,$(UBOOT_BINS
), \
200 cp
-dpf
$(@D
)/$(f
) $(BINARIES_DIR
)/
202 $(if
$(BR2_TARGET_UBOOT_FORMAT_NAND
),
203 cp
-dpf
$(@D
)/u-boot.sb
$(BINARIES_DIR
))
204 $(if
$(BR2_TARGET_UBOOT_SPL
),
205 $(foreach f
,$(call qstrip
,$(BR2_TARGET_UBOOT_SPL_NAME
)), \
206 cp
-dpf
$(@D
)/$(f
) $(BINARIES_DIR
)/
209 $(if
$(BR2_TARGET_UBOOT_ENVIMAGE
),
210 cat
$(call qstrip
,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE
)) | \
211 $(HOST_DIR
)/usr
/bin
/mkenvimage
-s
$(BR2_TARGET_UBOOT_ENVIMAGE_SIZE
) \
212 $(if
$(BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT
),-r
) \
213 -o
$(BINARIES_DIR
)/uboot-env.bin
-)
216 define UBOOT_INSTALL_OMAP_IFT_IMAGE
217 cp
-dpf
$(@D
)/$(UBOOT_BIN_IFT
) $(BINARIES_DIR
)/
220 ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT
),y
)
221 ifeq ($(BR_BUILDING
),y
)
222 ifeq ($(call qstrip
,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG
)),)
223 $(error No gpsign config file. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting
)
225 ifeq ($(wildcard $(call qstrip
,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG
))),)
226 $(error gpsign config file
$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG
) not found. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting
)
229 UBOOT_DEPENDENCIES
+= host-omap-u-boot-utils
230 UBOOT_POST_BUILD_HOOKS
+= UBOOT_BUILD_OMAP_IFT
231 UBOOT_POST_INSTALL_IMAGES_HOOKS
+= UBOOT_INSTALL_OMAP_IFT_IMAGE
234 ifeq ($(BR2_TARGET_UBOOT_ZYNQ_IMAGE
),y
)
235 define UBOOT_GENERATE_ZYNQ_IMAGE
236 $(HOST_DIR
)/usr
/bin
/python2 \
237 $(HOST_DIR
)/usr
/bin
/zynq-boot-bin.py \
238 -u
$(@D
)/$(firstword $(call qstrip
,$(BR2_TARGET_UBOOT_SPL_NAME
))) \
239 -o
$(BINARIES_DIR
)/BOOT.BIN
241 UBOOT_DEPENDENCIES
+= host-zynq-boot-bin
242 UBOOT_POST_INSTALL_IMAGES_HOOKS
+= UBOOT_GENERATE_ZYNQ_IMAGE
245 ifeq ($(BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC
),y
)
246 define UBOOT_CRC_ALTERA_SOCFPGA_IMAGE
247 $(foreach f
,$(call qstrip
,$(BR2_TARGET_UBOOT_SPL_NAME
)), \
248 $(HOST_DIR
)/usr
/bin
/mkpimage \
249 -o
$(BINARIES_DIR
)/$(notdir $(call qstrip
,$(f
))).crc \
250 $(@D
)/$(call qstrip
,$(f
))
253 UBOOT_DEPENDENCIES
+= host-mkpimage
254 UBOOT_POST_INSTALL_IMAGES_HOOKS
+= UBOOT_CRC_ALTERA_SOCFPGA_IMAGE
257 ifeq ($(BR2_TARGET_UBOOT_ENVIMAGE
),y
)
258 ifeq ($(BR_BUILDING
),y
)
259 ifeq ($(call qstrip
,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE
)),)
260 $(error Please
define a source file for Uboot environment
(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE setting
))
262 ifeq ($(call qstrip
,$(BR2_TARGET_UBOOT_ENVIMAGE_SIZE
)),)
263 $(error Please provide Uboot environment size
(BR2_TARGET_UBOOT_ENVIMAGE_SIZE setting
))
266 UBOOT_DEPENDENCIES
+= host-uboot-tools
269 ifeq ($(BR2_TARGET_UBOOT
)$(BR_BUILDING
),yy
)
272 # Check U-Boot board name (for legacy) or the defconfig/custom config
273 # file options (for kconfig)
275 ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
),y
)
276 ifeq ($(UBOOT_BOARD_NAME
),)
277 $(error No U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting
)
278 endif # UBOOT_BOARD_NAME
279 else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
),y
)
280 ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG
),y
)
281 ifeq ($(call qstrip
,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG
)),)
282 $(error No board defconfig name specified
, check your BR2_TARGET_UBOOT_DEFCONFIG setting
)
283 endif # qstrip BR2_TARGET_UBOOT_BOARD_DEFCONFIG
284 endif # BR2_TARGET_UBOOT_USE_DEFCONFIG
285 ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
),y
)
286 ifeq ($(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE
)),)
287 $(error No board configuration file specified
, check your BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE setting
)
288 endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE
289 endif # BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
290 endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
293 # Check custom version option
295 ifeq ($(BR2_TARGET_UBOOT_CUSTOM_VERSION
),y
)
296 ifeq ($(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE
)),)
297 $(error No custom U-Boot version specified. Check your BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE setting
)
298 endif # qstrip BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE
299 endif # BR2_TARGET_UBOOT_CUSTOM_VERSION
302 # Check custom tarball option
304 ifeq ($(BR2_TARGET_UBOOT_CUSTOM_TARBALL
),y
)
305 ifeq ($(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION
)),)
306 $(error No custom U-Boot tarball specified. Check your BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION setting
)
307 endif # qstrip BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION
308 endif # BR2_TARGET_UBOOT_CUSTOM_TARBALL
311 # Check Git/Mercurial repo options
313 ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT
)$(BR2_TARGET_UBOOT_CUSTOM_HG
),y
)
314 ifeq ($(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL
)),)
315 $(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_URL setting
)
316 endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_URL
317 ifeq ($(call qstrip
,$(BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION
)),)
318 $(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION setting
)
319 endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_VERSION
320 endif # BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG
322 endif # BR2_TARGET_UBOOT && BR_BUILDING
324 ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
),y
)
325 $(eval
$(generic-package
))
326 else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
),y
)
327 $(eval
$(kconfig-package
))
328 endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY