1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use proc_macro::TokenStream;
use syn_utils::resolve_attr;

#[macro_use]
mod syn_utils;

mod runtime_main;

use runtime_main::build;

#[proc_macro_attribute]
pub fn core_test(attr: TokenStream, item: TokenStream) -> TokenStream {
    resolve_attr(attr, item, |attr, item| build(attr, item, "core", true))
}

#[proc_macro_attribute]
pub fn core_main(attr: TokenStream, item: TokenStream) -> TokenStream {
    resolve_attr(attr, item, |attr, item| build(attr, item, "core", false))
}

#[proc_macro_attribute]
pub fn windows_test(attr: TokenStream, item: TokenStream) -> TokenStream {
    resolve_attr(attr, item, |attr, item| build(attr, item, "windows", true))
}

#[proc_macro_attribute]
pub fn windows_main(attr: TokenStream, item: TokenStream) -> TokenStream {
    resolve_attr(attr, item, |attr, item| build(attr, item, "windows", false))
}