Hi Brendan, On Thu, May 16, 2024 at 07:40:53PM +0000, Brendan Jackman wrote: > compile_commands.json is used by clangd[1] to provide code navigation > and completion functionality to editors. See [2] for an example > configuration that includes this functionality for VSCode. > > It can currently be built manually when using kunit.py, by running: > > ./scripts/clang-tools/gen_compile_commands.py -d .kunit > > With this change however, it's built automatically so you don't need to > manually keep it up to date. > > Unlike the manual approach, having make build the compile_commands.json > means that it appears in the build output tree instead of at the root of > the source tree, so you'll need to add --compile-commands-dir=.kunit to > your clangd args for it to be found. This might turn out to be pretty > annoying, I'm not sure yet. If so maybe we can later add some hackery to > kunit.py to work around it. > > [1] https://clangd.llvm.org/ > [2] https://github.com/FlorentRevest/linux-kernel-vscode > > Signed-off-by: Brendan Jackman <jackmanb@xxxxxxxxxx> This makes sense to do automatically in my opinion, as Python will already be available (which is the only dependency of gen_compile_commands.py as far as I am aware) and it should not take that long to generate. Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx> > --- > tools/testing/kunit/kunit_kernel.py | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/kunit/kunit_kernel.py b/tools/testing/kunit/kunit_kernel.py > index 7254c110ff23..61931c4926fd 100644 > --- a/tools/testing/kunit/kunit_kernel.py > +++ b/tools/testing/kunit/kunit_kernel.py > @@ -72,7 +72,8 @@ class LinuxSourceTreeOperations: > raise ConfigError(e.output.decode()) > > def make(self, jobs: int, build_dir: str, make_options: Optional[List[str]]) -> None: > - command = ['make', 'ARCH=' + self._linux_arch, 'O=' + build_dir, '--jobs=' + str(jobs)] > + command = ['make', 'all', 'compile_commands.json', 'ARCH=' + self._linux_arch, > + 'O=' + build_dir, '--jobs=' + str(jobs)] > if make_options: > command.extend(make_options) > if self._cross_compile: > > --- > base-commit: 3c999d1ae3c75991902a1a7dad0cb62c2a3008b4 > change-id: 20240516-kunit-compile-commands-d994074fc2be > > Best regards, > -- > Brendan Jackman <jackmanb@xxxxxxxxxx> > >