ethercat-linux/vendor/crc32fast/build.rs
Tony Cao b30e183cd8 build: vendor crc32fast 1.5.0 for offline aarch64-musl cross build
The build host (Ubuntu 192.168.58.8) has no internet access to crates.io
mirrors, so crc32fast is vendored next to vendor/ethercrab and patched in
via [patch.crates-io]. Binary is linked with rust-lld (no cross gcc).
2026-09-20 12:32:45 +08:00

28 lines
867 B
Rust

use std::{env, process::Command};
fn main() {
if let Some(minor_version) = minor_rustc_version() {
// rustc 1.80 stabilized ARM CRC32 intrinsics:
// https://doc.rust-lang.org/nightly/core/arch/aarch64/fn.__crc32d.html
if minor_version >= 80 {
println!("cargo:rustc-cfg=stable_arm_crc32_intrinsics");
println!("cargo:rustc-check-cfg=cfg(stable_arm_crc32_intrinsics)");
}
}
}
fn minor_rustc_version() -> Option<u32> {
Command::new(env::var_os("RUSTC")?)
.arg("--version")
.output()
.ok()
.and_then(|output| {
std::str::from_utf8(&output.stdout).ok().and_then(|output| {
output
.split('.')
.nth(1)
.and_then(|minor_version| minor_version.parse().ok())
})
})
}