// // Copyright 2023 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // platform_helpers.h: common platform detection helper functions #ifndef COMMON_PLATFORM_HELPERS_H_ #define COMMON_PLATFORM_HELPERS_H_ #include "common/platform.h" namespace angle { inline constexpr bool IsAndroid() { #if defined(ANGLE_PLATFORM_ANDROID) return true; #else return false; #endif } inline constexpr bool IsApple() { // This means any Apple-vended OS (including iOS, macOS, etc) #if defined(ANGLE_PLATFORM_APPLE) return true; #else return false; #endif } inline constexpr bool IsChromeOS() { #if defined(ANGLE_PLATFORM_CHROMEOS) return true; #else return false; #endif } inline constexpr bool IsFuchsia() { #if defined(ANGLE_PLATFORM_FUCHSIA) return true; #else return false; #endif } inline constexpr bool IsIOS() { #if ANGLE_PLATFORM_IOS_FAMILY return true; #else return false; #endif } inline constexpr bool IsLinux() { #if defined(ANGLE_PLATFORM_LINUX) return true; #else return false; #endif } inline constexpr bool IsMac() { #if defined(ANGLE_PLATFORM_MACOS) return true; #else return false; #endif } inline constexpr bool IsWindows() { #if defined(ANGLE_PLATFORM_WINDOWS) return true; #else return false; #endif } // Helper for version number comparisons struct VersionTriple { constexpr VersionTriple() {} constexpr VersionTriple(int major, int minor, int patch) : majorVersion(major), minorVersion(minor), patchVersion(patch) {} int majorVersion = 0; int minorVersion = 0; int patchVersion = 0; }; bool operator==(const VersionTriple &a, const VersionTriple &b); bool operator!=(const VersionTriple &a, const VersionTriple &b); bool operator<(const VersionTriple &a, const VersionTriple &b); bool operator>=(const VersionTriple &a, const VersionTriple &b); // // Windows version check helpers // // Exact version checks bool IsWindowsXP(); bool IsWindowsVista(); bool IsWindows7(); bool IsWindows8(); bool IsWindows10(); bool IsWindows11(); // Windows version or later helpers bool IsWindowsXPOrLater(); bool IsWindowsVistaOrLater(); bool IsWindows7OrLater(); bool IsWindows8OrLater(); bool IsWindows10OrLater(); bool IsWindows11OrLater(); bool Is64Bit(); } // namespace angle #endif // COMMON_PLATFORM_HELPERS_H_