7d5e1de98e
When KBUILD_MIXED_TREE points to the output folder of another kernel's build output, Kbuild can compile a complete kernel tree's modules against that other kernel tree's vmlinux. This is useful when two kernel trees exist: a "Generic Kernel Image" tree and a "device kernel" tree. Both trees are complete kernel source trees, and the "Generic Kernel Image" should provide the kernel Image and device kernel tree provides device driver modules. To accomplish this, references to vmlinux.symvers in the device kernel should point to the generic kernel's vmlinux.symvers and the device kernel should skip compilation of built-in files. Bug: 178469391 Change-Id: I614f3e87519236c4e2c5da74937cb0ecd98a278a Signed-off-by: Elliot Berman <eberman@codeaurora.org> Signed-off-by: Giuliano Procida <gprocida@google.com>
57 lines
1.5 KiB
Bash
Executable File
57 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# A depmod wrapper used by the toplevel Makefile
|
|
|
|
if test $# -ne 2 -a $# -ne 3; then
|
|
echo "Usage: $0 /sbin/depmod <kernelrelease> [System.map folder]" >&2
|
|
exit 1
|
|
fi
|
|
DEPMOD=$1
|
|
KERNELRELEASE=$2
|
|
KBUILD_MIXED_TREE=$3
|
|
|
|
if ! test -r ${KBUILD_MIXED_TREE}System.map ; then
|
|
echo "Warning: modules_install: missing 'System.map' file. Skipping depmod." >&2
|
|
exit 0
|
|
fi
|
|
|
|
# legacy behavior: "depmod" in /sbin, no /sbin in PATH
|
|
PATH="$PATH:/sbin"
|
|
if [ -z $(command -v $DEPMOD) ]; then
|
|
echo "Warning: 'make modules_install' requires $DEPMOD. Please install it." >&2
|
|
echo "This is probably in the kmod package." >&2
|
|
exit 0
|
|
fi
|
|
|
|
# older versions of depmod require the version string to start with three
|
|
# numbers, so we cheat with a symlink here
|
|
depmod_hack_needed=true
|
|
tmp_dir=$(mktemp -d ${TMPDIR:-/tmp}/depmod.XXXXXX)
|
|
mkdir -p "$tmp_dir/lib/modules/$KERNELRELEASE"
|
|
if "$DEPMOD" -b "$tmp_dir" $KERNELRELEASE 2>/dev/null; then
|
|
if test -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep" -o \
|
|
-e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep.bin"; then
|
|
depmod_hack_needed=false
|
|
fi
|
|
fi
|
|
rm -rf "$tmp_dir"
|
|
if $depmod_hack_needed; then
|
|
symlink="$INSTALL_MOD_PATH/lib/modules/99.98.$KERNELRELEASE"
|
|
ln -s "$KERNELRELEASE" "$symlink"
|
|
KERNELRELEASE=99.98.$KERNELRELEASE
|
|
fi
|
|
|
|
set -- -ae -F ${KBUILD_MIXED_TREE}System.map
|
|
if test -n "$INSTALL_MOD_PATH"; then
|
|
set -- "$@" -b "$INSTALL_MOD_PATH"
|
|
fi
|
|
"$DEPMOD" "$@" "$KERNELRELEASE"
|
|
ret=$?
|
|
|
|
if $depmod_hack_needed; then
|
|
rm -f "$symlink"
|
|
fi
|
|
|
|
exit $ret
|