]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rust: kbuild: add proc macro library support
authorMiguel Ojeda <ojeda@kernel.org>
Mon, 24 Nov 2025 15:18:15 +0000 (16:18 +0100)
committerMiguel Ojeda <ojeda@kernel.org>
Mon, 24 Nov 2025 16:15:36 +0000 (17:15 +0100)
Add the proc macro library rule that produces `.rlib` files to be used
by proc macros such as the `macros` crate.

Reviewed-by: Gary Guo <gary@garyguo.net>
Tested-by: Gary Guo <gary@garyguo.net>
Tested-by: Jesung Yang <y.j3ms.n@gmail.com>
Link: https://patch.msgid.link/20251124151837.2184382-4-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
.gitignore
rust/Makefile

index 86a1ba0d90353962183b47c0c657ec877e5b2f9f..3a7241c941f5e64fcae1f7df0194ab13f1180f23 100644 (file)
@@ -41,6 +41,7 @@
 *.o.*
 *.patch
 *.pyc
+*.rlib
 *.rmeta
 *.rpm
 *.rsi
index 9967f3457d44cfebd1d60c1f73b07b17811f644f..45ef84513b6c349e9b95406a81897e8e1995dc28 100644 (file)
@@ -421,6 +421,16 @@ $(obj)/exports_bindings_generated.h: $(obj)/bindings.o FORCE
 $(obj)/exports_kernel_generated.h: $(obj)/kernel.o FORCE
        $(call if_changed,exports)
 
+quiet_cmd_rustc_procmacrolibrary = $(RUSTC_OR_CLIPPY_QUIET) PL $@
+      cmd_rustc_procmacrolibrary = \
+       $(if $(skip_clippy),$(RUSTC),$(RUSTC_OR_CLIPPY)) \
+               $(filter-out $(skip_flags),$(rust_common_flags) $(rustc_target_flags)) \
+               --emit=dep-info,link --crate-type rlib -O \
+               --out-dir $(objtree)/$(obj) -L$(objtree)/$(obj) \
+               --crate-name $(patsubst lib%.rlib,%,$(notdir $@)) $<; \
+       mv $(objtree)/$(obj)/$(patsubst lib%.rlib,%,$(notdir $@)).d $(depfile); \
+       sed -i '/^\#/d' $(depfile)
+
 quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@
       cmd_rustc_procmacro = \
        $(RUSTC_OR_CLIPPY) $(rust_common_flags) $(rustc_target_flags) \