using System; using System.Runtime.InteropServices; // ReSharper disable MemberCanBePrivate.Global // ReSharper disable InconsistentNaming namespace Ryujinx.Common.Helper { public enum OperatingSystemType { MacOS, Linux, Windows } public static class RunningPlatform { public static readonly OperatingSystemType CurrentOS = IsMacOS ? OperatingSystemType.MacOS : IsWindows ? OperatingSystemType.Windows : IsLinux ? OperatingSystemType.Linux : throw new PlatformNotSupportedException(); public static Architecture Architecture => RuntimeInformation.OSArchitecture; public static Architecture CurrentProcessArchitecture => RuntimeInformation.ProcessArchitecture; public static bool IsMacOS => OperatingSystem.IsMacOS(); public static bool IsWindows => OperatingSystem.IsWindows(); public static bool IsLinux => OperatingSystem.IsLinux(); public static bool IsArm => Architecture is Architecture.Arm64; public static bool IsX64 => Architecture is Architecture.X64; public static bool IsIntelMac => IsMacOS && IsX64; public static bool IsArmMac => IsMacOS && IsArm; public static bool IsX64Windows => IsWindows && IsX64; public static bool IsArmWindows => IsWindows && IsArm; public static bool IsX64Linux => IsLinux && IsX64; public static bool IsArmLinux => IsLinux && IsArmMac; } }