Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

kbuild: refactor cross-compiling linux-headers package

Since commit 13b25489b6f8 ("kbuild: change working directory to external
module directory with M="), when cross-building host programs for the
linux-headers package, the "Entering directory" and "Leaving directory"
messages appear multiple times, and each object path shown is relative
to the working directory. This makes it difficult to track which objects
are being rebuilt.

In hindsight, using the external module build (M=) was not a good idea.

This commit simplifies the script by leveraging the run-command target,
resulting in a cleaner build log again.

[Before]

$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bindeb-pkg
[ snip ]
Rebuilding host programs with aarch64-linux-gnu-gcc...
make[5]: Entering directory '/home/masahiro/linux'
make[6]: Entering directory '/home/masahiro/linux/debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+'
HOSTCC scripts/kallsyms
HOSTCC scripts/sorttable
HOSTCC scripts/asn1_compiler
make[6]: Leaving directory '/home/masahiro/linux/debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+'
make[5]: Leaving directory '/home/masahiro/linux'
make[5]: Entering directory '/home/masahiro/linux'
make[6]: Entering directory '/home/masahiro/linux/debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+'
HOSTCC scripts/basic/fixdep
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/sumversion.o
HOSTCC scripts/mod/symsearch.o
HOSTLD scripts/mod/modpost
make[6]: Leaving directory '/home/masahiro/linux/debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+'
make[5]: Leaving directory '/home/masahiro/linux'

[After]

$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bindeb-pkg
[ snip ]
HOSTCC debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+/scripts/basic/fixdep
HOSTCC debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+/scripts/kallsyms
HOSTCC debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+/scripts/sorttable
HOSTCC debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+/scripts/asn1_compiler
HOSTCC debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+/scripts/mod/modpost.o
HOSTCC debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+/scripts/mod/file2alias.o
HOSTCC debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+/scripts/mod/sumversion.o
HOSTCC debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+/scripts/mod/symsearch.o
HOSTLD debian/linux-headers-6.13.0-rc1+/usr/src/linux-headers-6.13.0-rc1+/scripts/mod/modpost

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

+9 -24
+9 -24
scripts/package/install-extmod-build
··· 49 49 # This caters to host programs that participate in Kbuild. objtool and 50 50 # resolve_btfids are out of scope. 51 51 if [ "${CC}" != "${HOSTCC}" ]; then 52 - echo "Rebuilding host programs with ${CC}..." 53 - 54 - # This leverages external module building. 55 - # - Clear sub_make_done to allow the top-level Makefile to redo sub-make. 56 - # - Filter out --no-print-directory to print "Entering directory" logs 57 - # when Make changes the working directory. 58 - unset sub_make_done 59 - MAKEFLAGS=$(echo "${MAKEFLAGS}" | sed s/--no-print-directory//) 60 - 61 - cat <<-'EOF' > "${destdir}/Kbuild" 62 - subdir-y := scripts 52 + cat "${destdir}/scripts/Makefile" - <<-'EOF' > "${destdir}/scripts/Kbuild" 53 + subdir-y += basic 54 + hostprogs-always-y += mod/modpost 55 + mod/modpost-objs := $(addprefix mod/, modpost.o file2alias.o sumversion.o symsearch.o) 63 56 EOF 64 57 65 58 # HOSTCXX is not overridden. The C++ compiler is used to build: ··· 60 67 # - GCC plugins, which will not work on the installed system even after 61 68 # being rebuilt. 62 69 # 63 - # Use the single-target build to avoid the modpost invocation, which 64 - # would overwrite Module.symvers. 65 - "${MAKE}" HOSTCC="${CC}" KBUILD_OUTPUT=. KBUILD_EXTMOD="${destdir}" scripts/ 70 + # Clear VPATH and srcroot because the source files reside in the output 71 + # directory. 72 + # shellcheck disable=SC2016 # $(MAKE), $(CC), and $(build) will be expanded by Make 73 + "${MAKE}" run-command KBUILD_RUN_COMMAND='+$(MAKE) HOSTCC=$(CC) VPATH= srcroot=. $(build)='"${destdir}"/scripts 66 74 67 - cat <<-'EOF' > "${destdir}/scripts/Kbuild" 68 - subdir-y := basic 69 - hostprogs-always-y := mod/modpost 70 - mod/modpost-objs := $(addprefix mod/, modpost.o file2alias.o sumversion.o symsearch.o) 71 - EOF 72 - 73 - # Run once again to rebuild scripts/basic/ and scripts/mod/modpost. 74 - "${MAKE}" HOSTCC="${CC}" KBUILD_OUTPUT=. KBUILD_EXTMOD="${destdir}" scripts/ 75 - 76 - rm -f "${destdir}/Kbuild" "${destdir}/scripts/Kbuild" 75 + rm -f "${destdir}/scripts/Kbuild" 77 76 fi 78 77 79 78 find "${destdir}" \( -name '.*.cmd' -o -name '*.o' \) -delete