diff --git a/rust/Makefile b/rust/Makefile index cb2f8f80a8e0aa..f03fbdf31999d8 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -13,10 +13,18 @@ obj-$(CONFIG_RUST) += exports.o RUSTDOC = rustdoc +quiet_cmd_rustdoc_host = RUSTDOC $< + cmd_rustdoc_host = \ + RUST_BINDINGS_FILE=$(abspath $(objtree)/rust/bindings_generated.rs) \ + $(RUSTDOC) $(filter-out --emit=%, $(rustc_flags)) \ + $(rustdoc_target_flags) -L $(objtree)/rust/ \ + --output $(objtree)/rust/doc --crate-name $(subst rustdoc-,,$@) \ + -Fmissing-docs @$(objtree)/include/generated/rustc_cfg $< + quiet_cmd_rustdoc = RUSTDOC $< cmd_rustdoc = \ RUST_BINDINGS_FILE=$(abspath $(objtree)/rust/bindings_generated.rs) \ - $(RUSTDOC) $(filter-out --emit=%, $(rustc_flags)) \ + $(RUSTDOC) $(rustc_cross_flags) $(filter-out --emit=%, $(rustc_flags)) \ $(rustdoc_target_flags) -L $(objtree)/rust/ \ --output $(objtree)/rust/doc --crate-name $(subst rustdoc-,,$@) \ -Fmissing-docs @$(objtree)/include/generated/rustc_cfg $< @@ -26,7 +34,7 @@ rustdoc: rustdoc-module rustdoc-compiler_builtins rustdoc-kernel rustdoc-module: private rustdoc_target_flags = --crate-type proc-macro \ --extern proc_macro rustdoc-module: $(srctree)/rust/module.rs FORCE - $(call if_changed,rustdoc) + $(call if_changed,rustdoc_host) rustdoc-compiler_builtins: $(srctree)/rust/compiler_builtins.rs FORCE $(call if_changed,rustdoc) diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 552dce171d7a37..ed8011d5b30b05 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -291,7 +291,9 @@ $(obj)/%.lst: $(src)/%.c FORCE # Compile Rust sources (.rs) # --------------------------------------------------------------------------- -rustc_cross_flags := --target=$(KBUILD_RUSTC_TARGET) +# Need to use absolute path here and have symbolic links resolved; +# otherwise rustdoc and rustc compute different hashes for the target. +rustc_cross_flags := --target=$(realpath $(KBUILD_RUSTC_TARGET)) quiet_cmd_rustc_o_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@ cmd_rustc_o_rs = \