forked from serde-rs/json
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.rs
29 lines (26 loc) · 1.14 KB
/
build.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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\"");
}
}