blob: d078be136529341add6a7c50ec306b5f6997d18a [file] [log] [blame]
//
// 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_