]> git.ipfire.org Git - thirdparty/linux.git/commit - Makefile
kbuild: unify two modpost invocations
authorMasahiro Yamada <masahiroy@kernel.org>
Sat, 24 Sep 2022 18:19:13 +0000 (03:19 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Wed, 28 Sep 2022 21:07:58 +0000 (06:07 +0900)
commitf73edc8951b2de515b5ecc8a357ccd47dd41077e
treed47510e68b59ee420a244941b11be9a189c7e955
parent9c5a0ac3c36917c4258f734bda98be02ca36b992
kbuild: unify two modpost invocations

Currently, modpost is executed twice; first for vmlinux, second
for modules.

This commit merges them.

Current build flow
==================

  1) build obj-y and obj-m objects
    2) link vmlinux.o
      3) modpost for vmlinux
        4) link vmlinux
          5) modpost for modules
            6) link modules (*.ko)

The build steps 1) through 6) are serialized, that is, modules are
built after vmlinux. You do not get benefits of parallel builds when
scripts/link-vmlinux.sh is being run.

New build flow
==============

  1) build obj-y and obj-m objects
    2) link vmlinux.o
      3) modpost for vmlinux and modules
        4a) link vmlinux
        4b) link modules (*.ko)

In the new build flow, modpost is invoked just once.

vmlinux and modules are built in parallel. One exception is
CONFIG_DEBUG_INFO_BTF_MODULES=y, where modules depend on vmlinux.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
Makefile
scripts/Makefile.modfinal
scripts/Makefile.modpost
scripts/link-vmlinux.sh