mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
rust: zerocopy-derive: enable support in kbuild
With all the new files in place and ready from the new crate, enable the support for it in the build system. In addition, skip formatting for this vendored crate. Link: https://patch.msgid.link/20260608141439.182634-18-ojeda@kernel.org Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
parent
ca06116d62
commit
5060549804
1
Makefile
1
Makefile
|
|
@ -1957,6 +1957,7 @@ rustfmt:
|
||||||
-o -path $(srctree)/rust/quote \
|
-o -path $(srctree)/rust/quote \
|
||||||
-o -path $(srctree)/rust/syn \
|
-o -path $(srctree)/rust/syn \
|
||||||
-o -path $(srctree)/rust/zerocopy \
|
-o -path $(srctree)/rust/zerocopy \
|
||||||
|
-o -path $(srctree)/rust/zerocopy-derive \
|
||||||
\) -prune -o \
|
\) -prune -o \
|
||||||
-type f -a -name '*.rs' -a ! -name '*generated*' -print \
|
-type f -a -name '*.rs' -a ! -name '*generated*' -print \
|
||||||
| xargs $(RUSTFMT) $(rustfmt_flags)
|
| xargs $(RUSTFMT) $(rustfmt_flags)
|
||||||
|
|
|
||||||
|
|
@ -52,10 +52,11 @@ ifdef CONFIG_RUST
|
||||||
procmacro-name = $(shell MAKEFLAGS= $(RUSTC) --print file-names --crate-name $(1) --crate-type proc-macro - </dev/null)
|
procmacro-name = $(shell MAKEFLAGS= $(RUSTC) --print file-names --crate-name $(1) --crate-type proc-macro - </dev/null)
|
||||||
procmacro-extension := $(patsubst libname.%,%,$(call procmacro-name,name))
|
procmacro-extension := $(patsubst libname.%,%,$(call procmacro-name,name))
|
||||||
|
|
||||||
|
libzerocopy_derive_name := $(call procmacro-name,zerocopy_derive)
|
||||||
libmacros_name := $(call procmacro-name,macros)
|
libmacros_name := $(call procmacro-name,macros)
|
||||||
libpin_init_internal_name := $(call procmacro-name,pin_init_internal)
|
libpin_init_internal_name := $(call procmacro-name,pin_init_internal)
|
||||||
|
|
||||||
always-$(CONFIG_RUST) += $(libmacros_name) $(libpin_init_internal_name)
|
always-$(CONFIG_RUST) += $(libzerocopy_derive_name) $(libmacros_name) $(libpin_init_internal_name)
|
||||||
|
|
||||||
# `$(rust_flags)` is passed in case the user added `--sysroot`.
|
# `$(rust_flags)` is passed in case the user added `--sysroot`.
|
||||||
rustc_sysroot := $(shell MAKEFLAGS= $(RUSTC) $(rust_flags) --print sysroot)
|
rustc_sysroot := $(shell MAKEFLAGS= $(RUSTC) $(rust_flags) --print sysroot)
|
||||||
|
|
@ -126,6 +127,12 @@ syn-flags := \
|
||||||
--extern quote \
|
--extern quote \
|
||||||
$(call cfgs-to-flags,$(syn-cfgs))
|
$(call cfgs-to-flags,$(syn-cfgs))
|
||||||
|
|
||||||
|
zerocopy_derive-flags := \
|
||||||
|
--cap-lints=allow \
|
||||||
|
--extern proc_macro2 \
|
||||||
|
--extern quote \
|
||||||
|
--extern syn
|
||||||
|
|
||||||
pin_init_internal-cfgs := \
|
pin_init_internal-cfgs := \
|
||||||
kernel USE_RUSTC_FEATURES
|
kernel USE_RUSTC_FEATURES
|
||||||
|
|
||||||
|
|
@ -175,7 +182,7 @@ quiet_cmd_rustdoc = RUSTDOC $(if $(rustdoc_host),H, ) $<
|
||||||
# command-like flags to solve the issue. Meanwhile, we use the non-custom case
|
# command-like flags to solve the issue. Meanwhile, we use the non-custom case
|
||||||
# and then retouch the generated files.
|
# and then retouch the generated files.
|
||||||
rustdoc: rustdoc-core rustdoc-macros rustdoc-compiler_builtins \
|
rustdoc: rustdoc-core rustdoc-macros rustdoc-compiler_builtins \
|
||||||
rustdoc-kernel rustdoc-pin_init rustdoc-zerocopy
|
rustdoc-kernel rustdoc-pin_init rustdoc-zerocopy rustdoc-zerocopy_derive
|
||||||
$(Q)grep -Ehro '<a href="srctree/([^"]+)"' $(rustdoc_output) | \
|
$(Q)grep -Ehro '<a href="srctree/([^"]+)"' $(rustdoc_output) | \
|
||||||
cut -d'"' -f2 | cut -d/ -f2- | while read f; do \
|
cut -d'"' -f2 | cut -d/ -f2- | while read f; do \
|
||||||
if [ ! -e "$(srctree)/$$f" ]; then \
|
if [ ! -e "$(srctree)/$$f" ]; then \
|
||||||
|
|
@ -208,6 +215,12 @@ rustdoc-syn: private rustc_target_flags = $(syn-flags)
|
||||||
rustdoc-syn: $(src)/syn/lib.rs rustdoc-clean rustdoc-quote FORCE
|
rustdoc-syn: $(src)/syn/lib.rs rustdoc-clean rustdoc-quote FORCE
|
||||||
+$(call if_changed,rustdoc)
|
+$(call if_changed,rustdoc)
|
||||||
|
|
||||||
|
rustdoc-zerocopy_derive: private rustdoc_host = yes
|
||||||
|
rustdoc-zerocopy_derive: private rustc_target_flags = $(zerocopy_derive-flags) \
|
||||||
|
--extern proc_macro --crate-type proc-macro
|
||||||
|
rustdoc-zerocopy_derive: $(src)/zerocopy-derive/lib.rs rustdoc-clean rustdoc-syn FORCE
|
||||||
|
+$(call if_changed,rustdoc)
|
||||||
|
|
||||||
rustdoc-macros: private rustdoc_host = yes
|
rustdoc-macros: private rustdoc_host = yes
|
||||||
rustdoc-macros: private rustc_target_flags = --crate-type proc-macro \
|
rustdoc-macros: private rustc_target_flags = --crate-type proc-macro \
|
||||||
--extern proc_macro --extern proc_macro2 --extern quote --extern syn
|
--extern proc_macro --extern proc_macro2 --extern quote --extern syn
|
||||||
|
|
@ -256,7 +269,7 @@ rustdoc-kernel: private is-kernel-object := y
|
||||||
rustdoc-kernel: private rustc_target_flags = --extern ffi --extern pin_init \
|
rustdoc-kernel: private rustc_target_flags = --extern ffi --extern pin_init \
|
||||||
--extern build_error --extern macros \
|
--extern build_error --extern macros \
|
||||||
--extern bindings --extern uapi \
|
--extern bindings --extern uapi \
|
||||||
--extern zerocopy
|
--extern zerocopy --extern zerocopy_derive
|
||||||
rustdoc-kernel: $(src)/kernel/lib.rs rustdoc-core rustdoc-ffi rustdoc-macros \
|
rustdoc-kernel: $(src)/kernel/lib.rs rustdoc-core rustdoc-ffi rustdoc-macros \
|
||||||
rustdoc-pin_init rustdoc-compiler_builtins $(obj)/$(libmacros_name) \
|
rustdoc-pin_init rustdoc-compiler_builtins $(obj)/$(libmacros_name) \
|
||||||
$(obj)/bindings.o FORCE
|
$(obj)/bindings.o FORCE
|
||||||
|
|
@ -300,6 +313,12 @@ rusttestlib-syn: private rustc_target_flags = $(syn-flags)
|
||||||
rusttestlib-syn: $(src)/syn/lib.rs rusttestlib-quote FORCE
|
rusttestlib-syn: $(src)/syn/lib.rs rusttestlib-quote FORCE
|
||||||
+$(call if_changed,rustc_test_library)
|
+$(call if_changed,rustc_test_library)
|
||||||
|
|
||||||
|
rusttestlib-zerocopy_derive: private rustc_target_flags = $(zerocopy_derive-flags) \
|
||||||
|
--extern proc_macro
|
||||||
|
rusttestlib-zerocopy_derive: private rustc_test_library_proc = yes
|
||||||
|
rusttestlib-zerocopy_derive: $(src)/zerocopy-derive/lib.rs rusttestlib-syn FORCE
|
||||||
|
+$(call if_changed,rustc_test_library)
|
||||||
|
|
||||||
rusttestlib-macros: private rustc_target_flags = --extern proc_macro \
|
rusttestlib-macros: private rustc_target_flags = --extern proc_macro \
|
||||||
--extern proc_macro2 --extern quote --extern syn
|
--extern proc_macro2 --extern quote --extern syn
|
||||||
rusttestlib-macros: private rustc_test_library_proc = yes
|
rusttestlib-macros: private rustc_test_library_proc = yes
|
||||||
|
|
@ -322,10 +341,10 @@ rusttestlib-pin_init: $(src)/pin-init/src/lib.rs rusttestlib-macros \
|
||||||
rusttestlib-kernel: private rustc_target_flags = --extern ffi \
|
rusttestlib-kernel: private rustc_target_flags = --extern ffi \
|
||||||
--extern build_error --extern macros --extern pin_init \
|
--extern build_error --extern macros --extern pin_init \
|
||||||
--extern bindings --extern uapi \
|
--extern bindings --extern uapi \
|
||||||
--extern zerocopy
|
--extern zerocopy --extern zerocopy_derive
|
||||||
rusttestlib-kernel: $(src)/kernel/lib.rs rusttestlib-bindings rusttestlib-uapi \
|
rusttestlib-kernel: $(src)/kernel/lib.rs rusttestlib-bindings rusttestlib-uapi \
|
||||||
rusttestlib-build_error rusttestlib-pin_init $(obj)/$(libmacros_name) \
|
rusttestlib-build_error rusttestlib-pin_init $(obj)/$(libmacros_name) \
|
||||||
$(obj)/bindings.o rusttestlib-zerocopy FORCE
|
$(obj)/bindings.o rusttestlib-zerocopy rusttestlib-zerocopy_derive FORCE
|
||||||
+$(call if_changed,rustc_test_library)
|
+$(call if_changed,rustc_test_library)
|
||||||
|
|
||||||
rusttestlib-bindings: private rustc_target_flags = --extern ffi --extern pin_init
|
rusttestlib-bindings: private rustc_target_flags = --extern ffi --extern pin_init
|
||||||
|
|
@ -359,7 +378,7 @@ quiet_cmd_rustdoc_test_kernel = RUSTDOC TK $<
|
||||||
-L$(objtree)/$(obj) --extern ffi --extern pin_init \
|
-L$(objtree)/$(obj) --extern ffi --extern pin_init \
|
||||||
--extern kernel --extern build_error --extern macros \
|
--extern kernel --extern build_error --extern macros \
|
||||||
--extern bindings --extern uapi \
|
--extern bindings --extern uapi \
|
||||||
--extern zerocopy \
|
--extern zerocopy --extern zerocopy_derive \
|
||||||
--no-run --crate-name kernel -Zunstable-options \
|
--no-run --crate-name kernel -Zunstable-options \
|
||||||
--sysroot=/dev/null \
|
--sysroot=/dev/null \
|
||||||
$(doctests_modifiers_workaround) \
|
$(doctests_modifiers_workaround) \
|
||||||
|
|
@ -582,6 +601,12 @@ quiet_cmd_rustc_procmacro = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET))
|
||||||
@$(objtree)/include/generated/rustc_cfg $<
|
@$(objtree)/include/generated/rustc_cfg $<
|
||||||
|
|
||||||
# Procedural macros can only be used with the `rustc` that compiled it.
|
# Procedural macros can only be used with the `rustc` that compiled it.
|
||||||
|
$(obj)/$(libzerocopy_derive_name): private skip_clippy = 1
|
||||||
|
$(obj)/$(libzerocopy_derive_name): private rustc_target_flags = $(zerocopy_derive-flags)
|
||||||
|
$(obj)/$(libzerocopy_derive_name): $(src)/zerocopy-derive/lib.rs $(obj)/libproc_macro2.rlib \
|
||||||
|
$(obj)/libquote.rlib $(obj)/libsyn.rlib FORCE
|
||||||
|
+$(call if_changed_dep,rustc_procmacro)
|
||||||
|
|
||||||
$(obj)/$(libmacros_name): private rustc_target_flags = \
|
$(obj)/$(libmacros_name): private rustc_target_flags = \
|
||||||
--extern proc_macro2 --extern quote --extern syn
|
--extern proc_macro2 --extern quote --extern syn
|
||||||
$(obj)/$(libmacros_name): $(src)/macros/lib.rs $(obj)/libproc_macro2.rlib \
|
$(obj)/$(libmacros_name): $(src)/macros/lib.rs $(obj)/libproc_macro2.rlib \
|
||||||
|
|
@ -737,10 +762,10 @@ $(obj)/uapi.o: $(src)/uapi/lib.rs \
|
||||||
|
|
||||||
$(obj)/kernel.o: private rustc_target_flags = --extern ffi --extern pin_init \
|
$(obj)/kernel.o: private rustc_target_flags = --extern ffi --extern pin_init \
|
||||||
--extern build_error --extern macros --extern bindings --extern uapi \
|
--extern build_error --extern macros --extern bindings --extern uapi \
|
||||||
--extern zerocopy
|
--extern zerocopy --extern zerocopy_derive
|
||||||
$(obj)/kernel.o: $(src)/kernel/lib.rs $(obj)/build_error.o $(obj)/pin_init.o \
|
$(obj)/kernel.o: $(src)/kernel/lib.rs $(obj)/build_error.o $(obj)/pin_init.o \
|
||||||
$(obj)/$(libmacros_name) $(obj)/bindings.o $(obj)/uapi.o \
|
$(obj)/$(libmacros_name) $(obj)/bindings.o $(obj)/uapi.o \
|
||||||
$(obj)/zerocopy.o FORCE
|
$(obj)/zerocopy.o $(obj)/$(libzerocopy_derive_name) FORCE
|
||||||
+$(call if_changed_rule,rustc_library)
|
+$(call if_changed_rule,rustc_library)
|
||||||
|
|
||||||
ifdef CONFIG_JUMP_LABEL
|
ifdef CONFIG_JUMP_LABEL
|
||||||
|
|
|
||||||
|
|
@ -329,7 +329,7 @@ rust_common_cmd = \
|
||||||
-Zcrate-attr=no_std \
|
-Zcrate-attr=no_std \
|
||||||
-Zcrate-attr='feature($(rust_allowed_features))' \
|
-Zcrate-attr='feature($(rust_allowed_features))' \
|
||||||
-Zunstable-options --extern pin_init --extern kernel \
|
-Zunstable-options --extern pin_init --extern kernel \
|
||||||
--extern zerocopy \
|
--extern zerocopy --extern zerocopy_derive \
|
||||||
--crate-type rlib -L $(objtree)/rust/ \
|
--crate-type rlib -L $(objtree)/rust/ \
|
||||||
--sysroot=/dev/null \
|
--sysroot=/dev/null \
|
||||||
--out-dir $(dir $@) --emit=dep-info=$(depfile)
|
--out-dir $(dir $@) --emit=dep-info=$(depfile)
|
||||||
|
|
|
||||||
|
|
@ -252,6 +252,12 @@ def generate_crates(
|
||||||
[std, proc_macro, proc_macro2, quote, syn],
|
[std, proc_macro, proc_macro2, quote, syn],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
zerocopy_derive = append_proc_macro_crate(
|
||||||
|
"zerocopy_derive",
|
||||||
|
srctree / "rust" / "zerocopy-derive" / "lib.rs",
|
||||||
|
[std, proc_macro, proc_macro2, quote, syn],
|
||||||
|
)
|
||||||
|
|
||||||
build_error = append_crate(
|
build_error = append_crate(
|
||||||
"build_error",
|
"build_error",
|
||||||
srctree / "rust" / "build_error.rs",
|
srctree / "rust" / "build_error.rs",
|
||||||
|
|
@ -310,7 +316,7 @@ def generate_crates(
|
||||||
bindings = append_crate_with_generated("bindings", [core, ffi, pin_init])
|
bindings = append_crate_with_generated("bindings", [core, ffi, pin_init])
|
||||||
uapi = append_crate_with_generated("uapi", [core, ffi, pin_init])
|
uapi = append_crate_with_generated("uapi", [core, ffi, pin_init])
|
||||||
kernel = append_crate_with_generated(
|
kernel = append_crate_with_generated(
|
||||||
"kernel", [core, macros, build_error, pin_init, ffi, bindings, uapi, zerocopy]
|
"kernel", [core, macros, build_error, pin_init, ffi, bindings, uapi, zerocopy, zerocopy_derive]
|
||||||
)
|
)
|
||||||
|
|
||||||
scripts = srctree / "scripts"
|
scripts = srctree / "scripts"
|
||||||
|
|
@ -355,7 +361,7 @@ def generate_crates(
|
||||||
append_crate(
|
append_crate(
|
||||||
crate_name,
|
crate_name,
|
||||||
path,
|
path,
|
||||||
[core, kernel, pin_init, zerocopy],
|
[core, kernel, pin_init, zerocopy, zerocopy_derive],
|
||||||
cfg=generated_cfg,
|
cfg=generated_cfg,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user