any_version_manager/
platform.rs1use smol_str::SmolStr;
2
3pub mod os {
4 pub const WIN: &str = "win";
5 pub const WIN_GNU: &str = "win_gnu";
6 pub const LINUX: &str = "linux";
7 pub const LINUX_MUSL: &str = "linux_musl";
8 pub const MAC: &str = "mac";
9 pub const SOLARIS: &str = "solaris";
10 pub const AIX: &str = "aix";
11 pub const FREEBSD: &str = "freebsd";
12 pub const NETBSD: &str = "netbsd";
13 pub const OPENBSD: &str = "openbsd";
14 pub const DRAGONFLYBSD: &str = "dragonflybsd";
15 pub const ILLUMOS: &str = "illumos";
16 pub const PLAN9: &str = "plan9";
17}
18
19pub mod cpu {
20 pub const X86: &str = "x86";
21 pub const X64: &str = "x64";
22 pub const ARM32: &str = "arm32";
23 pub const ARM64: &str = "arm64";
24 pub const ARMV6L: &str = "armv6l";
25 pub const ARMV7L: &str = "armv7l";
26 pub const LOONG64: &str = "loong64";
27 pub const RISCV32: &str = "riscv32";
28 pub const RISCV64: &str = "riscv64";
29 pub const PPC32: &str = "ppc32";
30 pub const PPC64: &str = "ppc64";
31 pub const PPC64LE: &str = "ppc64le";
32 pub const SPARC32: &str = "sparc32";
33 pub const SPARC64: &str = "sparc64";
34 pub const MIPS32: &str = "mips32";
35 pub const MIPS64: &str = "mips64";
36 pub const MIPS32LE: &str = "mips32le";
37 pub const MIPS64LE: &str = "mips64le";
38 pub const S390X: &str = "s390x";
39}
40
41pub fn create_platform_string(cpu: &str, os: &str) -> SmolStr {
42 format!("{}-{}", cpu, os).into()
43}
44
45#[allow(unreachable_code)]
46pub fn current_os() -> Option<&'static str> {
47 #[cfg(target_os = "windows")]
48 return Some(os::WIN);
49
50 #[cfg(target_os = "linux")]
51 return Some(os::LINUX);
52
53 #[cfg(target_os = "macos")]
54 return Some(os::MAC);
55
56 None
57}
58
59#[allow(unreachable_code)]
60pub fn current_cpu() -> Option<&'static str> {
61 #[cfg(target_arch = "x86")]
62 return Some(cpu::X86);
63
64 #[cfg(target_arch = "x86_64")]
65 return Some(cpu::X64);
66
67 #[cfg(target_arch = "arm")]
68 return Some(cpu::ARM32);
69
70 #[cfg(target_arch = "aarch64")]
71 return Some(cpu::ARM64);
72
73 #[cfg(target_arch = "riscv32")]
74 return Some(cpu::RISCV32);
75
76 #[cfg(target_arch = "riscv64")]
77 return Some(cpu::RISCV64);
78
79 #[cfg(target_arch = "sparc")]
86 return Some(cpu::SPARC32);
87
88 #[cfg(target_arch = "sparc64")]
89 return Some(cpu::SPARC64);
90
91 None
92}