From: Nathan Chancellor <nathan@kernel.org>
To: Paul Barker <paul@pbarker.dev>
Cc: Justin Stitt <justinstitt@google.com>,
Nicolas Schier <nicolas.schier@linux.dev>,
Nick Desaulniers <nick.desaulniers+lkml@gmail.com>,
Bill Wendling <morbo@google.com>,
llvm@lists.linux.dev, linux-kbuild@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] gen_compile_commands: Look in KBUILD_OUTPUT if set
Date: Fri, 5 Sep 2025 11:02:56 -0700 [thread overview]
Message-ID: <20250905180256.GA319413@ax162> (raw)
In-Reply-To: <e09dce93d521a89e3820a91e7c319d680cae203f.camel@pbarker.dev>
Hi Paul
On Fri, Sep 05, 2025 at 06:26:32PM +0100, Paul Barker wrote:
> On Fri, 2025-09-05 at 09:34 -0700, Justin Stitt wrote:
> > On Fri, Sep 05, 2025 at 11:17:43AM +0100, Paul Barker wrote:
> > > If someone is already using the KBUILD_OUTPUT environment variable to
> > > specify the directory where object files are placed, they shouldn't need
> > > to repeat the same information to gen_compile_commands.py.
> > >
> > > Signed-off-by: Paul Barker <paul@pbarker.dev>
> > > ---
> > > scripts/clang-tools/gen_compile_commands.py | 5 +++--
> > > 1 file changed, 3 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/scripts/clang-tools/gen_compile_commands.py b/scripts/clang-tools/gen_compile_commands.py
> > > index 96e6e46ad1a702cb0fad5d524a9a02d222b236ec..7b94a2ffba0b4d5f1290b51bd602fb3f33acce6a 100755
> > > --- a/scripts/clang-tools/gen_compile_commands.py
> > > +++ b/scripts/clang-tools/gen_compile_commands.py
> > > @@ -39,8 +39,9 @@ def parse_arguments():
> > > parser = argparse.ArgumentParser(description=usage)
> > >
> > > directory_help = ('specify the output directory used for the kernel build '
> > > - '(defaults to the working directory)')
> > > - parser.add_argument('-d', '--directory', type=str, default='.',
> > > + '(defaults to $KBUILD_OUTPUT (if set) or the working directory)')
> > > + parser.add_argument('-d', '--directory', type=str,
> > > + default=os.environ.get('KBUILD_OUTPUT', '.'),
> > > help=directory_help)
> > >
> > > output_help = ('path to the output command database (defaults to ' +
> > >
> >
> > Thinking out loud: It might make sense to also change the default output
> > path in some cases but not in all cases. For my clangd setup in vim, it
> > does some discovery for a compile_commands.json and I have some
> > different ones in various build-* directories -- I guess it'd be cool if
> > they were automatically placed in their appropriate spot. With all that
> > being said probably YAGNI.
>
> I think it makes sense to place the output file in the current directory by
> default if you run gen_compile_commands.py directly.
>
> The `make compile_commands.json` target places it in the output directory, and
Yeah, I think it should be made clearer in the commit message that this
change should only impact people who run the script manually. When it is
generated through the compile_commands.json make target (which is the
preferred way IMO), KBUILD_OUTPUT should already be respected because
gen_compile_commands.py is run with $(objtree) as the current working
directory.
I am fine with the actual contents of the change though, it does not
feel like much of a burden to support this scenario.
> `make rust-analyzer` does the same for the rust-project.json file. I did think
> about whether we should change these, since clangd and rust-analyzer look for
> the relevant files in the source tree or its parent directories. But people may
> be using multiple output directories for different configs or archs, so writing
> the files to the source tree isn't a good default for everyone.
Yeah, I do not think this should be generated in the source tree
unconditionally since those commands are tied to that build directory
due to CONFIG_ options and such.
Cheers,
Nathan
prev parent reply other threads:[~2025-09-05 18:03 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-05 10:17 [PATCH] gen_compile_commands: Look in KBUILD_OUTPUT if set Paul Barker
2025-09-05 16:34 ` Justin Stitt
2025-09-05 17:26 ` Paul Barker
2025-09-05 18:02 ` Nathan Chancellor [this message]
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=20250905180256.GA319413@ax162 \
--to=nathan@kernel.org \
--cc=justinstitt@google.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=morbo@google.com \
--cc=nick.desaulniers+lkml@gmail.com \
--cc=nicolas.schier@linux.dev \
--cc=paul@pbarker.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).