// // Copyright (c) 2014 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.h: Operating system specific includes and defines. #ifndef COMMON_PLATFORM_H_ #define COMMON_PLATFORM_H_ #if defined(_WIN32) || defined(_WIN64) # define ANGLE_PLATFORM_WINDOWS 1 #elif defined(__APPLE__) # define ANGLE_PLATFORM_APPLE 1 # define ANGLE_PLATFORM_POSIX 1 #elif defined(ANDROID) # define ANGLE_PLATFORM_ANDROID 1 # define ANGLE_PLATFORM_POSIX 1 #elif defined(__linux__) || defined(EMSCRIPTEN) # define ANGLE_PLATFORM_LINUX 1 # define ANGLE_PLATFORM_POSIX 1 #elif defined(__FreeBSD__) || \ defined(__OpenBSD__) || \ defined(__NetBSD__) || \ defined(__DragonFly__) || \ defined(__sun) || \ defined(__GLIBC__) || \ defined(__GNU__) || \ defined(__QNX__) || \ defined(__Fuchsia__) || \ defined(__HAIKU__) # define ANGLE_PLATFORM_POSIX 1 #else # error Unsupported platform. #endif #ifdef ANGLE_PLATFORM_WINDOWS # ifndef STRICT # define STRICT 1 # endif # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN 1 # endif # ifndef NOMINMAX # define NOMINMAX 1 # endif # include # include # if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) # define ANGLE_ENABLE_WINDOWS_STORE 1 # endif # if defined(ANGLE_ENABLE_D3D9) # include # include # endif # if defined(ANGLE_ENABLE_D3D11) #include #include #include #include #include #include # endif #if defined(ANGLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11) #include #endif # if defined(ANGLE_ENABLE_WINDOWS_STORE) # include # if defined(_DEBUG) # include # include # endif # endif # undef near # undef far #endif #if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) #include #define ANGLE_USE_SSE #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) && !defined(__MINGW32__) #include #define ANGLE_USE_SSE #endif // Mips and arm devices need to include stddef for size_t. #if defined(__mips__) || defined(__arm__) || defined(__aarch64__) #include #endif // The MemoryBarrier function name collides with a macro under Windows // We will undef the macro so that the function name does not get replaced #undef MemoryBarrier #endif // COMMON_PLATFORM_H_