1#[derive(serde::Serialize, serde::Deserialize)]
3pub struct JsasmContext {
4 feature: String,
5 unix: bool,
6 windows: bool,
7 target_family: String,
8 target_os: String,
9 target_arch: String,
10 target_vendor: String,
11 target_env: String,
12 target_abi: String,
13 target_pointer_width: usize,
14 target_endian: String,
15 target_feature: String,
16}
17
18impl JsasmContext {
19 pub fn new() -> Result<Self, std::env::VarError> {
20 let feature = std::env::var("CARGO_CFG_FEATURE")?;
21 let unix = std::env::var("CARGO_CFG_UNIX").is_ok();
22 let windows = std::env::var("CARGO_CFG_WINDOWS").is_ok();
23 let target_family = std::env::var("CARGO_CFG_TARGET_FAMILY")?;
24 let target_os = std::env::var("CARGO_CFG_TARGET_OS")?;
25 let target_arch = std::env::var("CARGO_CFG_TARGET_ARCH")?;
26 let target_vendor = std::env::var("CARGO_CFG_TARGET_VENDOR")?;
27 let target_env = std::env::var("CARGO_CFG_TARGET_ENV")?;
28 let target_abi = std::env::var("CARGO_CFG_TARGET_ABI")?;
29 let target_pointer_width = std::env::var("CARGO_CFG_TARGET_POINTER_WIDTH")?
30 .parse()
31 .unwrap();
32 let target_endian = std::env::var("CARGO_CFG_TARGET_ENDIAN")?;
33 let target_feature = std::env::var("CARGO_CFG_TARGET_FEATURE").unwrap_or_default();
34 Ok(Self {
35 feature,
36 unix,
37 windows,
38 target_family,
39 target_os,
40 target_arch,
41 target_vendor,
42 target_env,
43 target_abi,
44 target_pointer_width,
45 target_endian,
46 target_feature,
47 })
48 }
49}