From: Miguel Ojeda <ojeda@kernel.org>
To: Miguel Ojeda <ojeda@kernel.org>,
Alex Gaynor <alex.gaynor@gmail.com>,
Nathan Chancellor <nathan@kernel.org>,
Nicolas Schier <nicolas@fjasle.eu>
Cc: "Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>,
rust-for-linux@vger.kernel.org, linux-kbuild@vger.kernel.org,
linux-kernel@vger.kernel.org, patches@lists.linux.dev,
"Jesung Yang" <y.j3ms.n@gmail.com>
Subject: [PATCH v2 14/20] rust: quote: enable support in kbuild
Date: Mon, 24 Nov 2025 16:18:26 +0100 [thread overview]
Message-ID: <20251124151837.2184382-15-ojeda@kernel.org> (raw)
In-Reply-To: <20251124151837.2184382-1-ojeda@kernel.org>
With all the new files in place and ready from the new crate, enable
the support for it in the build system.
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Tested-by: Gary Guo <gary@garyguo.net>
Tested-by: Jesung Yang <y.j3ms.n@gmail.com>
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
Makefile | 1 +
rust/Makefile | 38 ++++++++++++++++++++++++++++---
scripts/generate_rust_analyzer.py | 7 ++++++
3 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 589bcfe3bf75..85da055e4f00 100644
--- a/Makefile
+++ b/Makefile
@@ -1834,6 +1834,7 @@ rustfmt:
$(Q)find $(srctree) $(RCS_FIND_IGNORE) \
\( \
-path $(srctree)/rust/proc-macro2 \
+ -o -path $(srctree)/rust/quote \
\) -prune -o \
-type f -a -name '*.rs' -a ! -name '*generated*' -print \
| xargs $(RUSTFMT) $(rustfmt_flags)
diff --git a/rust/Makefile b/rust/Makefile
index 7dd1261ad98f..4f4a00594142 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -27,7 +27,7 @@ endif
obj-$(CONFIG_RUST) += exports.o
-always-$(CONFIG_RUST) += libproc_macro2.rlib
+always-$(CONFIG_RUST) += libproc_macro2.rlib libquote.rlib
always-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated.rs
always-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated_kunit.c
@@ -89,6 +89,18 @@ proc_macro2-flags := \
-Zcrate-attr='feature(proc_macro_byte_character,proc_macro_c_str_literals)' \
$(call cfgs-to-flags,$(proc_macro2-cfgs))
+quote-cfgs := \
+ feature="proc-macro"
+
+quote-skip_flags := \
+ --edition=2021
+
+quote-flags := \
+ --edition=2018 \
+ --cap-lints=allow \
+ --extern proc_macro2 \
+ $(call cfgs-to-flags,$(quote-cfgs))
+
# `rustdoc` did not save the target modifiers, thus workaround for
# the time being (https://github.com/rust-lang/rust/issues/144521).
rustdoc_modifiers_workaround := $(if $(call rustc-min-version,108800),-Cunsafe-allow-abi-mismatch=fixed-x18)
@@ -143,10 +155,17 @@ rustdoc-proc_macro2: private rustc_target_flags = $(proc_macro2-flags)
rustdoc-proc_macro2: $(src)/proc-macro2/lib.rs rustdoc-clean FORCE
+$(call if_changed,rustdoc)
+rustdoc-quote: private rustdoc_host = yes
+rustdoc-quote: private rustc_target_flags = $(quote-flags)
+rustdoc-quote: private skip_flags = $(quote-skip_flags)
+rustdoc-quote: $(src)/quote/lib.rs rustdoc-clean rustdoc-proc_macro2 FORCE
+ +$(call if_changed,rustdoc)
+
rustdoc-macros: private rustdoc_host = yes
rustdoc-macros: private rustc_target_flags = --crate-type proc-macro \
--extern proc_macro
-rustdoc-macros: $(src)/macros/lib.rs rustdoc-clean rustdoc-proc_macro2 FORCE
+rustdoc-macros: $(src)/macros/lib.rs rustdoc-clean rustdoc-proc_macro2 \
+ rustdoc-quote FORCE
+$(call if_changed,rustdoc)
# Starting with Rust 1.82.0, skipping `-Wrustdoc::unescaped_backticks` should
@@ -207,6 +226,11 @@ rusttestlib-proc_macro2: private rustc_target_flags = $(proc_macro2-flags)
rusttestlib-proc_macro2: $(src)/proc-macro2/lib.rs FORCE
+$(call if_changed,rustc_test_library)
+rusttestlib-quote: private skip_flags = $(quote-skip_flags)
+rusttestlib-quote: private rustc_target_flags = $(quote-flags)
+rusttestlib-quote: $(src)/quote/lib.rs rusttestlib-proc_macro2 FORCE
+ +$(call if_changed,rustc_test_library)
+
rusttestlib-macros: private rustc_target_flags = --extern proc_macro
rusttestlib-macros: private rustc_test_library_proc = yes
rusttestlib-macros: $(src)/macros/lib.rs FORCE
@@ -458,6 +482,12 @@ $(obj)/libproc_macro2.rlib: private rustc_target_flags = $(proc_macro2-flags)
$(obj)/libproc_macro2.rlib: $(src)/proc-macro2/lib.rs FORCE
+$(call if_changed_dep,rustc_procmacrolibrary)
+$(obj)/libquote.rlib: private skip_clippy = 1
+$(obj)/libquote.rlib: private skip_flags = $(quote-skip_flags)
+$(obj)/libquote.rlib: private rustc_target_flags = $(quote-flags)
+$(obj)/libquote.rlib: $(src)/quote/lib.rs $(obj)/libproc_macro2.rlib FORCE
+ +$(call if_changed_dep,rustc_procmacrolibrary)
+
quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@
cmd_rustc_procmacro = \
$(RUSTC_OR_CLIPPY) $(rust_common_flags) $(rustc_target_flags) \
@@ -469,7 +499,8 @@ quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@
@$(objtree)/include/generated/rustc_cfg $<
# Procedural macros can only be used with the `rustc` that compiled it.
-$(obj)/$(libmacros_name): $(src)/macros/lib.rs $(obj)/libproc_macro2.rlib FORCE
+$(obj)/$(libmacros_name): $(src)/macros/lib.rs $(obj)/libproc_macro2.rlib \
+ $(obj)/libquote.rlib FORCE
+$(call if_changed_dep,rustc_procmacro)
$(obj)/$(libpin_init_internal_name): private rustc_target_flags = --cfg kernel
@@ -493,6 +524,7 @@ rust-analyzer:
$(Q)MAKEFLAGS= $(srctree)/scripts/generate_rust_analyzer.py \
--cfgs='core=$(core-cfgs)' $(core-edition) \
--cfgs='proc_macro2=$(proc_macro2-cfgs)' \
+ --cfgs='quote=$(quote-cfgs)' \
$(realpath $(srctree)) $(realpath $(objtree)) \
$(rustc_sysroot) $(RUST_LIB_SRC) $(if $(KBUILD_EXTMOD),$(srcroot)) \
> rust-project.json
diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py
index 00c6b7cc94b7..4faf153ed2ee 100755
--- a/scripts/generate_rust_analyzer.py
+++ b/scripts/generate_rust_analyzer.py
@@ -93,6 +93,13 @@ def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs, core_edit
cfg=crates_cfgs["proc_macro2"],
)
+ append_crate(
+ "quote",
+ srctree / "rust" / "quote" / "lib.rs",
+ ["alloc", "proc_macro", "proc_macro2"],
+ cfg=crates_cfgs["quote"],
+ )
+
append_crate(
"macros",
srctree / "rust" / "macros" / "lib.rs",
--
2.52.0
next prev parent reply other threads:[~2025-11-24 15:19 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-24 15:18 [PATCH v2 00/20] `syn` support Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 01/20] rust: kbuild: introduce `core-flags` and `core-skip_flags` Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 02/20] rust: kbuild: simplify `--cfg` handling Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 03/20] rust: kbuild: add proc macro library support Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 04/20] rust: kbuild: support skipping flags in `rustc_test_library` Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 05/20] rust: kbuild: support using libraries in `rustc_procmacro` Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 06/20] rust: proc-macro2: import crate Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 07/20] rust: proc-macro2: add SPDX License Identifiers Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 08/20] rust: proc-macro2: remove `unicode_ident` dependency Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 09/20] rust: proc-macro2: add `README.md` Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 10/20] rust: proc-macro2: enable support in kbuild Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 11/20] rust: quote: import crate Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 12/20] rust: quote: add SPDX License Identifiers Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 13/20] rust: quote: add `README.md` Miguel Ojeda
2025-11-24 15:18 ` Miguel Ojeda [this message]
2025-11-24 15:18 ` [PATCH v2 15/20] rust: syn: import crate Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 16/20] rust: syn: add SPDX License Identifiers Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 17/20] rust: syn: remove `unicode-ident` dependency Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 18/20] rust: syn: add `README.md` Miguel Ojeda
2025-11-24 15:18 ` [PATCH v2 19/20] rust: syn: enable support in kbuild Miguel Ojeda
2026-01-04 23:17 ` Tamir Duberstein
2026-01-05 4:31 ` Jesung Yang
2025-11-24 15:18 ` [PATCH v2 20/20] rust: macros: support `proc-macro2`, `quote` and `syn` Miguel Ojeda
2025-11-24 16:23 ` [PATCH v2 00/20] `syn` support Miguel Ojeda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251124151837.2184382-15-ojeda@kernel.org \
--to=ojeda@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=nathan@kernel.org \
--cc=nicolas@fjasle.eu \
--cc=patches@lists.linux.dev \
--cc=rust-for-linux@vger.kernel.org \
--cc=tmgross@umich.edu \
--cc=y.j3ms.n@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.