From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Zhao Liu <zhao1.liu@intel.com>
Subject: [PULL 10/24] rust: prepare variable definitions for multiple bindgen invocations
Date: Fri, 20 Jun 2025 18:40:38 +0200 [thread overview]
Message-ID: <20250620164053.579416-11-pbonzini@redhat.com> (raw)
In-Reply-To: <20250620164053.579416-1-pbonzini@redhat.com>
When splitting the QEMU Rust bindings into multiple crates, the
bindgen-generated structs also have to be split so that it's
possible to add "impl" blocks (e.g. for Sync/Send or Default,
or even for utility methods in cases such as VMStateFlags).
Tweak various variable definitions in meson.build, to avoid naming
conflicts once there will be multiple bindgen invocations.
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
meson.build | 21 ++++++++++++---------
rust/meson.build | 2 +-
rust/qemu-api/meson.build | 2 +-
3 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/meson.build b/meson.build
index ed60be2a2d0..19ffa9cb34c 100644
--- a/meson.build
+++ b/meson.build
@@ -4200,10 +4200,11 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
endforeach
if have_rust
+ bindings_incdir = include_directories('.', 'include')
# We would like to use --generate-cstr, but it is only available
# starting with bindgen 0.66.0. The oldest supported versions
# is 0.60.x (Debian 12 has 0.60.1) which introduces --allowlist-file.
- bindgen_args = [
+ bindgen_args_common = [
'--disable-header-comment',
'--raw-line', '// @generated',
'--ctypes-prefix', 'std::os::raw',
@@ -4219,20 +4220,22 @@ if have_rust
]
if not rustfmt.found()
if bindgen.version().version_compare('<0.65.0')
- bindgen_args += ['--no-rustfmt-bindings']
+ bindgen_args_common += ['--no-rustfmt-bindings']
else
- bindgen_args += ['--formatter', 'none']
+ bindgen_args_common += ['--formatter', 'none']
endif
endif
if bindgen.version().version_compare('>=0.66.0')
- bindgen_args += ['--rust-target', '1.59']
+ bindgen_args_common += ['--rust-target', '1.59']
endif
if bindgen.version().version_compare('<0.61.0')
# default in 0.61+
- bindgen_args += ['--size_t-is-usize']
+ bindgen_args_common += ['--size_t-is-usize']
else
- bindgen_args += ['--merge-extern-blocks']
+ bindgen_args_common += ['--merge-extern-blocks']
endif
+
+ bindgen_args = []
c_enums = [
'DeviceCategory',
'GpioPolarity',
@@ -4264,13 +4267,13 @@ if have_rust
# this case you must pass the path to `clang` and `libclang` to your build
# command invocation using the environment variables CLANG_PATH and
# LIBCLANG_PATH
- bindings_rs = rust.bindgen(
+ _qemu_api_bindings_inc_rs = rust.bindgen(
input: 'rust/wrapper.h',
dependencies: common_ss.all_dependencies(),
output: 'bindings.inc.rs',
- include_directories: include_directories('.', 'include'),
+ include_directories: bindings_incdir,
bindgen_version: ['>=0.60.0'],
- args: bindgen_args,
+ args: bindgen_args_common + bindgen_args,
)
subdir('rust')
endif
diff --git a/rust/meson.build b/rust/meson.build
index 99ae7956cd0..e9f0879e296 100644
--- a/rust/meson.build
+++ b/rust/meson.build
@@ -33,5 +33,5 @@ if cargo.found()
command: [config_host['MESON'], 'devenv',
'--workdir', '@CURRENT_SOURCE_DIR@',
cargo, 'fmt'],
- depends: bindings_rs)
+ depends: _qemu_api_bindings_inc_rs)
endif
diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build
index 33653b4a28e..64c04dfd74b 100644
--- a/rust/qemu-api/meson.build
+++ b/rust/qemu-api/meson.build
@@ -32,7 +32,7 @@ _qemu_api_rs = static_library(
'src/vmstate.rs',
'src/zeroable.rs',
],
- {'.' : bindings_rs},
+ {'.' : _qemu_api_bindings_inc_rs},
),
override_options: ['rust_std=2021', 'build.rust_std=2021'],
rust_abi: 'rust',
--
2.49.0
next prev parent reply other threads:[~2025-06-20 16:42 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-20 16:40 [PULL 00/24] i386 (TCG, TDX), Rust changes for 2025-06-20 Paolo Bonzini
2025-06-20 16:40 ` [PULL 01/24] meson: cleanup win32 library detection Paolo Bonzini
2025-06-20 16:40 ` [PULL 02/24] target/i386: fix TB exit logic in gen_movl_seg() when writing to SS Paolo Bonzini
2025-06-20 16:40 ` [PULL 03/24] hw: Fix type constant for DTB files Paolo Bonzini
2025-06-20 16:40 ` [PULL 04/24] pc-bios/dtb/meson: Prefer target name to be outfile, not infile Paolo Bonzini
2025-06-20 16:40 ` [PULL 05/24] rust: qemu_api: introduce MaybeUninit field projection Paolo Bonzini
2025-06-20 16:40 ` [PULL 06/24] rust: hpet: fully initialize object during instance_init Paolo Bonzini
2025-06-20 16:40 ` [PULL 07/24] rust: qom: introduce ParentInit Paolo Bonzini
2025-06-20 16:40 ` [PULL 08/24] rust: qom: make ParentInit lifetime-invariant Paolo Bonzini
2025-06-20 16:40 ` [PULL 09/24] rust: qom: change instance_init to take a ParentInit<> Paolo Bonzini
2025-06-20 16:40 ` Paolo Bonzini [this message]
2025-06-20 16:40 ` [PULL 11/24] rust: move rust.bindgen to qemu-api crate Paolo Bonzini
2025-06-20 16:40 ` [PULL 12/24] rust/qemu-api: Add initial logging support based on C API Paolo Bonzini
2025-06-20 16:40 ` [PULL 13/24] rust: pl011: Implement logging Paolo Bonzini
2025-06-20 16:40 ` [PULL 14/24] rust: pl011: Add missing logging to match C version Paolo Bonzini
2025-06-20 16:40 ` [PULL 15/24] rust: hpet: fix new warning Paolo Bonzini
2025-06-20 16:40 ` [PULL 16/24] i386/cpu: Move adjustment of CPUID_EXT_PDCM before feature_dependencies[] check Paolo Bonzini
2025-06-20 16:40 ` [PULL 17/24] i386/cpu: Warn about why CPUID_EXT_PDCM is not available Paolo Bonzini
2025-06-20 16:40 ` [PULL 18/24] i386/tdx: Error and exit when named cpu model is requested Paolo Bonzini
2025-06-20 16:40 ` [PULL 19/24] i386/cpu: Rename enable_cpuid_0x1f to force_cpuid_0x1f Paolo Bonzini
2025-06-20 16:40 ` [PULL 20/24] i386/tdx: Fix the typo of the comment of struct TdxGuest Paolo Bonzini
2025-06-20 16:40 ` [PULL 21/24] i386/tdx: Clarify the error message of mrconfigid/mrowner/mrownerconfig Paolo Bonzini
2025-06-20 16:40 ` [PULL 22/24] update Linux headers to v6.16-rc3 Paolo Bonzini
2025-06-20 16:40 ` [PULL 23/24] i386/tdx: handle TDG.VP.VMCALL<GetTdVmCallInfo> Paolo Bonzini
2025-06-20 16:40 ` [PULL 24/24] i386/tdx: handle TDG.VP.VMCALL<GetQuote> Paolo Bonzini
2025-06-23 6:43 ` Cédric Le Goater
2025-06-23 7:03 ` Xiaoyao Li
2025-06-23 7:44 ` Cédric Le Goater
2025-06-23 8:02 ` Daniel P. Berrangé
2025-06-23 13:04 ` Stefan Hajnoczi
2025-06-23 13:08 ` Daniel P. Berrangé
2025-06-23 18:57 ` Stefan Hajnoczi
2025-06-23 20:37 ` Cédric Le Goater
2025-06-24 15:03 ` Stefan Hajnoczi
2025-06-24 15:08 ` Daniel P. Berrangé
2025-06-24 15:22 ` Cédric Le Goater
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=20250620164053.579416-11-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=zhao1.liu@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).