Skip to main content

verilated_module/
lib.rs

1#![recursion_limit = "128"]
2
3extern crate proc_macro;
4#[macro_use]
5extern crate quote;
6extern crate syn;
7
8use proc_macro::TokenStream;
9use syn::ItemStruct;
10
11#[proc_macro_attribute]
12pub fn module(_: TokenStream, input: TokenStream) -> TokenStream {
13    // Code is generated by build.rs, so eat all the tokens...
14
15    let expanded = match syn::parse::<ItemStruct>(input) {
16        Ok(item) => {
17            let src = format!("/{}.rs", item.ident);
18            quote! {
19                include!(concat!(env!("OUT_DIR"), #src));
20            }
21        }
22        Err(..) => quote!{},
23    };
24
25    expanded.into()
26}