On Fri, Aug 9, 2024 at 7:12 AM Miguel Ojeda <ojeda@xxxxxxxxxx> wrote: > > 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. > > Signed-off-by: Miguel Ojeda <ojeda@xxxxxxxxxx> > --- > rust/Makefile | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/rust/Makefile b/rust/Makefile > index 966743a9ee25..40c8d2c57024 100644 > --- a/rust/Makefile > +++ b/rust/Makefile > @@ -329,9 +329,8 @@ quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@ > --crate-name $(patsubst lib%.so,%,$(notdir $@)) $< > > # Procedural macros can only be used with the `rustc` that compiled it. > -# Therefore, to get `libmacros.so` automatically recompiled when the compiler > -# version changes, we add `core.o` as a dependency (even if it is not needed). > -$(obj)/libmacros.so: $(src)/macros/lib.rs $(obj)/core.o FORCE > +$(obj)/libmacros.so: $(src)/macros/lib.rs \ > + $(wildcard $(objtree)/include/config/RUSTC_VERSION_TEXT) FORCE > +$(call if_changed_dep,rustc_procmacro) The touched file, include/config/*, is an implementation detail in Kconfig and fixdep. Rather, I'd like to put the string "CONFIG_RUST_VERSION_TEXT" in the comment of the source file. This is the idea adopted in include/linux/compiler-version.h diff --git a/rust/macros/lib.rs b/rust/macros/lib.rs index 5be0cb9db3ee..91be2112ceee 100644 --- a/rust/macros/lib.rs +++ b/rust/macros/lib.rs @@ -2,6 +2,10 @@ //! Crate for all kernel procedural macros. +// When fixdep scans this, it will find this string "CONFIG_RUSTC_VERSION_TEXT" +// and add dependency on include/config/RUSTC_VERSION_TEXT, which is touched +// by Kconfig when the version string from the compiler changes. + #[macro_use] mod quote; mod concat_idents; I do not know how to do it for rust/core.o because there is no in-tree source file. But, can we add rust/core.rs, from which rustlib/src/rust/library/core/src/macros/mod.rs is imported? > > quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L $@ > -- > 2.46.0 > > -- Best Regards Masahiro Yamada