]> git.baikalelectronics.ru Git - kernel.git/commit
kbuild: clarify the difference between obj-y and obj-m w.r.t. descending
authorMasahiro Yamada <masahiroy@kernel.org>
Thu, 19 Dec 2019 11:51:00 +0000 (20:51 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sat, 21 Dec 2019 15:25:35 +0000 (00:25 +0900)
commit2f1f3d241508b285b3d553f762d9812221115c22
treecd6fbf7499a88942672ffdcc558138f2da223510
parentce12b93020b33689745acb415d82ed54778e5b58
kbuild: clarify the difference between obj-y and obj-m w.r.t. descending

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: Johan Hovold <johan@kernel.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Johan Hovold <johan@kernel.org>
Documentation/kbuild/makefiles.rst