Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Successful in 56s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m26s
Release Docker Image / Build linux-amd64 (release) (pull_request) Successful in 6m29s
Release Docker Image / Build linux-arm64 (release) (pull_request) Successful in 6m26s
Release Docker Image / Create Multi-arch Release Manifest (pull_request) Successful in 15s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 17m28s
Release Docker Image / Build linux-amd64 (max-perf) (pull_request) Successful in 14m29s
Release Docker Image / Build linux-arm64 (max-perf) (pull_request) Successful in 14m26s
Release Docker Image / Create Max-Perf Manifest (pull_request) Successful in 14s
Checks / Prek / Pre-commit & Formatting (push) Successful in 1m29s
Checks / Prek / Clippy and Cargo Tests (push) Has been cancelled
Documentation / Build and Deploy Documentation (push) Has been cancelled
Release Docker Image / Build linux-arm64 (release) (push) Has been cancelled
Release Docker Image / Build linux-amd64 (release) (push) Has been cancelled
Release Docker Image / Create Multi-arch Release Manifest (push) Has been cancelled
Release Docker Image / Build linux-amd64 (max-perf) (push) Has been cancelled
Release Docker Image / Build linux-arm64 (max-perf) (push) Has been cancelled
Release Docker Image / Create Max-Perf Manifest (push) Has been cancelled
29 lines
820 B
Rust
29 lines
820 B
Rust
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_"),
|
|
};
|
|
|
|
let flag = std::env::args().collect::<Vec<_>>();
|
|
let flag_len = flag.len();
|
|
let ret = quote! {
|
|
pub static RUSTC_FLAGS: [&str; #flag_len] = [#( #flag ),*];
|
|
|
|
#[ctor]
|
|
fn _set_rustc_flags() {
|
|
conduwuit_core::info::rustc::FLAGS.lock().expect("locked").insert(#crate_name, &RUSTC_FLAGS);
|
|
}
|
|
|
|
// static strings have to be yanked on module unload
|
|
#[dtor]
|
|
fn _unset_rustc_flags() {
|
|
conduwuit_core::info::rustc::FLAGS.lock().expect("locked").remove(#crate_name);
|
|
}
|
|
};
|
|
|
|
ret.into()
|
|
}
|