diff mbox series

kernel.bbclass: generate compile_commands.json

Message ID 20250802140649.18734-1-anakin@childerhose.ca
State New
Headers show
Series kernel.bbclass: generate compile_commands.json | expand

Commit Message

Anakin Childerhose Aug. 2, 2025, 2:06 p.m. UTC
Add do_generate_compile_commands() task after compiling to have the
clangd language server be configured correctly for the kernel by
default.

Signed-off-by: Anakin Childerhose <anakin@childerhose.ca>

Upstream-Status: Pending
---
 meta/classes-recipe/kernel.bbclass | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

--
2.50.1

Comments

Bruce Ashfield Aug. 3, 2025, 1:37 a.m. UTC | #1
On Sat, Aug 2, 2025 at 11:06 AM Anakin Childerhose via
lists.openembedded.org <anakin=childerhose.ca@lists.openembedded.org> wrote:

> Add do_generate_compile_commands() task after compiling to have the
> clangd language server be configured correctly for the kernel by
> default.
>
> Signed-off-by: Anakin Childerhose <anakin@childerhose.ca>
>
> Upstream-Status: Pending
>

What part of this is pending upstream ?



> ---
>  meta/classes-recipe/kernel.bbclass | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/meta/classes-recipe/kernel.bbclass
> b/meta/classes-recipe/kernel.bbclass
> index eb03424dfc..ef7f00e6dc 100644
> --- a/meta/classes-recipe/kernel.bbclass
> +++ b/meta/classes-recipe/kernel.bbclass
> @@ -464,6 +464,20 @@ do_compile_kernelmodules() {
>  }
>  addtask compile_kernelmodules after do_compile before do_strip
>
> +do_generate_compile_commands[doc] = "Generate compile_commands.json for
> the clangd language server"
> +do_generate_compile_commands() {
> +       if ! [ -f "${S}/scripts/clang-tools/gen_compile_commands.py" ];
> then
> +               bbwarn "no gen_compile_commands.py script, cannot generate
> compile_commands.json"
>

What if I have no interest in clang, I wouldn't want this to warn if for
some reason my kernel doesn't have this support.

To me, this should be something that is opt-in via a distro feature (or
similar).

Bruce



> +               return
> +       fi
> +
> +       cd ${B} && ${S}/scripts/clang-tools/gen_compile_commands.py \
> +               --output "${S}/compile_commands.json" || {
> +                       bbwarn "failed to generate compile_commands.json"
> +       }
> +}
> +addtask generate_compile_commands after do_compile_kernelmodules
> +
>  kernel_do_install() {
>         #
>         # First install the modules
> --
> 2.50.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#221383):
> https://lists.openembedded.org/g/openembedded-core/message/221383
> Mute This Topic: https://lists.openembedded.org/mt/114501421/1050810
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> bruce.ashfield@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
diff mbox series

Patch

diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass
index eb03424dfc..ef7f00e6dc 100644
--- a/meta/classes-recipe/kernel.bbclass
+++ b/meta/classes-recipe/kernel.bbclass
@@ -464,6 +464,20 @@  do_compile_kernelmodules() {
 }
 addtask compile_kernelmodules after do_compile before do_strip

+do_generate_compile_commands[doc] = "Generate compile_commands.json for the clangd language server"
+do_generate_compile_commands() {
+	if ! [ -f "${S}/scripts/clang-tools/gen_compile_commands.py" ]; then
+		bbwarn "no gen_compile_commands.py script, cannot generate compile_commands.json"
+		return
+	fi
+
+	cd ${B} && ${S}/scripts/clang-tools/gen_compile_commands.py \
+		--output "${S}/compile_commands.json" || {
+			bbwarn "failed to generate compile_commands.json"
+	}
+}
+addtask generate_compile_commands after do_compile_kernelmodules
+
 kernel_do_install() {
 	#
 	# First install the modules