This commit adds a helper crate library, qemu-api-macros for derive (and
other procedural) macros to be used along qemu-api.
It needs to be a separate library because in Rust, procedural macros, or
macros that can generate arbitrary code, need to be special separate
compilation units.
Only one macro is introduced in this patch, #[derive(Object)]. It
generates a constructor to register a QOM TypeInfo on init and it must
be used on types that implement qemu_api::definitions::ObjectImpl trait.
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
---
MAINTAINERS | 1 +
rust/meson.build | 1 +
rust/qemu-api-macros/Cargo.lock | 47 +++++++
rust/qemu-api-macros/Cargo.toml | 25 ++++
rust/qemu-api-macros/README.md | 1 +
rust/qemu-api-macros/meson.build | 25 ++++
rust/qemu-api-macros/src/cstr/mod.rs | 55 ++++++++
rust/qemu-api-macros/src/cstr/parse.rs | 225 +++++++++++++++++++++++++++++++++
diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build
index 85838d31b4..a0802ad858 100644
--- a/rust/qemu-api/meson.build
+++ b/rust/qemu-api/meson.build
@@ -13,6 +13,9 @@ _qemu_api_rs = static_library(
rust_args: [
'--cfg', 'MESON',
],
+ dependencies: [
+ qemu_api_macros,
+ ],
)
qemu_api = declare_dependency(