1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#![recursion_limit = "128"]

mod builder;
mod host;
mod parser;

use proc_macro::TokenStream;

#[proc_macro_attribute]
pub fn kernel(_attr: TokenStream, func: TokenStream) -> TokenStream {
    let func: syn::ItemFn = syn::parse(func).expect("Not a function");
    let ptx_str = builder::compile_tokens(&func).expect("Failed to compile to PTX");
    host::func2caller(&ptx_str, &func).into()
}