Commit 99bade34 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull rust fixes from Miguel Ojeda:

 - Workaround 'rustdoc' target modifiers bug in Rust >= 1.88.0. It will
   be fixed in Rust 1.90.0 (expected 2025-09-18).

 - Clean 'rustdoc' output before running it to avoid confusing the tool
   when files from previous versions remain.

* tag 'rust-fixes-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ojeda/linux:
  rust: kbuild: clean output before running `rustdoc`
  rust: workaround `rustdoc` target modifiers bug
parents 90d970ca 252fea13
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -65,6 +65,10 @@ core-cfgs = \

core-edition := $(if $(call rustc-min-version,108700),2024,2021)

# `rustdoc` did not save the target modifiers, thus workaround for
# the time being (https://github.com/rust-lang/rust/issues/144521).
rustdoc_modifiers_workaround := $(if $(call rustc-min-version,108800),-Cunsafe-allow-abi-mismatch=fixed-x18)

# `rustc` recognizes `--remap-path-prefix` since 1.26.0, but `rustdoc` only
# since Rust 1.81.0. Moreover, `rustdoc` ICEs on out-of-tree builds since Rust
# 1.82.0 (https://github.com/rust-lang/rust/issues/138520). Thus workaround both
@@ -77,6 +81,7 @@ quiet_cmd_rustdoc = RUSTDOC $(if $(rustdoc_host),H, ) $<
		-Zunstable-options --generate-link-to-definition \
		--output $(rustdoc_output) \
		--crate-name $(subst rustdoc-,,$@) \
		$(rustdoc_modifiers_workaround) \
		$(if $(rustdoc_host),,--sysroot=/dev/null) \
		@$(objtree)/include/generated/rustc_cfg $<

@@ -106,14 +111,14 @@ rustdoc: rustdoc-core rustdoc-macros rustdoc-compiler_builtins \
rustdoc-macros: private rustdoc_host = yes
rustdoc-macros: private rustc_target_flags = --crate-type proc-macro \
    --extern proc_macro
rustdoc-macros: $(src)/macros/lib.rs FORCE
rustdoc-macros: $(src)/macros/lib.rs rustdoc-clean FORCE
	+$(call if_changed,rustdoc)

# Starting with Rust 1.82.0, skipping `-Wrustdoc::unescaped_backticks` should
# not be needed -- see https://github.com/rust-lang/rust/pull/128307.
rustdoc-core: private skip_flags = --edition=2021 -Wrustdoc::unescaped_backticks
rustdoc-core: private rustc_target_flags = --edition=$(core-edition) $(core-cfgs)
rustdoc-core: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
rustdoc-core: $(RUST_LIB_SRC)/core/src/lib.rs rustdoc-clean FORCE
	+$(call if_changed,rustdoc)

rustdoc-compiler_builtins: $(src)/compiler_builtins.rs rustdoc-core FORCE
@@ -125,7 +130,8 @@ rustdoc-ffi: $(src)/ffi.rs rustdoc-core FORCE
rustdoc-pin_init_internal: private rustdoc_host = yes
rustdoc-pin_init_internal: private rustc_target_flags = --cfg kernel \
    --extern proc_macro --crate-type proc-macro
rustdoc-pin_init_internal: $(src)/pin-init/internal/src/lib.rs FORCE
rustdoc-pin_init_internal: $(src)/pin-init/internal/src/lib.rs \
    rustdoc-clean FORCE
	+$(call if_changed,rustdoc)

rustdoc-pin_init: private rustdoc_host = yes
@@ -143,6 +149,9 @@ rustdoc-kernel: $(src)/kernel/lib.rs rustdoc-core rustdoc-ffi rustdoc-macros \
    $(obj)/bindings.o FORCE
	+$(call if_changed,rustdoc)

rustdoc-clean: FORCE
	$(Q)rm -rf $(rustdoc_output)

quiet_cmd_rustc_test_library = $(RUSTC_OR_CLIPPY_QUIET) TL $<
      cmd_rustc_test_library = \
	OBJTREE=$(abspath $(objtree)) \
@@ -215,6 +224,7 @@ quiet_cmd_rustdoc_test_kernel = RUSTDOC TK $<
		--extern bindings --extern uapi \
		--no-run --crate-name kernel -Zunstable-options \
		--sysroot=/dev/null \
		$(rustdoc_modifiers_workaround) \
		--test-builder $(objtree)/scripts/rustdoc_test_builder \
		$< $(rustdoc_test_kernel_quiet); \
	$(objtree)/scripts/rustdoc_test_gen