subprojects: add attrs crate

The attrs crate is a simple combinator-based for Rust attributes.  It
will be used instead of a handwritten parser.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini
2025-07-17 08:02:15 +02:00
parent f87a2e5c59
commit 193f2ab6e0
8 changed files with 47 additions and 2 deletions

View File

@ -13,10 +13,12 @@ libc_rs = dependency('libc-0.2-rs')
subproject('proc-macro2-1-rs', required: true)
subproject('quote-1-rs', required: true)
subproject('syn-2-rs', required: true)
subproject('attrs-0.2-rs', required: true)
quote_rs_native = dependency('quote-1-rs', native: true)
syn_rs_native = dependency('syn-2-rs', native: true)
proc_macro2_rs_native = dependency('proc-macro2-1-rs', native: true)
attrs_rs_native = dependency('attrs-0.2-rs', native: true)
genrs = []

View File

@ -16,6 +16,7 @@ rust-version.workspace = true
proc-macro = true
[dependencies]
attrs = "0.2.9"
proc-macro2 = "1"
quote = "1"
syn = { version = "2", features = ["extra-traits"] }

View File

@ -8,6 +8,7 @@ _qemu_macros_rs = rust.proc_macro(
'--cfg', 'feature="proc-macro"',
],
dependencies: [
attrs_rs_native,
proc_macro2_rs_native,
quote_rs_native,
syn_rs_native,

View File

@ -27,7 +27,7 @@ sub_file="${sub_tdir}/submodule.tar"
# in their checkout, because the build environment is completely
# different to the host OS.
subprojects="keycodemapdb libvfio-user berkeley-softfloat-3
berkeley-testfloat-3 anyhow-1-rs arbitrary-int-1-rs bilge-0.2-rs
berkeley-testfloat-3 anyhow-1-rs arbitrary-int-1-rs attrs-0.2-rs bilge-0.2-rs
bilge-impl-0.2-rs either-1-rs foreign-0.3-rs itertools-0.11-rs
libc-0.2-rs proc-macro2-1-rs
proc-macro-error-1-rs proc-macro-error-attr-1-rs quote-1-rs

View File

@ -40,7 +40,7 @@ fi
# Only include wraps that are invoked with subproject()
SUBPROJECTS="libvfio-user keycodemapdb berkeley-softfloat-3
berkeley-testfloat-3 anyhow-1-rs arbitrary-int-1-rs bilge-0.2-rs
berkeley-testfloat-3 anyhow-1-rs arbitrary-int-1-rs attrs-0.2-rs bilge-0.2-rs
bilge-impl-0.2-rs either-1-rs foreign-0.3-rs itertools-0.11-rs
libc-0.2-rs proc-macro2-1-rs
proc-macro-error-1-rs proc-macro-error-attr-1-rs quote-1-rs

View File

@ -8,6 +8,7 @@
/slirp
/anyhow-1.0.98
/arbitrary-int-1.2.7
/attrs-0.2.9
/bilge-0.2.0
/bilge-impl-0.2.0
/either-1.12.0

View File

@ -0,0 +1,7 @@
[wrap-file]
directory = attrs-0.2.9
source_url = https://crates.io/api/v1/crates/attrs/0.2.9/download
source_filename = attrs-0.2.9.tar.gz
source_hash = 2a207d40f43de65285f3de0509bb6cb16bc46098864fce957122bbacce327e5f
#method = cargo
patch_directory = attrs-0.2-rs

View File

@ -0,0 +1,33 @@
project('attrs-0.2-rs', 'rust',
meson_version: '>=1.5.0',
version: '0.2.9',
license: 'MIT OR Apache-2.0',
default_options: [])
subproject('proc-macro2-1-rs', required: true)
subproject('syn-2-rs', required: true)
proc_macro2_dep = dependency('proc-macro2-1-rs', native: true)
syn_dep = dependency('syn-2-rs', native: true)
_attrs_rs = static_library(
'attrs',
files('src/lib.rs'),
gnu_symbol_visibility: 'hidden',
override_options: ['rust_std=2021', 'build.rust_std=2021'],
rust_abi: 'rust',
rust_args: [
'--cap-lints', 'allow',
],
dependencies: [
proc_macro2_dep,
syn_dep,
],
native: true,
)
attrs_dep = declare_dependency(
link_with: _attrs_rs,
)
meson.override_dependency('attrs-0.2-rs', attrs_dep, native: true)