]> git.ipfire.org Git - thirdparty/linux.git/commit - Makefile
kbuild: use obj-y instead extra-y for objects placed at the head
authorMasahiro Yamada <masahiroy@kernel.org>
Sat, 24 Sep 2022 18:19:14 +0000 (03:19 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sun, 2 Oct 2022 09:04:05 +0000 (18:04 +0900)
commit3216484550610470013b7ce1c9ed272da0a74589
treee24e7df02e90b7e798ae5aa67a5e4468142978c8
parent4b0986590062ce12c134c00cf32b9f9b846aeff5
kbuild: use obj-y instead extra-y for objects placed at the head

The objects placed at the head of vmlinux need special treatments:

 - arch/$(SRCARCH)/Makefile adds them to head-y in order to place
   them before other archives in the linker command line.

 - arch/$(SRCARCH)/kernel/Makefile adds them to extra-y instead of
   obj-y to avoid them going into built-in.a.

This commit gets rid of the latter.

Create vmlinux.a to collect all the objects that are unconditionally
linked to vmlinux. The objects listed in head-y are moved to the head
of vmlinux.a by using 'ar m'.

With this, arch/$(SRCARCH)/kernel/Makefile can consistently use obj-y
for builtin objects.

There is no *.o that is directly linked to vmlinux. Drop unneeded code
in scripts/clang-tools/gen_compile_commands.py.

$(AR) mPi needs 'T' to workaround the llvm-ar bug. The fix was suggested
by Nathan Chancellor [1].

[1]: https://lore.kernel.org/llvm/YyjjT5gQ2hGMH0ni@dev-arch.thelio-3990X/

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
29 files changed:
Documentation/kbuild/makefiles.rst
Makefile
arch/alpha/kernel/Makefile
arch/arc/kernel/Makefile
arch/arm/kernel/Makefile
arch/arm64/kernel/Makefile
arch/csky/kernel/Makefile
arch/hexagon/kernel/Makefile
arch/ia64/kernel/Makefile
arch/loongarch/kernel/Makefile
arch/m68k/68000/Makefile
arch/m68k/coldfire/Makefile
arch/m68k/kernel/Makefile
arch/microblaze/kernel/Makefile
arch/mips/kernel/Makefile
arch/nios2/kernel/Makefile
arch/openrisc/kernel/Makefile
arch/parisc/kernel/Makefile
arch/powerpc/kernel/Makefile
arch/riscv/kernel/Makefile
arch/s390/kernel/Makefile
arch/sh/kernel/Makefile
arch/sparc/kernel/Makefile
arch/x86/kernel/Makefile
arch/xtensa/kernel/Makefile
scripts/Makefile.modpost
scripts/Makefile.vmlinux_o
scripts/clang-tools/gen_compile_commands.py
scripts/link-vmlinux.sh