• Masahiro Yamada's avatar
    kbuild: unify two modpost invocations · f73edc89
    Masahiro Yamada authored
    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: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Tested-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
    f73edc89
Makefile 63.6 KB