File: build.rs

package info (click to toggle)
rustc 1.85.0%2Bdfsg3-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental, sid, trixie
  • size: 893,396 kB
  • sloc: xml: 158,127; python: 35,830; javascript: 19,497; cpp: 19,002; sh: 17,245; ansic: 13,127; asm: 4,376; makefile: 1,051; perl: 29; lisp: 29; ruby: 19; sql: 11
file content (29 lines) | stat: -rw-r--r-- 1,170 bytes parent folder | download | duplicates (15)
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\"");
    }
}