blob: 09b3c3f68cc1c52271418617558a48518764619a [file] [log] [blame]
Andrew Geissler82c905d2020-04-13 13:39:40 -05001SUMMARY = "U-Boot bootloader tools"
Patrick Williamsdb4c27e2022-08-05 08:10:29 -05002DEPENDS += "gnutls openssl util-linux swig-native"
3
4inherit python3native
5export STAGING_INCDIR="${STAGING_INCDIR_NATIVE}"
Andrew Geissler82c905d2020-04-13 13:39:40 -05006
7PROVIDES = "${MLPREFIX}u-boot-mkimage ${MLPREFIX}u-boot-mkenvimage"
Patrick Williams213cb262021-08-07 19:21:33 -05008PROVIDES:class-native = "u-boot-mkimage-native u-boot-mkenvimage-native"
Andrew Geissler82c905d2020-04-13 13:39:40 -05009
10PACKAGES += "${PN}-mkimage ${PN}-mkenvimage"
11
12# Required for backward compatibility with "u-boot-mkimage-xxx.bb"
Patrick Williams213cb262021-08-07 19:21:33 -050013RPROVIDES:${PN}-mkimage = "u-boot-mkimage"
14RREPLACES:${PN}-mkimage = "u-boot-mkimage"
15RCONFLICTS:${PN}-mkimage = "u-boot-mkimage"
Andrew Geissler82c905d2020-04-13 13:39:40 -050016
Patrick Williams213cb262021-08-07 19:21:33 -050017EXTRA_OEMAKE:class-target = 'CROSS_COMPILE="${TARGET_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
18EXTRA_OEMAKE:class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
19EXTRA_OEMAKE:class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
Andrew Geissler82c905d2020-04-13 13:39:40 -050020
21SED_CONFIG_EFI = '-e "s/CONFIG_EFI_LOADER=.*/# CONFIG_EFI_LOADER is not set/"'
Patrick Williams213cb262021-08-07 19:21:33 -050022SED_CONFIG_EFI:x86 = ''
23SED_CONFIG_EFI:x86-64 = ''
24SED_CONFIG_EFI:arm = ''
25SED_CONFIG_EFI:armeb = ''
26SED_CONFIG_EFI:aarch64 = ''
Patrick Williams864cc432023-02-09 14:54:44 -060027SED_CONFIG_EFI:loongarch64 = ''
Andrew Geissler82c905d2020-04-13 13:39:40 -050028
29do_compile () {
Andrew Geisslerd1e89492021-02-12 15:35:20 -060030 # Yes, this is crazy. If you build on a system with git < 2.14 from scratch, the tree will
31 # be marked as "dirty" and the version will include "-dirty", leading to a reproducibility problem.
32 # The issue is the inode count for Licnses/README changing due to do_populate_lic hardlinking a
33 # copy of the file. We avoid this by ensuring the index is updated with a "git diff" before the
34 # u-boot machinery tries to determine the version.
35 #
36 # build$ ../git/scripts/setlocalversion ../git
37 # ""
38 # build$ ln ../git/
39 # build$ ln ../git/README ../foo
40 # build$ ../git/scripts/setlocalversion ../git
41 # ""-dirty
42 # (i.e. creating a hardlink dirties the index)
43 cd ${S}; git diff; cd ${B}
44
Andrew Geisslerd5838332022-05-27 11:33:10 -050045 oe_runmake -C ${S} tools-only_defconfig O=${B}
Andrew Geissler82c905d2020-04-13 13:39:40 -050046
47 # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and
48 # generating it requires bin2header tool, which for target build
49 # is built with target tools and thus cannot be executed on host.
50 sed -i -e "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" ${SED_CONFIG_EFI} ${B}/.config
51
52 oe_runmake -C ${S} cross_tools NO_SDL=1 O=${B}
53}
54
55do_install () {
56 install -d ${D}${bindir}
57
58 # mkimage
59 install -m 0755 tools/mkimage ${D}${bindir}/uboot-mkimage
60 ln -sf uboot-mkimage ${D}${bindir}/mkimage
61
62 # mkenvimage
63 install -m 0755 tools/mkenvimage ${D}${bindir}/uboot-mkenvimage
64 ln -sf uboot-mkenvimage ${D}${bindir}/mkenvimage
65
66 # dumpimage
67 install -m 0755 tools/dumpimage ${D}${bindir}/uboot-dumpimage
68 ln -sf uboot-dumpimage ${D}${bindir}/dumpimage
69
70 # fit_check_sign
71 install -m 0755 tools/fit_check_sign ${D}${bindir}/uboot-fit_check_sign
72 ln -sf uboot-fit_check_sign ${D}${bindir}/fit_check_sign
73}
74
Patrick Williams213cb262021-08-07 19:21:33 -050075ALLOW_EMPTY:${PN} = "1"
76FILES:${PN} = ""
77FILES:${PN}-mkimage = "${bindir}/uboot-mkimage ${bindir}/mkimage ${bindir}/uboot-dumpimage ${bindir}/dumpimage ${bindir}/uboot-fit_check_sign ${bindir}/fit_check_sign"
78FILES:${PN}-mkenvimage = "${bindir}/uboot-mkenvimage ${bindir}/mkenvimage"
Andrew Geissler82c905d2020-04-13 13:39:40 -050079
Patrick Williams213cb262021-08-07 19:21:33 -050080RDEPENDS:${PN}-mkimage += "dtc"
81RDEPENDS:${PN} += "${PN}-mkimage ${PN}-mkenvimage"
82RDEPENDS:${PN}:class-native = ""
Andrew Geissler82c905d2020-04-13 13:39:40 -050083
84BBCLASSEXTEND = "native nativesdk"
85