[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e09dce93d521a89e3820a91e7c319d680cae203f.camel@pbarker.dev>
Date: Fri, 05 Sep 2025 18:26:32 +0100
From: Paul Barker <paul@...rker.dev>
To: Justin Stitt <justinstitt@...gle.com>
Cc: Nathan Chancellor <nathan@...nel.org>, Nicolas Schier
<nicolas.schier@...ux.dev>, Nick Desaulniers
<nick.desaulniers+lkml@...il.com>, Bill Wendling <morbo@...gle.com>,
llvm@...ts.linux.dev, linux-kbuild@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] gen_compile_commands: Look in KBUILD_OUTPUT if set
On Fri, 2025-09-05 at 09:34 -0700, Justin Stitt wrote:
> Hi,
>
> 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@...rker.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
`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.
For my case I'm just symlinking the relevant files back in to the source tree
after building so that clangd and rust-analyzer can find them.
Thanks for testing!
--
Paul Barker
Download attachment "signature.asc" of type "application/pgp-signature" (253 bytes)
Powered by blists - more mailing lists