Files
2025-07-28 02:11:31 +04:00

53 lines
1.6 KiB
Rust

use std::{env, fs, path::Path};
const NODE_VERSION: &str = "22.17.1";
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let platform = get_platform();
// Write platform info for runtime use
fs::write(Path::new(&out_dir).join("platform"), platform.to_string()).unwrap();
println!("cargo:rustc-env=NODE_VERSION={NODE_VERSION}");
println!("cargo:rerun-if-changed=build.rs");
}
#[derive(Clone, Copy)]
enum Platform {
LinuxX64,
LinuxArm64,
MacosX64,
MacosArm64,
WindowsX64,
WindowsArm64,
}
impl std::fmt::Display for Platform {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::LinuxX64 => write!(f, "linux-x64"),
Self::LinuxArm64 => write!(f, "linux-arm64"),
Self::MacosX64 => write!(f, "darwin-x64"),
Self::MacosArm64 => write!(f, "darwin-arm64"),
Self::WindowsX64 => write!(f, "win32-x64"),
Self::WindowsArm64 => write!(f, "win32-arm64"),
}
}
}
fn get_platform() -> Platform {
let os = env::var("CARGO_CFG_TARGET_OS").unwrap();
let arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap();
match (os.as_str(), arch.as_str()) {
("linux", "x86_64") => Platform::LinuxX64,
("linux", "aarch64") => Platform::LinuxArm64,
("macos", "x86_64") => Platform::MacosX64,
("macos", "aarch64") => Platform::MacosArm64,
("windows", "x86_64") => Platform::WindowsX64,
("windows", "aarch64") => Platform::WindowsArm64,
_ => panic!("Unsupported platform: {os}-{arch}"),
}
}