mirror of
https://github.com/zhom/banderole.git
synced 2026-04-22 03:46:17 +02:00
53 lines
1.6 KiB
Rust
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}"),
|
|
}
|
|
}
|