Re: [PATCH 5/6] kbuild: rust: replace proc macros dependency on `core.o` with the version text

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux