Files
continuwuity/src/macros/rustc.rs
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

30 lines
852 B
Rust
Raw Normal View History

2024-07-24 23:01:00 +00:00
use proc_macro::TokenStream;
use quote::quote;
pub(super) fn flags_capture(args: TokenStream) -> TokenStream {
let cargo_crate_name = std::env::var("CARGO_CRATE_NAME");
let crate_name = match cargo_crate_name.as_ref() {
| Err(_) => return args,
| Ok(crate_name) => crate_name.trim_start_matches("conduwuit_"),
2024-07-24 23:01:00 +00:00
};
let flag = std::env::args().collect::<Vec<_>>();
let flag_len = flag.len();
2024-07-24 23:01:00 +00:00
let ret = quote! {
pub static RUSTC_FLAGS: [&str; #flag_len] = [#( #flag ),*];
2024-12-14 21:58:01 -05:00
#[conduwuit_core::ctor]
2024-07-24 23:01:00 +00:00
fn _set_rustc_flags() {
2024-12-14 21:58:01 -05:00
conduwuit_core::info::rustc::FLAGS.lock().expect("locked").insert(#crate_name, &RUSTC_FLAGS);
2024-07-24 23:01:00 +00:00
}
// static strings have to be yanked on module unload
2024-12-14 21:58:01 -05:00
#[conduwuit_core::dtor]
2024-07-24 23:01:00 +00:00
fn _unset_rustc_flags() {
2024-12-14 21:58:01 -05:00
conduwuit_core::info::rustc::FLAGS.lock().expect("locked").remove(#crate_name);
2024-07-24 23:01:00 +00:00
}
};
ret.into()
}