any_version_manager/
platform.rs

1use 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 = "ppc32")]
80    // return Some(cpu::PPC32);
81
82    // #[cfg(target_arch = "ppc64")]
83    // return Some(cpu::PPC64);
84
85    #[cfg(target_arch = "sparc")]
86    return Some(cpu::SPARC32);
87
88    #[cfg(target_arch = "sparc64")]
89    return Some(cpu::SPARC64);
90
91    None
92}