mirror of
https://github.com/rtic-rs/rtic.git
synced 2025-12-18 22:05:37 +01:00
Move rtic macros to repo root, tune xtask
This commit is contained in:
parent
4124fbdd61
commit
9e445b3583
134 changed files with 31 additions and 29 deletions
75
rtic-macros/src/codegen.rs
Normal file
75
rtic-macros/src/codegen.rs
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
use proc_macro2::TokenStream as TokenStream2;
|
||||
use quote::quote;
|
||||
|
||||
use crate::analyze::Analysis;
|
||||
use crate::syntax::ast::App;
|
||||
|
||||
mod assertions;
|
||||
mod async_dispatchers;
|
||||
mod hardware_tasks;
|
||||
mod idle;
|
||||
mod init;
|
||||
mod local_resources;
|
||||
mod local_resources_struct;
|
||||
mod module;
|
||||
mod post_init;
|
||||
mod pre_init;
|
||||
mod shared_resources;
|
||||
mod shared_resources_struct;
|
||||
mod software_tasks;
|
||||
mod util;
|
||||
|
||||
mod main;
|
||||
|
||||
// TODO: organize codegen to actual parts of code
|
||||
// so `main::codegen` generates ALL the code for `fn main`,
|
||||
// `software_tasks::codegen` generates ALL the code for software tasks etc...
|
||||
|
||||
#[allow(clippy::too_many_lines)]
|
||||
pub fn app(app: &App, analysis: &Analysis) -> TokenStream2 {
|
||||
// Generate the `main` function
|
||||
let main = main::codegen(app, analysis);
|
||||
let init_codegen = init::codegen(app, analysis);
|
||||
let idle_codegen = idle::codegen(app, analysis);
|
||||
let shared_resources_codegen = shared_resources::codegen(app, analysis);
|
||||
let local_resources_codegen = local_resources::codegen(app, analysis);
|
||||
let hardware_tasks_codegen = hardware_tasks::codegen(app, analysis);
|
||||
let software_tasks_codegen = software_tasks::codegen(app, analysis);
|
||||
let async_dispatchers_codegen = async_dispatchers::codegen(app, analysis);
|
||||
|
||||
let user_imports = &app.user_imports;
|
||||
let user_code = &app.user_code;
|
||||
let name = &app.name;
|
||||
let device = &app.args.device;
|
||||
|
||||
let rt_err = util::rt_err_ident();
|
||||
|
||||
quote!(
|
||||
/// The RTIC application module
|
||||
pub mod #name {
|
||||
/// Always include the device crate which contains the vector table
|
||||
use #device as #rt_err;
|
||||
|
||||
#(#user_imports)*
|
||||
|
||||
#(#user_code)*
|
||||
/// User code end
|
||||
|
||||
#init_codegen
|
||||
|
||||
#idle_codegen
|
||||
|
||||
#hardware_tasks_codegen
|
||||
|
||||
#software_tasks_codegen
|
||||
|
||||
#shared_resources_codegen
|
||||
|
||||
#local_resources_codegen
|
||||
|
||||
#async_dispatchers_codegen
|
||||
|
||||
#main
|
||||
}
|
||||
)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue