> diff --git a/rust/trace/src/lib.rs b/rust/trace/src/lib.rs
> new file mode 100644
> index 00000000000..9b931ddf1de
> --- /dev/null
> +++ b/rust/trace/src/lib.rs
> @@ -0,0 +1,23 @@
> +//! This crate provides macros that aid in using QEMU's tracepoint
> +//! functionality.
> +
> +#[macro_export]
> +/// Define the trace-points from the named directory (which should have 
> slashes
> +/// replaced by underscore characters) as functions in a module called 
> `trace`.
> +///
> +/// ```ignore
> +/// ::trace::include_trace!("hw_char");
> +/// // ...
> +/// trace::trace_pl011_read_fifo_rx_full();
> +/// ```
> +macro_rules! include_trace {
> +    ($name:literal) => {
> +        mod trace {
> +            #[cfg(not(MESON))]
> +            include!(concat!(env!("MESON_BUILD_ROOT"), "/trace/", $name, 
> ".rs"));

nit: missing the "trace-" prefix~

include!(concat!(env!("MESON_BUILD_ROOT"), "/trace/", "trace-", $name, ".rs"));

> +            #[cfg(MESON)]
> +            include!(concat!("@MESON_BUILD_ROOT@/trace/", $name, ".rs"));

ditto

> +        }
> +    };
> +}

this is the nice work!

(but it breaks the doing `cargo build` directly without meson virt env.
 For `cfd(not(MESON)) case`, could we support placing trace files under
 local folder? like

 include!(concat!(env!("CARGO_MANIFEST_DIR"), "src/", "trace-", $name, ".rs"));

 Or should we add a build.rs like qemu-api does?)

Thanks,
Zhao


Reply via email to