Skip to content

Commit aeb0e24

Browse files
committed
kbuild: rust: replace proc macros dependency on core.o with the version text
With the `RUSTC_VERSION_TEXT` rebuild support in place, now proc macros can depend on that instead of `core.o`. This means that both the `core` and `macros` crates can be built in parallel, and that touching `core.o` does not trigger a rebuild of the proc macros. This could be accomplished using the same approach as for `core` (i.e. depending directly on `include/config/RUSTC_VERSION_TEXT`). However, that is considered an implementation detail [1], and thus it is best to avoid it. Instead, let fixdep find a string that we explicitly write down in the source code for this purpose (like it is done for `include/linux/compiler-version.h`), which we can easily do (unlike for `core`) since this is our own source code. Suggested-by: Masahiro Yamada <[email protected]> Link: https://lore.kernel.org/rust-for-linux/CAK7LNAQBG0nDupXSgAAk-6nOqeqGVkr3H1RjYaqRJ1OxmLm6xA@mail.gmail.com/ [1] Reviewed-by: Nicolas Schier <[email protected]> Tested-by: Alice Ryhl <[email protected]> Acked-by: Masahiro Yamada <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Miguel Ojeda <[email protected]>
1 parent ac3e972 commit aeb0e24

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

rust/Makefile

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,9 +342,7 @@ quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@
342342
--crate-name $(patsubst lib%.so,%,$(notdir $@)) $<
343343

344344
# Procedural macros can only be used with the `rustc` that compiled it.
345-
# Therefore, to get `libmacros.so` automatically recompiled when the compiler
346-
# version changes, we add `core.o` as a dependency (even if it is not needed).
347-
$(obj)/libmacros.so: $(src)/macros/lib.rs $(obj)/core.o FORCE
345+
$(obj)/libmacros.so: $(src)/macros/lib.rs FORCE
348346
+$(call if_changed_dep,rustc_procmacro)
349347

350348
quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L $@

rust/macros/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
//! Crate for all kernel procedural macros.
44
5+
// When fixdep scans this, it will find this string `CONFIG_RUSTC_VERSION_TEXT`
6+
// and thus add a dependency on `include/config/RUSTC_VERSION_TEXT`, which is
7+
// touched by Kconfig when the version string from the compiler changes.
8+
59
#[macro_use]
610
mod quote;
711
mod concat_idents;

0 commit comments

Comments
 (0)