mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
Requiring all build systems for external kernel modules to
place Module.symvers directly into ${B}/. is quite an
artificial assumption/requirement. It doesn't have to end
up there, but could easily end up somewhere below ${B}.
Allow to override the location below ${B}
Note that we still don't make use of multiple
Module.symvers in case there are any generated by one
single kernel module build, but this is no change in
behaviour from before and could be added if there really
is a demand for that.
Reported-by: Denys Dmytriyenko <denis@denix.org>
(From OE-Core rev: caa0fa2ddf0c97255b38b1ec8579944ab4821ff1)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
58 lines
2.0 KiB
Plaintext
58 lines
2.0 KiB
Plaintext
inherit module-base kernel-module-split
|
|
|
|
addtask make_scripts after do_patch before do_compile
|
|
do_make_scripts[lockfiles] = "${TMPDIR}/kernel-scripts.lock"
|
|
do_make_scripts[depends] += "virtual/kernel:do_shared_workdir"
|
|
|
|
EXTRA_OEMAKE += "KERNEL_SRC=${STAGING_KERNEL_DIR}"
|
|
|
|
MODULES_INSTALL_TARGET ?= "modules_install"
|
|
MODULES_MODULE_SYMVERS_LOCATION ?= ""
|
|
|
|
python __anonymous () {
|
|
depends = d.getVar('DEPENDS')
|
|
extra_symbols = []
|
|
for dep in depends.split():
|
|
if dep.startswith("kernel-module-"):
|
|
extra_symbols.append("${STAGING_INCDIR}/" + dep + "/Module.symvers")
|
|
d.setVar('KBUILD_EXTRA_SYMBOLS', " ".join(extra_symbols))
|
|
}
|
|
|
|
module_do_compile() {
|
|
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
|
|
oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \
|
|
KERNEL_VERSION=${KERNEL_VERSION} \
|
|
CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
|
|
AR="${KERNEL_AR}" \
|
|
O=${STAGING_KERNEL_BUILDDIR} \
|
|
KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" \
|
|
${MAKE_TARGETS}
|
|
}
|
|
|
|
module_do_install() {
|
|
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
|
|
oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" \
|
|
CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
|
|
O=${STAGING_KERNEL_BUILDDIR} \
|
|
${MODULES_INSTALL_TARGET}
|
|
|
|
if [ ! -e "${B}/${MODULES_MODULE_SYMVERS_LOCATION}/Module.symvers" ] ; then
|
|
bbwarn "Module.symvers not found in ${B}/${MODULES_MODULE_SYMVERS_LOCATION}"
|
|
bbwarn "Please consider setting MODULES_MODULE_SYMVERS_LOCATION to a"
|
|
bbwarn "directory below B to get correct inter-module dependencies"
|
|
else
|
|
install -Dm0644 "${B}/${MODULES_MODULE_SYMVERS_LOCATION}"/Module.symvers ${D}${includedir}/${BPN}/Module.symvers
|
|
# Module.symvers contains absolute path to the build directory.
|
|
# While it doesn't actually seem to matter which path is specified,
|
|
# clear them out to avoid confusion
|
|
sed -e 's:${B}/::g' -i ${D}${includedir}/${BPN}/Module.symvers
|
|
fi
|
|
}
|
|
|
|
EXPORT_FUNCTIONS do_compile do_install
|
|
|
|
# add all splitted modules to PN RDEPENDS, PN can be empty now
|
|
KERNEL_MODULES_META_PACKAGE = "${PN}"
|
|
FILES_${PN} = ""
|
|
ALLOW_EMPTY_${PN} = "1"
|