mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-21 17:11:57 -06:00
rust: prepare variable definitions for multiple bindgen invocations
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>
This commit is contained in:
parent
345bef46a1
commit
1548c5cdf0
3 changed files with 14 additions and 11 deletions
21
meson.build
21
meson.build
|
@ -4200,10 +4200,11 @@ foreach target_base_arch, config_base_arch : config_base_arch_mak
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
if have_rust
|
if have_rust
|
||||||
|
bindings_incdir = include_directories('.', 'include')
|
||||||
# We would like to use --generate-cstr, but it is only available
|
# We would like to use --generate-cstr, but it is only available
|
||||||
# starting with bindgen 0.66.0. The oldest supported versions
|
# starting with bindgen 0.66.0. The oldest supported versions
|
||||||
# is 0.60.x (Debian 12 has 0.60.1) which introduces --allowlist-file.
|
# is 0.60.x (Debian 12 has 0.60.1) which introduces --allowlist-file.
|
||||||
bindgen_args = [
|
bindgen_args_common = [
|
||||||
'--disable-header-comment',
|
'--disable-header-comment',
|
||||||
'--raw-line', '// @generated',
|
'--raw-line', '// @generated',
|
||||||
'--ctypes-prefix', 'std::os::raw',
|
'--ctypes-prefix', 'std::os::raw',
|
||||||
|
@ -4219,20 +4220,22 @@ if have_rust
|
||||||
]
|
]
|
||||||
if not rustfmt.found()
|
if not rustfmt.found()
|
||||||
if bindgen.version().version_compare('<0.65.0')
|
if bindgen.version().version_compare('<0.65.0')
|
||||||
bindgen_args += ['--no-rustfmt-bindings']
|
bindgen_args_common += ['--no-rustfmt-bindings']
|
||||||
else
|
else
|
||||||
bindgen_args += ['--formatter', 'none']
|
bindgen_args_common += ['--formatter', 'none']
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if bindgen.version().version_compare('>=0.66.0')
|
if bindgen.version().version_compare('>=0.66.0')
|
||||||
bindgen_args += ['--rust-target', '1.59']
|
bindgen_args_common += ['--rust-target', '1.59']
|
||||||
endif
|
endif
|
||||||
if bindgen.version().version_compare('<0.61.0')
|
if bindgen.version().version_compare('<0.61.0')
|
||||||
# default in 0.61+
|
# default in 0.61+
|
||||||
bindgen_args += ['--size_t-is-usize']
|
bindgen_args_common += ['--size_t-is-usize']
|
||||||
else
|
else
|
||||||
bindgen_args += ['--merge-extern-blocks']
|
bindgen_args_common += ['--merge-extern-blocks']
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
bindgen_args = []
|
||||||
c_enums = [
|
c_enums = [
|
||||||
'DeviceCategory',
|
'DeviceCategory',
|
||||||
'GpioPolarity',
|
'GpioPolarity',
|
||||||
|
@ -4264,13 +4267,13 @@ if have_rust
|
||||||
# this case you must pass the path to `clang` and `libclang` to your build
|
# this case you must pass the path to `clang` and `libclang` to your build
|
||||||
# command invocation using the environment variables CLANG_PATH and
|
# command invocation using the environment variables CLANG_PATH and
|
||||||
# LIBCLANG_PATH
|
# LIBCLANG_PATH
|
||||||
bindings_rs = rust.bindgen(
|
_qemu_api_bindings_inc_rs = rust.bindgen(
|
||||||
input: 'rust/wrapper.h',
|
input: 'rust/wrapper.h',
|
||||||
dependencies: common_ss.all_dependencies(),
|
dependencies: common_ss.all_dependencies(),
|
||||||
output: 'bindings.inc.rs',
|
output: 'bindings.inc.rs',
|
||||||
include_directories: include_directories('.', 'include'),
|
include_directories: bindings_incdir,
|
||||||
bindgen_version: ['>=0.60.0'],
|
bindgen_version: ['>=0.60.0'],
|
||||||
args: bindgen_args,
|
args: bindgen_args_common + bindgen_args,
|
||||||
)
|
)
|
||||||
subdir('rust')
|
subdir('rust')
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -33,5 +33,5 @@ if cargo.found()
|
||||||
command: [config_host['MESON'], 'devenv',
|
command: [config_host['MESON'], 'devenv',
|
||||||
'--workdir', '@CURRENT_SOURCE_DIR@',
|
'--workdir', '@CURRENT_SOURCE_DIR@',
|
||||||
cargo, 'fmt'],
|
cargo, 'fmt'],
|
||||||
depends: bindings_rs)
|
depends: _qemu_api_bindings_inc_rs)
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -32,7 +32,7 @@ _qemu_api_rs = static_library(
|
||||||
'src/vmstate.rs',
|
'src/vmstate.rs',
|
||||||
'src/zeroable.rs',
|
'src/zeroable.rs',
|
||||||
],
|
],
|
||||||
{'.' : bindings_rs},
|
{'.' : _qemu_api_bindings_inc_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',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue