summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorNathan Rossi <nathan@nathanrossi.com>2017-10-06 13:12:52 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-11-05 22:39:47 +0000
commit8deaf6612a5fe520941540afd96e0cc07cb974e4 (patch)
treefc5366262e481330a837fef7ff3fc1346f1ea3f6 /meta/classes
parentb286ba24f47844a098d5abad6845c4e321bf80e5 (diff)
downloadpoky-8deaf6612a5fe520941540afd96e0cc07cb974e4.tar.gz
kernel-uimage.bbclass: Fix up generation of uImage from vmlinux
Fix up the generation of uImage from vmlinux when KEEPUIMAGE != 'yes'. This fixes up the working directory that do_uboot_mkimage is run from, such that it is run from the ${B} directory to access built artefacts. Simplify the logic in the task so that the parse step either adds the task or not if the conditions are met. This reduces the need for the task to run in cases when it is not used. The task is also changed to depend on the kernel_link_images task as arch/<arch>/boot/* is not available until after kernel_link_images in certain cases (e.g. vmlinux/uImage only KERNEL_IMAGETYPES). Fix up the use of ${S}/vmlinux when pulling the entry symbols address so that it accesses the vmlinux in ${B}. (From OE-Core rev: 60f0e4b18c7d77d7be2b22573b7d0c7ad3d0832f) Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Ross Burton <ross.burton@intel.com> (cherry picked from commit e0b4f018d1c2a65e66c81e5be1da8894e9a6c132) Signed-off-by: André Draszik <adraszik@tycoint.com> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/kernel-uimage.bbclass26
1 files changed, 12 insertions, 14 deletions
diff --git a/meta/classes/kernel-uimage.bbclass b/meta/classes/kernel-uimage.bbclass
index 19c6ade507..7c026abf0b 100644
--- a/meta/classes/kernel-uimage.bbclass
+++ b/meta/classes/kernel-uimage.bbclass
@@ -15,23 +15,21 @@ python __anonymous () {
15 typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE") or "" 15 typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE") or ""
16 if "uImage" in typeformake.split(): 16 if "uImage" in typeformake.split():
17 d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('uImage', 'vmlinux')) 17 d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('uImage', 'vmlinux'))
18
19 # Enable building of uImage with mkimage
20 bb.build.addtask('do_uboot_mkimage', 'do_install', 'do_kernel_link_images', d)
18} 21}
19 22
23do_uboot_mkimage[dirs] += "${B}"
20do_uboot_mkimage() { 24do_uboot_mkimage() {
21 if echo "${KERNEL_IMAGETYPES}" | grep -wq "uImage"; then 25 uboot_prep_kimage
22 if test "x${KEEPUIMAGE}" != "xyes" ; then
23 uboot_prep_kimage
24
25 ENTRYPOINT=${UBOOT_ENTRYPOINT}
26 if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
27 ENTRYPOINT=`${HOST_PREFIX}nm ${S}/vmlinux | \
28 awk '$3=="${UBOOT_ENTRYSYMBOL}" {print $1}'`
29 fi
30 26
31 uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C "${linux_comp}" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage 27 ENTRYPOINT=${UBOOT_ENTRYPOINT}
32 rm -f linux.bin 28 if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
33 fi 29 ENTRYPOINT=`${HOST_PREFIX}nm ${B}/vmlinux | \
30 awk '$3=="${UBOOT_ENTRYSYMBOL}" {print $1}'`
34 fi 31 fi
35}
36 32
37addtask uboot_mkimage before do_install after do_compile 33 uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C "${linux_comp}" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage
34 rm -f linux.bin
35}