rust: make declaration of dependent crates more consistent

Crates like "bilge" and "libc" can be shared by more than one directory,
so declare them directly in rust/meson.build.  While at it, make their
variable names end with "_rs" and always add a subproject() statement
(as that pinpoints the error better if the subproject is missing and
cannot be downloaded).

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2025-05-26 09:22:20 +02:00
parent dc14243193
commit 1297b285cc
4 changed files with 23 additions and 23 deletions

View file

@ -1,17 +1,11 @@
subproject('bilge-0.2-rs', required: true)
subproject('bilge-impl-0.2-rs', required: true)
bilge_dep = dependency('bilge-0.2-rs')
bilge_impl_dep = dependency('bilge-impl-0.2-rs')
_libpl011_rs = static_library( _libpl011_rs = static_library(
'pl011', 'pl011',
files('src/lib.rs'), files('src/lib.rs'),
override_options: ['rust_std=2021', 'build.rust_std=2021'], override_options: ['rust_std=2021', 'build.rust_std=2021'],
rust_abi: 'rust', rust_abi: 'rust',
dependencies: [ dependencies: [
bilge_dep, bilge_rs,
bilge_impl_dep, bilge_impl_rs,
qemu_api, qemu_api,
qemu_api_macros, qemu_api_macros,
], ],
@ -21,6 +15,6 @@ rust_devices_ss.add(when: 'CONFIG_X_PL011_RUST', if_true: [declare_dependency(
link_whole: [_libpl011_rs], link_whole: [_libpl011_rs],
# Putting proc macro crates in `dependencies` is necessary for Meson to find # Putting proc macro crates in `dependencies` is necessary for Meson to find
# them when compiling the root per-target static rust lib. # them when compiling the root per-target static rust lib.
dependencies: [bilge_impl_dep, qemu_api_macros], dependencies: [bilge_impl_rs, qemu_api_macros],
variables: {'crate': 'pl011'}, variables: {'crate': 'pl011'},
)]) )])

View file

@ -1,3 +1,19 @@
subproject('bilge-0.2-rs', required: true)
subproject('bilge-impl-0.2-rs', required: true)
subproject('libc-0.2-rs', required: true)
bilge_rs = dependency('bilge-0.2-rs')
bilge_impl_rs = dependency('bilge-impl-0.2-rs')
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)
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)
subdir('qemu-api-macros') subdir('qemu-api-macros')
subdir('qemu-api') subdir('qemu-api')

View file

@ -1,11 +1,3 @@
subproject('proc-macro2-1-rs', required: true)
subproject('quote-1-rs', required: true)
subproject('syn-2-rs', required: true)
quote_dep = dependency('quote-1-rs', native: true)
syn_dep = dependency('syn-2-rs', native: true)
proc_macro2_dep = dependency('proc-macro2-1-rs', native: true)
_qemu_api_macros_rs = rust.proc_macro( _qemu_api_macros_rs = rust.proc_macro(
'qemu_api_macros', 'qemu_api_macros',
files('src/lib.rs'), files('src/lib.rs'),
@ -16,9 +8,9 @@ _qemu_api_macros_rs = rust.proc_macro(
'--cfg', 'feature="proc-macro"', '--cfg', 'feature="proc-macro"',
], ],
dependencies: [ dependencies: [
proc_macro2_dep, proc_macro2_rs_native,
quote_dep, quote_rs_native,
syn_dep, syn_rs_native,
], ],
) )

View file

@ -2,8 +2,6 @@ _qemu_api_cfg = run_command(rustc_args,
'--config-headers', config_host_h, '--features', files('Cargo.toml'), '--config-headers', config_host_h, '--features', files('Cargo.toml'),
capture: true, check: true).stdout().strip().splitlines() capture: true, check: true).stdout().strip().splitlines()
libc_dep = dependency('libc-0.2-rs')
# _qemu_api_cfg += ['--cfg', 'feature="allocator"'] # _qemu_api_cfg += ['--cfg', 'feature="allocator"']
if get_option('debug_mutex') if get_option('debug_mutex')
_qemu_api_cfg += ['--cfg', 'feature="debug_cell"'] _qemu_api_cfg += ['--cfg', 'feature="debug_cell"']
@ -37,7 +35,7 @@ _qemu_api_rs = static_library(
override_options: ['rust_std=2021', 'build.rust_std=2021'], override_options: ['rust_std=2021', 'build.rust_std=2021'],
rust_abi: 'rust', rust_abi: 'rust',
rust_args: _qemu_api_cfg, rust_args: _qemu_api_cfg,
dependencies: [libc_dep, qemu_api_macros], dependencies: [libc_rs, qemu_api_macros],
) )
rust.test('rust-qemu-api-tests', _qemu_api_rs, rust.test('rust-qemu-api-tests', _qemu_api_rs,