tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

platform.h (6705B)


      1 //
      2 // Copyright 2014 The ANGLE Project Authors. All rights reserved.
      3 // Use of this source code is governed by a BSD-style license that can be
      4 // found in the LICENSE file.
      5 //
      6 
      7 // platform.h: Operating system specific includes and defines.
      8 
      9 #ifndef COMMON_PLATFORM_H_
     10 #define COMMON_PLATFORM_H_
     11 
     12 #if defined(_WIN32)
     13 #    define ANGLE_PLATFORM_WINDOWS 1
     14 #elif defined(__Fuchsia__)
     15 #    define ANGLE_PLATFORM_FUCHSIA 1
     16 #    define ANGLE_PLATFORM_POSIX 1
     17 #elif defined(__APPLE__)
     18 #    define ANGLE_PLATFORM_APPLE 1
     19 #    define ANGLE_PLATFORM_POSIX 1
     20 #elif defined(ANDROID)
     21 #    define ANGLE_PLATFORM_ANDROID 1
     22 #    define ANGLE_PLATFORM_POSIX 1
     23 #elif defined(__ggp__)
     24 #    define ANGLE_PLATFORM_GGP 1
     25 #    define ANGLE_PLATFORM_POSIX 1
     26 #elif defined(__linux__) || defined(EMSCRIPTEN)
     27 #    define ANGLE_PLATFORM_LINUX 1
     28 #    define ANGLE_PLATFORM_POSIX 1
     29 #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) ||              \
     30    defined(__DragonFly__) || defined(__sun) || defined(__GLIBC__) || defined(__GNU__) || \
     31    defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__)
     32 #    define ANGLE_PLATFORM_POSIX 1
     33 #else
     34 #    error Unsupported platform.
     35 #endif
     36 
     37 #ifdef ANGLE_PLATFORM_WINDOWS
     38 #    ifndef STRICT
     39 #        define STRICT 1
     40 #    endif
     41 #    ifndef WIN32_LEAN_AND_MEAN
     42 #        define WIN32_LEAN_AND_MEAN 1
     43 #    endif
     44 #    ifndef NOMINMAX
     45 #        define NOMINMAX 1
     46 #    endif
     47 
     48 #    include <intrin.h>
     49 
     50 #    if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP)
     51 #        define ANGLE_ENABLE_WINDOWS_UWP 1
     52 #    endif
     53 
     54 #    if defined(ANGLE_ENABLE_D3D9)
     55 #        include <d3d9.h>
     56 #        include <d3dcompiler.h>
     57 #    endif
     58 
     59 // Include D3D11 headers when OpenGL is enabled on Windows for interop extensions.
     60 #    if defined(ANGLE_ENABLE_D3D11) || defined(ANGLE_ENABLE_OPENGL)
     61 #        include <d3d10_1.h>
     62 #        include <d3d11.h>
     63 #        include <d3d11_3.h>
     64 #        include <d3d11on12.h>
     65 #        include <d3d12.h>
     66 #        include <d3dcompiler.h>
     67 #        include <dxgi.h>
     68 #        include <dxgi1_2.h>
     69 #        include <dxgi1_4.h>
     70 #    endif
     71 
     72 #    if defined(ANGLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11)
     73 #        include <wrl.h>
     74 #    endif
     75 
     76 #    if defined(ANGLE_ENABLE_WINDOWS_UWP)
     77 #        include <dxgi1_3.h>
     78 #        if defined(_DEBUG)
     79 #            include <DXProgrammableCapture.h>
     80 #            include <dxgidebug.h>
     81 #        endif
     82 #    endif
     83 
     84 // Include <windows.h> to ensure tests related files can be built when building
     85 // vulkan only backend ANGLE on windows.
     86 #    if defined(ANGLE_ENABLE_VULKAN)
     87 #        include <windows.h>
     88 #    endif
     89 
     90 // Macros 'near', 'far', 'NEAR' and 'FAR' are defined by 'shared/minwindef.h' in the Windows SDK.
     91 // Macros 'near' and 'far' are empty. They are not used by other Windows headers and are undefined
     92 // here to avoid identifier conflicts. Macros 'NEAR' and 'FAR' contain 'near' and 'far'. They are
     93 // used by other Windows headers and are cleared here to avoid compilation errors.
     94 #    undef near
     95 #    undef far
     96 #    undef NEAR
     97 #    undef FAR
     98 #    define NEAR
     99 #    define FAR
    100 #endif
    101 
    102 #if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
    103 #    include <intrin.h>
    104 #    define ANGLE_USE_SSE
    105 #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
    106 #    include <x86intrin.h>
    107 #    define ANGLE_USE_SSE
    108 #endif
    109 
    110 // Mips and arm devices need to include stddef for size_t.
    111 #if defined(__mips__) || defined(__arm__) || defined(__aarch64__)
    112 #    include <stddef.h>
    113 #endif
    114 
    115 // The MemoryBarrier function name collides with a macro under Windows
    116 // We will undef the macro so that the function name does not get replaced
    117 #undef MemoryBarrier
    118 
    119 // Macro for hinting that an expression is likely to be true/false.
    120 #if !defined(ANGLE_LIKELY) || !defined(ANGLE_UNLIKELY)
    121 #    if defined(__GNUC__) || defined(__clang__)
    122 #        define ANGLE_LIKELY(x) __builtin_expect(!!(x), 1)
    123 #        define ANGLE_UNLIKELY(x) __builtin_expect(!!(x), 0)
    124 #    else
    125 #        define ANGLE_LIKELY(x) (x)
    126 #        define ANGLE_UNLIKELY(x) (x)
    127 #    endif  // defined(__GNUC__) || defined(__clang__)
    128 #endif      // !defined(ANGLE_LIKELY) || !defined(ANGLE_UNLIKELY)
    129 
    130 #ifdef ANGLE_PLATFORM_APPLE
    131 #    include <TargetConditionals.h>
    132 #    if TARGET_OS_OSX
    133 #        define ANGLE_PLATFORM_MACOS 1
    134 #    elif TARGET_OS_IPHONE
    135 #        define ANGLE_PLATFORM_IOS 1
    136 #        if TARGET_OS_SIMULATOR
    137 #            define ANGLE_PLATFORM_IOS_SIMULATOR 1
    138 #        endif
    139 #        if TARGET_OS_MACCATALYST
    140 #            define ANGLE_PLATFORM_MACCATALYST 1
    141 #        endif
    142 #    elif TARGET_OS_WATCH
    143 #        define ANGLE_PLATFORM_WATCHOS 1
    144 #        if TARGET_OS_SIMULATOR
    145 #            define ANGLE_PLATFORM_IOS_SIMULATOR 1
    146 #        endif
    147 #    elif TARGET_OS_TV
    148 #        define ANGLE_PLATFORM_APPLETV 1
    149 #        if TARGET_OS_SIMULATOR
    150 #            define ANGLE_PLATFORM_IOS_SIMULATOR 1
    151 #        endif
    152 #    endif
    153 #    // This might be useful globally. At the moment it is used
    154 #    // to differentiate MacCatalyst on Intel and Apple Silicon.
    155 #    if defined(__arm64__) || defined(__aarch64__)
    156 #        define ANGLE_CPU_ARM64 1
    157 #    endif
    158 #    // EAGL should be enabled on iOS, but not Mac Catalyst unless it is running on Apple Silicon.
    159 #    if (defined(ANGLE_PLATFORM_IOS) && !defined(ANGLE_PLATFORM_MACCATALYST)) || \
    160        (defined(ANGLE_PLATFORM_MACCATALYST) && defined(ANGLE_CPU_ARM64))
    161 #        define ANGLE_ENABLE_EAGL
    162 #    endif
    163 #    // Identify Metal API >= what shipped on macOS Catalina.
    164 #    if (defined(ANGLE_PLATFORM_MACOS) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101500) || \
    165        (defined(ANGLE_PLATFORM_IOS) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000)
    166 #        define ANGLE_WITH_MODERN_METAL_API 1
    167 #    endif
    168 #endif
    169 
    170 // Define ANGLE_WITH_ASAN macro.
    171 #if defined(__has_feature)
    172 #    if __has_feature(address_sanitizer)
    173 #        define ANGLE_WITH_ASAN 1
    174 #    endif
    175 #endif
    176 
    177 // Define ANGLE_WITH_MSAN macro.
    178 #if defined(__has_feature)
    179 #    if __has_feature(memory_sanitizer)
    180 #        define ANGLE_WITH_MSAN 1
    181 #    endif
    182 #endif
    183 
    184 // Define ANGLE_WITH_TSAN macro.
    185 #if defined(__has_feature)
    186 #    if __has_feature(thread_sanitizer)
    187 #        define ANGLE_WITH_TSAN 1
    188 #    endif
    189 #endif
    190 
    191 // Define ANGLE_WITH_UBSAN macro.
    192 #if defined(__has_feature)
    193 #    if __has_feature(undefined_behavior_sanitizer)
    194 #        define ANGLE_WITH_UBSAN 1
    195 #    endif
    196 #endif
    197 
    198 #if defined(ANGLE_WITH_ASAN) || defined(ANGLE_WITH_TSAN) || defined(ANGLE_WITH_UBSAN)
    199 #    define ANGLE_WITH_SANITIZER 1
    200 #endif  // defined(ANGLE_WITH_ASAN) || defined(ANGLE_WITH_TSAN) || defined(ANGLE_WITH_UBSAN)
    201 
    202 #include <cstdint>
    203 #if INTPTR_MAX == INT64_MAX
    204 #    define ANGLE_IS_64_BIT_CPU 1
    205 #else
    206 #    define ANGLE_IS_32_BIT_CPU 1
    207 #endif
    208 
    209 #endif  // COMMON_PLATFORM_H_