1 SUMMARY = "Universal Boot Loader for embedded devices"
2 PROVIDES = "virtual/bootloader"
6 PACKAGE_ARCH = "${MACHINE_ARCH}"
8 DEPENDS += "kern-tools-native"
10 inherit uboot-config uboot-extlinux-config uboot-sign deploy cml1
12 DEPENDS += "swig-native python-native"
14 EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}" V=1'
15 EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"'
16 EXTRA_OEMAKE += 'PYTHON2=nativepython STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}'
18 PACKAGECONFIG ??= "openssl"
19 # u-boot will compile its own tools during the build, with specific
20 # configurations (aka when CONFIG_FIT_SIGNATURE is enabled) openssl is needed as
21 # a host build dependency.
22 PACKAGECONFIG[openssl] = ",,openssl-native"
24 # Allow setting an additional version string that will be picked up by the
25 # u-boot build system and appended to the u-boot version. If the .scmversion
26 # file already exists it will not be overwritten.
27 UBOOT_LOCALVERSION ?= ""
29 # Some versions of u-boot use .bin and others use .img. By default use .bin
30 # but enable individual recipes to change this value.
31 UBOOT_SUFFIX ??= "bin"
32 UBOOT_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.${UBOOT_SUFFIX}"
33 UBOOT_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_SUFFIX}"
34 UBOOT_MAKE_TARGET ?= "all"
36 # Output the ELF generated. Some platforms can use the ELF file and directly
37 # load it (JTAG booting, QEMU) additionally the ELF can be used for debugging
40 UBOOT_ELF_SUFFIX ?= "elf"
41 UBOOT_ELF_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}"
42 UBOOT_ELF_BINARY ?= "u-boot.${UBOOT_ELF_SUFFIX}"
43 UBOOT_ELF_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_ELF_SUFFIX}"
45 # Some versions of u-boot build an SPL (Second Program Loader) image that
46 # should be packaged along with the u-boot binary as well as placed in the
47 # deploy directory. For those versions they can set the following variables
48 # to allow packaging the SPL.
50 SPL_BINARYNAME ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}"
51 SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}"
52 SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}"
54 # Additional environment variables or a script can be installed alongside
55 # u-boot to be used automatically on boot. This file, typically 'uEnv.txt'
56 # or 'boot.scr', should be packaged along with u-boot as well as placed in the
57 # deploy directory. Machine configurations needing one of these files should
58 # include it in the SRC_URI and set the UBOOT_ENV parameter.
59 UBOOT_ENV_SUFFIX ?= "txt"
61 UBOOT_ENV_BINARY ?= "${UBOOT_ENV}.${UBOOT_ENV_SUFFIX}"
62 UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}-${PV}-${PR}.${UBOOT_ENV_SUFFIX}"
63 UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}"
65 # U-Boot EXTLINUX variables. U-Boot searches for /boot/extlinux/extlinux.conf
66 # to find EXTLINUX conf file.
67 UBOOT_EXTLINUX_INSTALL_DIR ?= "/boot/extlinux"
68 UBOOT_EXTLINUX_CONF_NAME ?= "extlinux.conf"
69 UBOOT_EXTLINUX_SYMLINK ?= "${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}-${PR}"
71 # returns all the elements from the src uri that are .cfg files
73 sources=src_patches(d, True)
76 if s.endswith('.cfg'):
77 sources_list.append(s)
82 if [ -z "${UBOOT_CONFIG}" ]; then
83 if [ -n "${UBOOT_MACHINE}" ]; then
84 oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE}
86 oe_runmake -C ${S} O=${B} oldconfig
88 merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
94 if [ "${@bb.utils.filter('DISTRO_FEATURES', 'ld-is-gold', d)}" ]; then
95 sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' ${S}/config.mk
102 if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]
104 echo ${UBOOT_LOCALVERSION} > ${B}/.scmversion
105 echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion
108 if [ -n "${UBOOT_CONFIG}" ]
111 for config in ${UBOOT_MACHINE}; do
113 for type in ${UBOOT_CONFIG}; do
117 oe_runmake -C ${S} O=${B}/${config} ${config}
118 oe_runmake -C ${S} O=${B}/${config} ${UBOOT_MAKE_TARGET}
119 for binary in ${UBOOT_BINARIES}; do
121 if [ $k -eq $i ]; then
122 cp ${B}/${config}/${binary} ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX}
132 oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_TARGET}
138 if [ -n "${UBOOT_CONFIG}" ]
140 for config in ${UBOOT_MACHINE}; do
142 for type in ${UBOOT_CONFIG}; do
147 install -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
148 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}-${type}
149 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}
157 install -m 644 ${B}/${UBOOT_BINARY} ${D}/boot/${UBOOT_IMAGE}
158 ln -sf ${UBOOT_IMAGE} ${D}/boot/${UBOOT_BINARY}
161 if [ -n "${UBOOT_ELF}" ]
163 if [ -n "${UBOOT_CONFIG}" ]
165 for config in ${UBOOT_MACHINE}; do
167 for type in ${UBOOT_CONFIG}; do
171 install -m 644 ${B}/${config}/${UBOOT_ELF} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}
172 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${D}/boot/${UBOOT_BINARY}-${type}
173 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${D}/boot/${UBOOT_BINARY}
180 install -m 644 ${B}/${UBOOT_ELF} ${D}/boot/${UBOOT_ELF_IMAGE}
181 ln -sf ${UBOOT_ELF_IMAGE} ${D}/boot/${UBOOT_ELF_BINARY}
185 if [ -e ${WORKDIR}/fw_env.config ] ; then
186 install -d ${D}${sysconfdir}
187 install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
190 if [ -n "${SPL_BINARY}" ]
192 if [ -n "${UBOOT_CONFIG}" ]
194 for config in ${UBOOT_MACHINE}; do
196 for type in ${UBOOT_CONFIG}; do
200 install -m 644 ${B}/${config}/${SPL_BINARY} ${D}/boot/${SPL_IMAGE}-${type}-${PV}-${PR}
201 ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${D}/boot/${SPL_BINARYNAME}-${type}
202 ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${D}/boot/${SPL_BINARYNAME}
209 install -m 644 ${B}/${SPL_BINARY} ${D}/boot/${SPL_IMAGE}
210 ln -sf ${SPL_IMAGE} ${D}/boot/${SPL_BINARYNAME}
214 if [ -n "${UBOOT_ENV}" ]
216 install -m 644 ${WORKDIR}/${UBOOT_ENV_BINARY} ${D}/boot/${UBOOT_ENV_IMAGE}
217 ln -sf ${UBOOT_ENV_IMAGE} ${D}/boot/${UBOOT_ENV_BINARY}
220 if [ "${UBOOT_EXTLINUX}" = "1" ]
222 install -Dm 0644 ${UBOOT_EXTLINUX_CONFIG} ${D}/${UBOOT_EXTLINUX_INSTALL_DIR}/${UBOOT_EXTLINUX_CONF_NAME}
227 FILES_${PN} = "/boot ${sysconfdir} ${datadir}"
230 if [ -n "${UBOOT_CONFIG}" ]
232 for config in ${UBOOT_MACHINE}; do
234 for type in ${UBOOT_CONFIG}; do
238 install -d ${DEPLOYDIR}
239 install -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
241 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}-${type}
242 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}
243 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}-${type}
244 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}
251 install -d ${DEPLOYDIR}
252 install -m 644 ${B}/${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
254 rm -f ${UBOOT_BINARY} ${UBOOT_SYMLINK}
255 ln -sf ${UBOOT_IMAGE} ${UBOOT_SYMLINK}
256 ln -sf ${UBOOT_IMAGE} ${UBOOT_BINARY}
259 if [ -n "${UBOOT_ELF}" ]
261 if [ -n "${UBOOT_CONFIG}" ]
263 for config in ${UBOOT_MACHINE}; do
265 for type in ${UBOOT_CONFIG}; do
269 install -m 644 ${B}/${config}/${UBOOT_ELF} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}
270 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_BINARY}-${type}
271 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_BINARY}
272 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_SYMLINK}-${type}
273 ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_ELF_SUFFIX} ${DEPLOYDIR}/${UBOOT_ELF_SYMLINK}
280 install -m 644 ${B}/${UBOOT_ELF} ${DEPLOYDIR}/${UBOOT_ELF_IMAGE}
281 ln -sf ${UBOOT_ELF_IMAGE} ${DEPLOYDIR}/${UBOOT_ELF_BINARY}
282 ln -sf ${UBOOT_ELF_IMAGE} ${DEPLOYDIR}/${UBOOT_ELF_SYMLINK}
287 if [ -n "${SPL_BINARY}" ]
289 if [ -n "${UBOOT_CONFIG}" ]
291 for config in ${UBOOT_MACHINE}; do
293 for type in ${UBOOT_CONFIG}; do
297 install -m 644 ${B}/${config}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}-${type}-${PV}-${PR}
298 rm -f ${DEPLOYDIR}/${SPL_BINARYNAME} ${DEPLOYDIR}/${SPL_SYMLINK}-${type}
299 ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_BINARYNAME}-${type}
300 ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_BINARYNAME}
301 ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_SYMLINK}-${type}
302 ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_SYMLINK}
309 install -m 644 ${B}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}
310 rm -f ${DEPLOYDIR}/${SPL_BINARYNAME} ${DEPLOYDIR}/${SPL_SYMLINK}
311 ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_BINARYNAME}
312 ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_SYMLINK}
317 if [ -n "${UBOOT_ENV}" ]
319 install -m 644 ${WORKDIR}/${UBOOT_ENV_BINARY} ${DEPLOYDIR}/${UBOOT_ENV_IMAGE}
320 rm -f ${DEPLOYDIR}/${UBOOT_ENV_BINARY} ${DEPLOYDIR}/${UBOOT_ENV_SYMLINK}
321 ln -sf ${UBOOT_ENV_IMAGE} ${DEPLOYDIR}/${UBOOT_ENV_BINARY}
322 ln -sf ${UBOOT_ENV_IMAGE} ${DEPLOYDIR}/${UBOOT_ENV_SYMLINK}
325 if [ "${UBOOT_EXTLINUX}" = "1" ]
327 install -m 644 ${UBOOT_EXTLINUX_CONFIG} ${DEPLOYDIR}/${UBOOT_EXTLINUX_SYMLINK}
328 ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}
329 ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME}
333 addtask deploy before do_build after do_compile