1. 例子
#kernel-module-m8887-wlan.bb DESCRIPTION = "Marvell M8887 Wifi kernel module" require include/rcar-gen3-modules-common.inc LICENSE = "GPLv2 & MIT" LIC_FILES_CHKSUM = " \ file://m8887/wlan/gpl-2.0.txt;md5=ab04ac0f249af12befccb94447c08b77 \ " inherit module DEPENDS = "linux-renesas" PV = "15.44" PR = "r4" MARVELL_M8887_URL = "git://xxx/wireless.git" BRANCH = "master" BRANCH_board1 = "board1/master" BRANCH_board2 = "board2/master" # 若使用SRCREV=${AUTOREV} 使用AUTOREV不能编译旧版本的软件! (也就是checkout回去后,${AUTOREV}还是目前最新版的软件!) # 使用externalsrc来直接编译源码目录下的代码,也可以不用每次都烦着更改SRCREV的值 SRCREV = "57341238a98b2752546b4de461f442dc4161f578" SRC_URI += "${MARVELL_M8887_URL};protocol=ssh;branch=${BRANCH}" S = "${WORKDIR}/git" WLAN_SRCDIR = "${S}/m8887/wlan" module_do_compile() { # make marvell build-sys happy cd ${WLAN_SRCDIR} make } module_do_install() { install -d ${D}/lib/modules/${KERNEL_VERSION}/extra/ install -d ${D}/etc/modprobe.d/ install -m 644 ${WLAN_SRCDIR}/wlan.conf ${D}/etc/modprobe.d/wlan.conf install -m 644 ${WLAN_SRCDIR}/mlan.ko ${D}/lib/modules/${KERNEL_VERSION}/extra/ install -m 644 ${WLAN_SRCDIR}/sd8xxx.ko ${D}/lib/modules/${KERNEL_VERSION}/extra/ } PACKAGES += "kernel-module-mlan kernel-module-sd8xxx" RDEPENDS_kernel-module-mlan_append = " marvell-m8887-fw-cal" RDEPENDS_kernel-module-sd8xxx_append = " marvell-m8887-fw-cal" FILES_${PN} += "\ /etc/modprobe.d/ \ "
2. 使用externalsrc时刻编译最新代码,又不会影响编译旧版本软件
inherit externalsrc # a dummy local SRC_URI entry, it is used to cheat kernel.class to prepare # STAGING_KERNEL_DIR so building out-of-tree kernel module runs smoothly SRC_URI_append = " file://foo" EXTERNALSRC = "${TOPDIR}/../source_code/linux" EXTERNALSRC_BUILD = "${WORKDIR}/build"