use std::env; fn main() { println!("cargo:rerun-if-changed=build.rs"); println!("cargo:rustc-check-cfg=cfg(fast_arithmetic, values(\"32\", \"64\"))"); // Decide ideal limb width for arithmetic in the float parser and string // parser. let target_arch = env::var_os("CARGO_CFG_TARGET_ARCH").unwrap(); let target_pointer_width = env::var_os("CARGO_CFG_TARGET_POINTER_WIDTH").unwrap(); if target_arch == "aarch64" || target_arch == "loongarch64" || target_arch == "mips64" || target_arch == "powerpc64" || target_arch == "wasm32" || target_arch == "x86_64" || target_pointer_width == "64" { // The above list of architectures are ones that have native support for // 64-bit arithmetic, but which have some targets using a smaller // pointer width. Examples include aarch64-unknown-linux-gnu_ilp32 and // x86_64-unknown-linux-gnux32. So our choice of limb width is not // equivalent to using usize everywhere. println!("cargo:rustc-cfg=fast_arithmetic=\"64\""); } else { println!("cargo:rustc-cfg=fast_arithmetic=\"32\""); } }