1) Provide a more self-explanatory error message for the "Rust not available" case. Without this patch, if Rust is not set up properly (which happens a lot, seeing as how one must routinely run "rustup override ..." with each new kernel release), the "make rust-analyzer" invocation generates a somewhat confusing message: "No rule to make target 'rust-analyzer" This is confusing at first, because there is, in fact, a rust-analyzer build target. It's just not set up to handle errors gracefully. Instead of inflicting that on the developer, just print that Rust is not available, with a blank line above and below, so it doesn't get lost in the noise. Now the error case looks like this: $ make rust-analyzer Rust is not available make[1]: *** [/kernel_work/linux-github/Makefile:1975: rust-analyzer] Error 1 make: *** [Makefile:240: __sub-make] Error 2 2) As long as I'm there, also add some documentation about what rust-analyzer provides. Signed-off-by: John Hubbard <jhubbard@xxxxxxxxxx> --- Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f975b6396328..aca2c96820aa 100644 --- a/Makefile +++ b/Makefile @@ -1967,9 +1967,13 @@ quiet_cmd_tags = GEN $@ tags TAGS cscope gtags: FORCE $(call cmd,tags) -# IDE support targets +# Generate rust-project.json, which does for Rust what clangd's +# compile_commands.json does for C/C++: provides a browsing database for code +# editors and IDEs. PHONY += rust-analyzer rust-analyzer: + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh 2>/dev/null || \ + { echo; echo "Rust is not available"; echo; false; } $(Q)$(MAKE) $(build)=rust $@ # Script to generate missing namespace dependencies base-commit: b050496579632f86ee1ef7e7501906db579f3457 -- 2.45.1