mirror of
https://github.com/bevyengine/bevy
synced 2024-12-28 05:53:07 +00:00
9f4c8b1b9a
Fix errors and panics to typical Rust conventions
36 lines
979 B
Rust
36 lines
979 B
Rust
use proc_macro::TokenStream;
|
|
use quote::quote;
|
|
use syn::{parse_macro_input, ItemFn};
|
|
|
|
pub fn bevy_main(_attr: TokenStream, item: TokenStream) -> TokenStream {
|
|
let input = parse_macro_input!(item as ItemFn);
|
|
if input.sig.ident != "main" {
|
|
panic!("`bevy_main` can only be used on a function called 'main'.")
|
|
}
|
|
|
|
TokenStream::from(quote! {
|
|
#[no_mangle]
|
|
#[cfg(target_os = "android")]
|
|
unsafe extern "C" fn ANativeActivity_onCreate(
|
|
activity: *mut std::os::raw::c_void,
|
|
saved_state: *mut std::os::raw::c_void,
|
|
saved_state_size: usize,
|
|
) {
|
|
bevy::ndk_glue::init(
|
|
activity as _,
|
|
saved_state as _,
|
|
saved_state_size as _,
|
|
main,
|
|
);
|
|
}
|
|
|
|
#[no_mangle]
|
|
#[cfg(target_os = "ios")]
|
|
extern "C" fn main_rs() {
|
|
main();
|
|
}
|
|
|
|
#[allow(unused)]
|
|
#input
|
|
})
|
|
}
|