Abstract common invocations of "cargo", that do not require copying the generated bindgen file or setting up MESON_BUILD_ROOT.
In the future these could also do completely without cargo and invoke the underlying programs directly. Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- rust/meson.build | 14 ++++++++++++++ rust/qemu-api/build.rs | 8 ++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/rust/meson.build b/rust/meson.build index def77389cdd..6fa0fd54527 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -2,3 +2,17 @@ subdir('qemu-api-macros') subdir('qemu-api') subdir('hw') + +cargo = find_program('cargo') + +run_target('clippy', + command: [config_host['MESON'], 'devenv', + '--workdir', '@CURRENT_SOURCE_DIR@', + cargo, 'clippy', '--tests'], + depends: bindings_rs) + +run_target('rustfmt', + command: [config_host['MESON'], 'devenv', + '--workdir', '@CURRENT_SOURCE_DIR@', + cargo, 'fmt'], + depends: bindings_rs) diff --git a/rust/qemu-api/build.rs b/rust/qemu-api/build.rs index e4eab718553..d7b6d76828b 100644 --- a/rust/qemu-api/build.rs +++ b/rust/qemu-api/build.rs @@ -15,8 +15,12 @@ fn main() { let file = format!("{}/bindings.rs.inc", path); if !Path::new(&file).exists() { panic!(concat!( - "No generated C bindings found! If you want to run `cargo`, start a subshell\n", - "with `meson devenv`, or point MESON_BUILD_ROOT to the top of the build tree." + "\n", + " No generated C bindings found! To run clippy or rustfmt, you can use\n", + " `make clippy` or `make rustfmt`.\n", + "\n", + " For other uses of `cargo`, start a subshell with `meson devenv`, or\n", + " point MESON_BUILD_ROOT to the top of the build tree." )); } -- 2.47.0