• Masahiro Yamada's avatar
    kbuild: clarify the difference between obj-y and obj-m w.r.t. descending · 28f94a44
    Masahiro Yamada authored
    Kbuild descends into a directory by either 'y' or 'm', but there is an
    important difference.
    
    Kbuild combines the built-in objects into built-in.a in each directory.
    The built-in.a in the directory visited by obj-y is merged into the
    built-in.a in the parent directory. This merge happens recursively
    when Kbuild is ascending back towards the top directory, then built-in
    objects are linked into vmlinux eventually. This works properly only
    when the Makefile specifying obj-y is reachable by the chain of obj-y.
    
    On the other hand, Kbuild does not take built-in.a from the directory
    visited by obj-m. This it, all the objects in that directory are
    supposed to be modular. If Kbuild descends into a directory by obj-m,
    but the Makefile in the sub-directory specifies obj-y, those objects
    are just left orphan.
    
    The current statement "Kbuild only uses this information to decide that
    it needs to visit the directory" is misleading. Clarify the difference.
    Reported-by: default avatarJohan Hovold <johan@kernel.org>
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: default avatarJohan Hovold <johan@kernel.org>
    28f94a44
makefiles.rst 46.6 KB