From: Johan Hovold <johan@kernel.org>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: linux-kbuild@vger.kernel.org,
Randy Dunlap <rdunlap@infradead.org>,
Sam Ravnborg <sam@ravnborg.org>, Johan Hovold <johan@kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Michal Marek <michal.lkml@markovi.net>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] kbuild: clarify the difference between obj-y and obj-m w.r.t. descending
Date: Thu, 19 Dec 2019 17:49:15 +0100 [thread overview]
Message-ID: <20191219164915.GS22665@localhost> (raw)
In-Reply-To: <20191219115100.958-1-masahiroy@kernel.org>
On Thu, Dec 19, 2019 at 08:51:00PM +0900, Masahiro Yamada wrote:
> 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, so built-in objects
> are linked into vmlinux eventually. This works properly only when the
> Makefile that specifies 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>
Looks good! Thanks for fixing this.
Reviewed-by: Johan Hovold <johan@kernel.org>
> ---
>
> Documentation/kbuild/makefiles.rst | 16 +++++++++++++---
> 1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/kbuild/makefiles.rst b/Documentation/kbuild/makefiles.rst
> index b9b50553bfc5..d7e6534a8505 100644
> --- a/Documentation/kbuild/makefiles.rst
> +++ b/Documentation/kbuild/makefiles.rst
> @@ -297,9 +297,19 @@ more details, with real examples.
> If CONFIG_EXT2_FS is set to either 'y' (built-in) or 'm' (modular)
> the corresponding obj- variable will be set, and kbuild will descend
> down in the ext2 directory.
> - Kbuild only uses this information to decide that it needs to visit
> - the directory, it is the Makefile in the subdirectory that
> - specifies what is modular and what is built-in.
> +
> + Kbuild uses this information not only to decide that it needs to visit
> + the directory, but also to decide whether or not to link objects from
> + the directory into vmlinux.
> +
> + When Kbuild descends into the directory with 'y', all built-in objects
> + from that directory are combined into the built-in.a, which will be
> + eventually linked into vmlinux.
> +
> + When Kbuild descends into the directory with 'm', in contrast, nothing
> + from that directory will be linked into vmlinux. If the Makefile in
> + that directory specifies obj-y, those objects will be left orphan.
> + It is very likely a bug of the Makefile or of dependencies in Kconfig.
>
> It is good practice to use a `CONFIG_` variable when assigning directory
> names. This allows kbuild to totally skip the directory if the
next prev parent reply other threads:[~2019-12-19 16:49 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-19 11:51 [PATCH] kbuild: clarify the difference between obj-y and obj-m w.r.t. descending Masahiro Yamada
2019-12-19 16:49 ` Johan Hovold [this message]
2019-12-21 15:32 ` Masahiro Yamada
2019-12-19 19:53 ` Matthew Wilcox
2019-12-20 16:00 ` Masahiro Yamada
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191219164915.GS22665@localhost \
--to=johan@kernel.org \
--cc=corbet@lwn.net \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=michal.lkml@markovi.net \
--cc=rdunlap@infradead.org \
--cc=sam@ravnborg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.