| use std::env; |
| use std::lazy::SyncLazy; |
| use std::path::PathBuf; |
| |
| pub static CARGO_TARGET_DIR: SyncLazy<PathBuf> = SyncLazy::new(|| match env::var_os("CARGO_TARGET_DIR") { |
| Some(v) => v.into(), |
| None => env::current_dir().unwrap().join("target"), |
| }); |
| |
| pub static TARGET_LIB: SyncLazy<PathBuf> = SyncLazy::new(|| { |
| if let Some(path) = option_env!("TARGET_LIBS") { |
| path.into() |
| } else { |
| let mut dir = CARGO_TARGET_DIR.clone(); |
| if let Some(target) = env::var_os("CARGO_BUILD_TARGET") { |
| dir.push(target); |
| } |
| dir.push(env!("PROFILE")); |
| dir |
| } |
| }); |
| |
| #[must_use] |
| pub fn is_rustc_test_suite() -> bool { |
| option_env!("RUSTC_TEST_SUITE").is_some() |
| } |