⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 254572 in webkit


Ignore:
Timestamp:
Jan 15, 2020, 9:48:50 AM (7 years ago)
Author:
weinig@apple.com
Message:

Platform.h is out of control Part 4: Split PLATFORM_* macro definitions out of Platform.h and into a new PlatformLegacy.h
​https://bugs.webkit.org/show_bug.cgi?id=206272

Reviewed by Anders Carlsson.

As a another step towards cleaning up Platform.h, split out all the legacy platform
macros into their own file.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/Platform.h:
  • wtf/PlatformLegacy.h: Copied from Source/WTF/wtf/Platform.h.
Location:
trunk/Source/WTF
Files:
4 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r254544 r254572  
     12020-01-14  Sam Weinig  <weinig@apple.com>
     2
     3        Platform.h is out of control Part 4: Split PLATFORM_* macro definitions out of Platform.h and into a new PlatformLegacy.h
     4        https://bugs.webkit.org/show_bug.cgi?id=206272
     5
     6        Reviewed by Anders Carlsson.
     7
     8        As a another step towards cleaning up Platform.h, split out all the legacy platform
     9        macros into their own file.
     10
     11        * WTF.xcodeproj/project.pbxproj:
     12        * wtf/CMakeLists.txt:
     13        * wtf/Platform.h:
     14        * wtf/PlatformLegacy.h: Copied from Source/WTF/wtf/Platform.h.
     15
    1162020-01-14  Sam Weinig  <weinig@apple.com>
    217
  • trunk/Source/WTF/WTF.xcodeproj/project.pbxproj

    r254544 r254572  
    448448                7C42307223CE2D8A006E54D0 /* PlatformCPU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCPU.h; sourceTree = "<group>"; };
    449449                7C42307323CE2D8B006E54D0 /* PlatformOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformOS.h; sourceTree = "<group>"; };
     450                7C42307423CEB187006E54D0 /* PlatformLegacy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformLegacy.h; sourceTree = "<group>"; };
    450451                7C9692941F66306E00267A9E /* KeyValuePair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyValuePair.h; sourceTree = "<group>"; };
    451452                7CBBA07319BB7FDC00BBF025 /* OSObjectPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSObjectPtr.h; sourceTree = "<group>"; };
    … …  
    11281129                                7C42307223CE2D8A006E54D0 /* PlatformCPU.h */,
    11291130                                7C42307123CE2D8A006E54D0 /* PlatformEnable.h */,
     1131                                7C42307423CEB187006E54D0 /* PlatformLegacy.h */,
    11301132                                7C42307323CE2D8B006E54D0 /* PlatformOS.h */,
    11311133                                FE1E2C41224187C600F6B729 /* PlatformRegisters.cpp */,
  • trunk/Source/WTF/wtf/CMakeLists.txt

    r254544 r254572  
    174174    PlatformCPU.h
    175175    PlatformEnable.h
     176    PlatformLegacy.h
    176177    PlatformOS.h
    177178    PlatformRegisters.h
  • trunk/Source/WTF/wtf/Platform.h

    r254544 r254572  
    3131#include <wtf/Compiler.h>
    3232
    33 /* Include CPU specific macros */
     33/* ==== Platform adaptation macros: these describe properties of the target environment. ==== */
     34
     35/* CPU() - the target CPU architecture */
    3436#include <wtf/PlatformCPU.h>
    3537
    36 /* Include underlying operating system specific macros */
     38/* OS() - underlying operating system; only to be used for mandated low-level services like
     39   virtual memory, not to choose a GUI toolkit */
    3740#include <wtf/PlatformOS.h>
    3841
    39 /* ==== PLATFORM handles OS, operating environment, graphics API, and
     42/* PLATFORM() - handles OS, operating environment, graphics API, and
    4043   CPU. This macro will be phased out in favor of platform adaptation
    41    macros, policy decision macros, and top-level port definitions. ==== */
    42 #define PLATFORM(WTF_FEATURE) (defined WTF_PLATFORM_##WTF_FEATURE  && WTF_PLATFORM_##WTF_FEATURE)
    43 
    44 
    45 /* ==== Platform adaptation macros: these describe properties of the target environment. ==== */
     44   macros, policy decision macros, and top-level port definitions. */
     45#include <wtf/PlatformLegacy.h>
    4646
    4747/* HAVE() - specific system features (headers, functions or similar) that are present or not */
    … …  
    5656#define ENABLE(WTF_FEATURE) (defined ENABLE_##WTF_FEATURE  && ENABLE_##WTF_FEATURE)
    5757
     58
     59#if PLATFORM(COCOA)
     60#if defined __has_include && __has_include(<CoreFoundation/CFPriv.h>)
     61#define USE_APPLE_INTERNAL_SDK 1
     62#endif
     63#endif
    5864
    5965/* MIPS requires allocators to use aligned memory */
    … …  
    116122/* If the included features.h is glibc's one, __GLIBC__ is defined. */
    117123#include <features.h>
    118 #endif
    119 
    120 /* FIXME: these are all mixes of OS, operating environment and policy choices. */
    121 /* PLATFORM(GTK) */
    122 /* PLATFORM(MAC) */
    123 /* PLATFORM(IOS) */
    124 /* PLATFORM(IOS_FAMILY) */
    125 /* PLATFORM(IOS_SIMULATOR) */
    126 /* PLATFORM(IOS_FAMILY_SIMULATOR) */
    127 /* PLATFORM(WIN) */
    128 #if defined(BUILDING_GTK__)
    129 #define WTF_PLATFORM_GTK 1
    130 #elif defined(BUILDING_WPE__)
    131 #define WTF_PLATFORM_WPE 1
    132 #elif defined(BUILDING_JSCONLY__)
    133 /* JSCOnly does not provide PLATFORM() macro */
    134 #elif OS(MAC_OS_X)
    135 #define WTF_PLATFORM_MAC 1
    136 #elif OS(IOS_FAMILY)
    137 #if OS(IOS)
    138 #define WTF_PLATFORM_IOS 1
    139 #endif
    140 #define WTF_PLATFORM_IOS_FAMILY 1
    141 #if TARGET_OS_SIMULATOR
    142 #if OS(IOS)
    143 #define WTF_PLATFORM_IOS_SIMULATOR 1
    144 #endif
    145 #define WTF_PLATFORM_IOS_FAMILY_SIMULATOR 1
    146 #endif
    147 #if defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST
    148 #define WTF_PLATFORM_MACCATALYST 1
    149 #endif
    150 #elif OS(WINDOWS)
    151 #define WTF_PLATFORM_WIN 1
    152 #endif
    153 
    154 /* PLATFORM(COCOA) */
    155 #if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
    156 #define WTF_PLATFORM_COCOA 1
    157 #endif
    158 
    159 #if PLATFORM(COCOA)
    160 #if defined __has_include && __has_include(<CoreFoundation/CFPriv.h>)
    161 #define USE_APPLE_INTERNAL_SDK 1
    162 #endif
    163 #endif
    164 
    165 /* PLATFORM(APPLETV) */
    166 #if defined(TARGET_OS_TV) && TARGET_OS_TV
    167 #define WTF_PLATFORM_APPLETV 1
    168 #endif
    169 
    170 /* PLATFORM(WATCHOS) */
    171 #if defined(TARGET_OS_WATCH) && TARGET_OS_WATCH
    172 #define WTF_PLATFORM_WATCHOS 1
    173124#endif
    174125
  • trunk/Source/WTF/wtf/PlatformLegacy.h

    r254550 r254572  
    2828#pragma once
    2929
    30 /* Include compiler specific macros */
    31 #include <wtf/Compiler.h>
     30/* PLATFORM() - handles OS, operating environment, graphics API, and
     31   CPU. This macro will be phased out in favor of platform adaptation
     32   macros, policy decision macros, and top-level port definitions. */
     33#define PLATFORM(WTF_FEATURE) (defined WTF_PLATFORM_##WTF_FEATURE && WTF_PLATFORM_##WTF_FEATURE)
    3234
    33 /* Include CPU specific macros */
    34 #include <wtf/PlatformCPU.h>
    35 
    36 /* Include underlying operating system specific macros */
    37 #include <wtf/PlatformOS.h>
    38 
    39 /* ==== PLATFORM handles OS, operating environment, graphics API, and
    40    CPU. This macro will be phased out in favor of platform adaptation
    41    macros, policy decision macros, and top-level port definitions. ==== */
    42 #define PLATFORM(WTF_FEATURE) (defined WTF_PLATFORM_##WTF_FEATURE  && WTF_PLATFORM_##WTF_FEATURE)
    43 
    44 
    45 /* ==== Platform adaptation macros: these describe properties of the target environment. ==== */
    46 
    47 /* HAVE() - specific system features (headers, functions or similar) that are present or not */
    48 #define HAVE(WTF_FEATURE) (defined HAVE_##WTF_FEATURE  && HAVE_##WTF_FEATURE)
    49 
    50 
    51 /* ==== Policy decision macros: these define policy choices for a particular port. ==== */
    52 
    53 /* USE() - use a particular third-party library or optional OS service */
    54 #define USE(WTF_FEATURE) (defined USE_##WTF_FEATURE  && USE_##WTF_FEATURE)
    55 /* ENABLE() - turn on a specific feature of WebKit */
    56 #define ENABLE(WTF_FEATURE) (defined ENABLE_##WTF_FEATURE  && ENABLE_##WTF_FEATURE)
    57 
    58 
    59 /* MIPS requires allocators to use aligned memory */
    60 #if CPU(MIPS) || CPU(MIPS64)
    61 #define USE_ARENA_ALLOC_ALIGNMENT_INTEGER 1
    62 #endif
    63 
    64 /*ARMv5TE requires allocators to use aligned memory*/
    65 #if defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
    66 #define USE_ARENA_ALLOC_ALIGNMENT_INTEGER 1
    67 #endif
    68 
    69 /*ARMv5TE requires allocators to use aligned memory*/
    70 #if defined(__TARGET_ARCH_5E) || defined(__TARGET_ARCH_5TE) || defined(__TARGET_ARCH_5TEJ)
    71 #define USE_ARENA_ALLOC_ALIGNMENT_INTEGER 1
    72 #endif
    73 
    74 #if CPU(ARM_NEON)
    75 /* All NEON intrinsics usage can be disabled by this macro. */
    76 #define HAVE_ARM_NEON_INTRINSICS 1
    77 #endif
    78 
    79 /* FIXME: This should be renamed to WTF_CPU_ARM_IDIV_INSTRUCTIONS and moved to CPU.h */
    80 #if defined(__ARM_ARCH_EXT_IDIV__) || CPU(APPLE_ARMV7S)
    81 #define HAVE_ARM_IDIV_INSTRUCTIONS 1
    82 #endif
    83 
    84 
    85 
    86 /* Operating environments */
    87 
    88 
    89 /* FIXME: Rename WTF_CPU_EFFECTIVE_ADDRESS_WIDTH to WTF_OS_EFFECTIVE_ADDRESS_WIDTH, as it is an OS feature, not a CPU feature. */
    90 #if CPU(ADDRESS64)
    91 #if OS(DARWIN) && CPU(ARM64)
    92 #define WTF_CPU_EFFECTIVE_ADDRESS_WIDTH 36
    93 #else
    94 /* We strongly assume that effective address width is <= 48 in 64bit architectures (e.g. NaN boxing). */
    95 #define WTF_CPU_EFFECTIVE_ADDRESS_WIDTH 48
    96 #endif
    97 #else
    98 #define WTF_CPU_EFFECTIVE_ADDRESS_WIDTH 32
    99 #endif
    100 
    101 /* Export macro support. Detects the attributes available for shared library symbol export
    102    decorations. */
    103 #if OS(WINDOWS) || (COMPILER_HAS_CLANG_DECLSPEC(dllimport) && COMPILER_HAS_CLANG_DECLSPEC(dllexport))
    104 #define USE_DECLSPEC_ATTRIBUTE 1
    105 #define USE_VISIBILITY_ATTRIBUTE 0
    106 #elif defined(__GNUC__)
    107 #define USE_DECLSPEC_ATTRIBUTE 0
    108 #define USE_VISIBILITY_ATTRIBUTE 1
    109 #else
    110 #define USE_DECLSPEC_ATTRIBUTE 0
    111 #define USE_VISIBILITY_ATTRIBUTE 0
    112 #endif
    113 
    114 /* Standard libraries */
    115 #if defined(HAVE_FEATURES_H) && HAVE_FEATURES_H
    116 /* If the included features.h is glibc's one, __GLIBC__ is defined. */
    117 #include <features.h>
    118 #endif
    11935
    12036/* FIXME: these are all mixes of OS, operating environment and policy choices. */
    … …  
    15773#endif
    15874
    159 #if PLATFORM(COCOA)
    160 #if defined __has_include && __has_include(<CoreFoundation/CFPriv.h>)
    161 #define USE_APPLE_INTERNAL_SDK 1
    162 #endif
    163 #endif
    164 
    16575/* PLATFORM(APPLETV) */
    16676#if defined(TARGET_OS_TV) && TARGET_OS_TV
    … …  
    17282#define WTF_PLATFORM_WATCHOS 1
    17383#endif
    174 
    175 /* FIXME: ASSERT_ENABLED should defined in different, perhaps its own, file. */
    176 /* ASSERT_ENABLED should be true if we want the current compilation unit to
    177    do debug assertion checks unconditionally (e.g. treat a debug ASSERT
    178    like a RELEASE_ASSERT.
    179 */
    180 #ifndef ASSERT_ENABLED
    181 #ifdef NDEBUG
    182 #define ASSERT_ENABLED 0
    183 #else
    184 #define ASSERT_ENABLED 1
    185 #endif
    186 #endif
    187 
    188 
    189 
    190 #if PLATFORM(COCOA)
    191 #define USE_CG 1
    192 #endif
    193 
    194 #if PLATFORM(COCOA)
    195 #define USE_CA 1
    196 #endif
    197 
    198 #if PLATFORM(GTK) || PLATFORM(WPE)
    199 #define USE_GLIB 1
    200 #endif
    201 
    202 #if PLATFORM(GTK) || PLATFORM(WPE)
    203 #define USE_FREETYPE 1
    204 #endif
    205 
    206 #if PLATFORM(GTK) || PLATFORM(WPE)
    207 #define USE_HARFBUZZ 1
    208 #endif
    209 
    210 #if PLATFORM(GTK) || PLATFORM(WPE)
    211 #define USE_SOUP 1
    212 #endif
    213 
    214 #if PLATFORM(GTK) || PLATFORM(WPE)
    215 #define USE_WEBP 1
    216 #endif
    217 
    218 #if PLATFORM(GTK)
    219 #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_36
    220 #define GDK_VERSION_MIN_REQUIRED GDK_VERSION_3_6
    221 #endif
    222 
    223 #if PLATFORM(WPE)
    224 #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_40
    225 #endif
    226 
    227 #if USE(SOUP)
    228 #define SOUP_VERSION_MIN_REQUIRED SOUP_VERSION_2_42
    229 #endif
    230 
    231 /* On Windows, use QueryPerformanceCounter by default */
    232 #if OS(WINDOWS)
    233 #define USE_QUERY_PERFORMANCE_COUNTER  1
    234 #endif
    235 
    236 #if PLATFORM(COCOA)
    237 #define HAVE_OUT_OF_PROCESS_LAYER_HOSTING 1
    238 #endif
    239 
    240 #if PLATFORM(COCOA)
    241 #define USE_CF 1
    242 #endif
    243 
    244 #if PLATFORM(COCOA) || (PLATFORM(GTK) || PLATFORM(WPE))
    245 #define USE_FILE_LOCK 1
    246 #endif
    247 
    248 #if PLATFORM(COCOA)
    249 #define USE_FOUNDATION 1
    250 #endif
    251 
    252 #if PLATFORM(COCOA)
    253 #define USE_NETWORK_CFDATA_ARRAY_CALLBACK 1
    254 #endif
    255 
    256 
    257 #if PLATFORM(COCOA)
    258 /* Cocoa defines a series of platform macros for debugging. */
    259 /* Some of them are really annoying because they use common names (e.g. check()). */
    260 /* Disable those macros so that we are not limited in how we name methods and functions. */
    261 #undef __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES
    262 #define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
    263 #endif
    264 
    265 #if PLATFORM(MAC)
    266 #define HAVE_RUNLOOP_TIMER 1
    267 #endif
    268 
    269 #if PLATFORM(MAC)
    270 #define HAVE_SEC_KEYCHAIN 1
    271 #endif
    272 
    273 #if PLATFORM(MAC)
    274 #define HAVE_HISERVICES 1
    275 #endif
    276 
    277 #if PLATFORM(MAC)
    278 #define USE_APPKIT 1
    279 #endif
    280 
    281 #if PLATFORM(MAC)
    282 #define USE_PASSKIT 1
    283 #endif
    284 
    285 #if PLATFORM(MAC)
    286 #define HAVE_NETWORK_EXTENSION 1
    287 #endif
    288 
    289 #if PLATFORM(MAC)
    290 #define USE_PLUGIN_HOST_PROCESS 1
    291 #endif
    292 
    293 #if PLATFORM(IOS_FAMILY)
    294 #define HAVE_NETWORK_EXTENSION 1
    295 #endif
    296 
    297 #if PLATFORM(IOS_FAMILY)
    298 #define HAVE_READLINE 1
    299 #endif
    300 
    301 #if PLATFORM(IOS_FAMILY)
    302 #define USE_UIKIT_EDITING 1
    303 #endif
    304 
    305 #if PLATFORM(IOS_FAMILY)
    306 #define USE_WEB_THREAD 1
    307 #endif
    308 
    309 #if PLATFORM(IOS_FAMILY) && CPU(ARM_NEON)
    310 #undef HAVE_ARM_NEON_INTRINSICS
    311 #define HAVE_ARM_NEON_INTRINSICS 0
    312 #endif
    313 
    314 #if !defined(HAVE_PDFHOSTVIEWCONTROLLER_SNAPSHOTTING) && PLATFORM(IOS)
    315 #define HAVE_PDFHOSTVIEWCONTROLLER_SNAPSHOTTING 1
    316 #endif
    317 
    318 #if !defined(HAVE_VISIBILITY_PROPAGATION_VIEW) && PLATFORM(IOS_FAMILY)
    319 #define HAVE_VISIBILITY_PROPAGATION_VIEW 1
    320 #endif
    321 
    322 #if !defined(HAVE_UISCENE) && PLATFORM(IOS_FAMILY)
    323 #define HAVE_UISCENE 1
    324 #endif
    325 
    326 #if !defined(HAVE_AVSTREAMSESSION) && PLATFORM(MAC)
    327 #define HAVE_AVSTREAMSESSION 1
    328 #endif
    329 
    330 #if !defined(HAVE_PASSKIT_API_TYPE) && (PLATFORM(IOS_FAMILY) || PLATFORM(MAC))
    331 #define HAVE_PASSKIT_API_TYPE 1
    332 #endif
    333 
    334 #if !defined(HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER) && (PLATFORM(IOS) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400))
    335 #define HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER 1
    336 #endif
    337 
    338 #if !defined(USE_UIKIT_KEYBOARD_ADDITIONS) && (PLATFORM(IOS) || PLATFORM(MACCATALYST))
    339 #define USE_UIKIT_KEYBOARD_ADDITIONS 1
    340 #endif
    341 
    342 
    343 #if !defined(HAVE_ACCESSIBILITY) && (PLATFORM(COCOA) || PLATFORM(WIN) || PLATFORM(GTK) || PLATFORM(WPE))
    344 #define HAVE_ACCESSIBILITY 1
    345 #endif
    346 
    347 /* FIXME: Remove after CMake build enabled on Darwin */
    348 #if OS(DARWIN)
    349 #define HAVE_ERRNO_H 1
    350 #endif
    351 
    352 #if OS(DARWIN)
    353 #define HAVE_LANGINFO_H 1
    354 #endif
    355 
    356 #if OS(DARWIN)
    357 #define HAVE_LOCALTIME_R 1
    358 #endif
    359 
    360 #if OS(DARWIN)
    361 #define HAVE_MMAP 1
    362 #endif
    363 
    364 #if OS(DARWIN)
    365 #define HAVE_REGEX_H 1
    366 #endif
    367 
    368 #if OS(DARWIN)
    369 #define HAVE_SIGNAL_H 1
    370 #endif
    371 
    372 #if OS(DARWIN)
    373 #define HAVE_STAT_BIRTHTIME 1
    374 #endif
    375 
    376 #if OS(DARWIN)
    377 #define HAVE_STRINGS_H 1
    378 #endif
    379 
    380 #if OS(DARWIN)
    381 #define HAVE_STRNSTR 1
    382 #endif
    383 
    384 #if OS(DARWIN)
    385 #define HAVE_SYS_PARAM_H 1
    386 #endif
    387 
    388 #if OS(DARWIN)
    389 #define HAVE_SYS_TIME_H 1
    390 #endif
    391 
    392 #if OS(DARWIN)
    393 #define HAVE_TM_GMTOFF 1
    394 #endif
    395 
    396 #if OS(DARWIN)
    397 #define HAVE_TM_ZONE 1
    398 #endif
    399 
    400 #if OS(DARWIN)
    401 #define HAVE_TIMEGM 1
    402 #endif
    403 
    404 #if OS(DARWIN)
    405 #define HAVE_PTHREAD_MAIN_NP 1
    406 #endif
    407 
    408 #if OS(DARWIN) && (CPU(X86_64) || CPU(ARM64))
    409 #define HAVE_INT128_T 1
    410 #endif
    411 
    412 #if OS(UNIX)
    413 #define USE_PTHREADS 1
    414 #endif
    415 
    416 #if OS(UNIX) && !OS(FUCHSIA)
    417 #define HAVE_RESOURCE_H 1
    418 #endif
    419 
    420 #if OS(UNIX) && !OS(FUCHSIA)
    421 #define HAVE_PTHREAD_SETSCHEDPARAM 1
    422 #endif
    423 
    424 #if OS(DARWIN)
    425 #define HAVE_DISPATCH_H 1
    426 #endif
    427 
    428 #if OS(DARWIN)
    429 #define HAVE_MADV_FREE 1
    430 #endif
    431 
    432 #if OS(DARWIN)
    433 #define HAVE_MADV_FREE_REUSE 1
    434 #endif
    435 
    436 #if OS(DARWIN)
    437 #define HAVE_MADV_DONTNEED 1
    438 #endif
    439 
    440 #if OS(DARWIN)
    441 #define HAVE_MERGESORT 1
    442 #endif
    443 
    444 #if OS(DARWIN)
    445 #define HAVE_PTHREAD_SETNAME_NP 1
    446 #endif
    447 
    448 #if OS(DARWIN)
    449 #define HAVE_READLINE 1
    450 #endif
    451 
    452 #if OS(DARWIN)
    453 #define HAVE_SYS_TIMEB_H 1
    454 #endif
    455 
    456 #if OS(DARWIN)
    457 #define HAVE_AUDIT_TOKEN 1
    458 #endif
    459 
    460 #if OS(DARWIN) && __has_include(<mach/mach_exc.defs>) && !PLATFORM(GTK)
    461 #define HAVE_MACH_EXCEPTIONS 1
    462 #endif
    463 
    464 #if OS(DARWIN) && !PLATFORM(GTK)
    465 #define USE_ACCELERATE 1
    466 #endif
    467 
    468 #if OS(DARWIN) && !PLATFORM(IOS_FAMILY)
    469 #define HAVE_HOSTED_CORE_ANIMATION 1
    470 #endif
    471 
    472 
    473 #if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
    474 #define HAVE_MACHINE_CONTEXT 1
    475 #endif
    476 
    477 #if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__) && !CPU(MIPS))
    478 #define HAVE_BACKTRACE 1
    479 #endif
    480 
    481 #if OS(DARWIN) || OS(LINUX)
    482 #if PLATFORM(GTK)
    483 #if defined(__GLIBC__) && !defined(__UCLIBC__) && !CPU(MIPS)
    484 #define HAVE_BACKTRACE_SYMBOLS 1
    485 #endif
    486 #endif /* PLATFORM(GTK) */
    487 #define HAVE_DLADDR 1
    488 #endif /* OS(DARWIN) || OS(LINUX) */
    489 
    490 
    491 #if OS(WINDOWS)
    492 #define USE_SYSTEM_MALLOC 1
    493 #endif
    494 
    495 #if !defined(USE_JSVALUE64) && !defined(USE_JSVALUE32_64)
    496 #if CPU(ADDRESS64) || CPU(ARM64)
    497 #define USE_JSVALUE64 1
    498 #else
    499 #define USE_JSVALUE32_64 1
    500 #endif
    501 #endif /* !defined(USE_JSVALUE64) && !defined(USE_JSVALUE32_64) */
    502 
    503 #if __has_include(<System/pthread_machdep.h>)
    504 #define HAVE_FAST_TLS 1
    505 #endif
    506 
    507 #if COMPILER(GCC_COMPATIBLE)
    508 #define HAVE_COMPUTED_GOTO 1
    509 #endif
    510 
    511 /* FIXME: This name should be more specific if it is only for use with CallFrame* */
    512 /* Use __builtin_frame_address(1) to get CallFrame* */
    513 #if COMPILER(GCC_COMPATIBLE) && (CPU(ARM64) || CPU(X86_64))
    514 #define USE_BUILTIN_FRAME_ADDRESS 1
    515 #endif
    516 
    517 #if CPU(ARM64E) && OS(DARWIN)
    518 #define HAVE_FJCVTZS_INSTRUCTION 1
    519 #endif
    520 
    521 #if PLATFORM(IOS)
    522 #define HAVE_APP_LINKS 1
    523 #endif
    524 
    525 #if PLATFORM(IOS)
    526 #define USE_PASSKIT 1
    527 #endif
    528 
    529 #if PLATFORM(IOS)
    530 #define USE_QUICK_LOOK 1
    531 #endif
    532 
    533 #if PLATFORM(IOS)
    534 #define USE_SYSTEM_PREVIEW 1
    535 #endif
    536 
    537 #if PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)
    538 #define HAVE_CELESTIAL 1
    539 #endif
    540 
    541 #if PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)
    542 #define HAVE_CORE_ANIMATION_RENDER_SERVER 1
    543 #endif
    544 
    545 #if PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST) && !PLATFORM(APPLETV)
    546 #define HAVE_PARENTAL_CONTROLS_WITH_UNBLOCK_HANDLER 1
    547 #endif
    548 
    549 #if PLATFORM(COCOA)
    550 #define USE_AVFOUNDATION 1
    551 #endif
    552 
    553 #if PLATFORM(COCOA)
    554 #define USE_PROTECTION_SPACE_AUTH_CALLBACK 1
    555 #endif
    556 
    557 /* FIXME: Enable HAVE_PARENTAL_CONTROLS for watchOS Simulator once rdar://problem/54608386 is resolved */
    558 #if PLATFORM(COCOA) && (!PLATFORM(APPLETV) && (!PLATFORM(WATCHOS) || !PLATFORM(IOS_FAMILY_SIMULATOR)))
    559 #define HAVE_PARENTAL_CONTROLS 1
    560 #endif
    561 
    562 #if PLATFORM(COCOA) && !PLATFORM(APPLETV)
    563 #define HAVE_AVKIT 1
    564 #endif
    565 
    566 #if PLATFORM(COCOA)
    567 #define USE_METAL 1
    568 #endif
    569 
    570 
    571 #if USE(GLIB)
    572 #include <wtf/glib/GTypedefs.h>
    573 #endif
    574 
    575 #if !defined(USE_EXPORT_MACROS) && (PLATFORM(COCOA) || OS(WINDOWS))
    576 #define USE_EXPORT_MACROS 1
    577 #endif
    578 
    579 #if PLATFORM(GTK) || PLATFORM(WPE)
    580 #define USE_UNIX_DOMAIN_SOCKETS 1
    581 #endif
    582 
    583 #if !defined(USE_IMLANG_FONT_LINK2)
    584 #define USE_IMLANG_FONT_LINK2 1
    585 #endif
    586 
    587 #if PLATFORM(COCOA)
    588 #define USE_COREMEDIA 1
    589 #endif
    590 
    591 #if PLATFORM(COCOA)
    592 #define USE_VIDEOTOOLBOX 1
    593 #endif
    594 
    595 #if PLATFORM(COCOA)
    596 #define HAVE_AVFOUNDATION_VIDEO_OUTPUT 1
    597 #endif
    598 
    599 #if PLATFORM(COCOA)
    600 #define HAVE_CORE_VIDEO 1
    601 #endif
    602 
    603 #if PLATFORM(COCOA)
    604 #define HAVE_MEDIA_PLAYER 1
    605 #endif
    606 
    607 #if PLATFORM(COCOA)
    608 #define HAVE_AVFOUNDATION_MEDIA_SELECTION_GROUP 1
    609 #endif
    610 
    611 #if PLATFORM(COCOA)
    612 #define HAVE_AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT 1
    613 #endif
    614 
    615 #if PLATFORM(COCOA)
    616 #define HAVE_MEDIA_ACCESSIBILITY_FRAMEWORK 1
    617 #endif
    618 
    619 #if PLATFORM(COCOA)
    620 #define HAVE_AVFOUNDATION_LOADER_DELEGATE 1
    621 #endif
    622 
    623 #if !PLATFORM(WIN)
    624 #define USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR 1
    625 #endif
    626 
    627 #if PLATFORM(MAC) || PLATFORM(MACCATALYST)
    628 #define HAVE_APPLE_GRAPHICS_CONTROL 1
    629 #endif
    630 
    631 #if PLATFORM(MAC) || PLATFORM(MACCATALYST)
    632 #define HAVE_NSCURSOR 1
    633 #endif
    634 
    635 #if PLATFORM(MAC)
    636 #define USE_COREAUDIO 1
    637 #endif
    638 
    639 #if !defined(USE_ZLIB)
    640 #define USE_ZLIB 1
    641 #endif
    642 
    643 #if !defined(HAVE_QOS_CLASSES) && PLATFORM(COCOA)
    644 #define HAVE_QOS_CLASSES 1
    645 #endif
    646 
    647 #if !defined(HAVE_VOUCHERS) && PLATFORM(COCOA)
    648 #define HAVE_VOUCHERS 1
    649 #endif
    650 
    651 #define USE_GRAMMAR_CHECKING 1
    652 
    653 #if PLATFORM(COCOA) || PLATFORM(GTK)
    654 #define USE_UNIFIED_TEXT_CHECKING 1
    655 #endif
    656 
    657 #if PLATFORM(MAC)
    658 #define USE_AUTOMATIC_TEXT_REPLACEMENT 1
    659 #endif
    660 
    661 #if PLATFORM(MAC)
    662 /* Some platforms provide UI for suggesting autocorrection. */
    663 #define USE_AUTOCORRECTION_PANEL 1
    664 #endif
    665 
    666 #if PLATFORM(COCOA)
    667 /* Some platforms use spelling and autocorrection markers to provide visual cue. On such platform, if word with marker is edited, we need to remove the marker. */
    668 #define USE_MARKER_REMOVAL_UPON_EDITING 1
    669 #endif
    670 
    671 #if PLATFORM(MAC)
    672 #define USE_INSERTION_UNDO_GROUPING 1
    673 #endif
    674 
    675 #if PLATFORM(COCOA)
    676 #define HAVE_AVASSETREADER 1
    677 #endif
    678 
    679 #if PLATFORM(COCOA)
    680 #define USE_AUDIO_SESSION 1
    681 #endif
    682 
    683 #if PLATFORM(COCOA)
    684 #define HAVE_IOSURFACE 1
    685 #endif
    686 
    687 #if PLATFORM(IOS_FAMILY) && !PLATFORM(IOS_FAMILY_SIMULATOR)
    688 #define HAVE_IOSURFACE_COREIMAGE_SUPPORT 1
    689 #endif
    690 
    691 #if PLATFORM(IOS_FAMILY) && !PLATFORM(IOS_FAMILY_SIMULATOR) && !PLATFORM(MACCATALYST)
    692 #define HAVE_IOSURFACE_ACCELERATOR 1
    693 #endif
    694 
    695 #if COMPILER(MSVC)
    696 #undef __STDC_FORMAT_MACROS
    697 #define __STDC_FORMAT_MACROS
    698 #undef __STDC_LIMIT_MACROS
    699 #define __STDC_LIMIT_MACROS
    700 #endif
    701 
    702 #if PLATFORM(MAC)
    703 #define HAVE_NS_ACTIVITY 1
    704 #endif
    705 
    706 
    707 /* Set TARGET_OS_IPHONE to 0 by default to allow using it as a guard
    708  * in cross-platform the same way as it is used in OS(DARWIN) code. */
    709 #if !defined(TARGET_OS_IPHONE) && !OS(DARWIN)
    710 #define TARGET_OS_IPHONE 0
    711 #endif
    712 
    713 #if PLATFORM(COCOA)
    714 #define USE_MEDIATOOLBOX 1
    715 #endif
    716 
    717 #if PLATFORM(COCOA)
    718 #define USE_OS_LOG 1
    719 #endif
    720 
    721 #if PLATFORM(COCOA) && USE(APPLE_INTERNAL_SDK)
    722 #define USE_OS_STATE 1
    723 #endif
    724 
    725 #if PLATFORM(COCOA)
    726 #define HAVE_SEC_TRUST_SERIALIZATION 1
    727 #endif
    728 
    729 #if !defined(WTF_DEFAULT_EVENT_LOOP)
    730 #define WTF_DEFAULT_EVENT_LOOP 1
    731 #endif
    732 
    733 #if WTF_DEFAULT_EVENT_LOOP
    734 #if USE(GLIB)
    735 /* Use GLib's event loop abstraction. Primarily GTK port uses it. */
    736 #define USE_GLIB_EVENT_LOOP 1
    737 #elif OS(WINDOWS)
    738 /* Use Windows message pump abstraction.
    739  * Even if the port is AppleWin, we use the Windows message pump system for the event loop,
    740  * so that USE(WINDOWS_EVENT_LOOP) && USE(CF) can be true.
    741  * And PLATFORM(WIN) and PLATFORM(GTK) are exclusive. If the port is GTK,
    742  * PLATFORM(WIN) should be false. And in that case, GLib's event loop is used.
    743  */
    744 #define USE_WINDOWS_EVENT_LOOP 1
    745 #elif PLATFORM(COCOA)
    746 /* OS X and IOS. Use CoreFoundation & GCD abstraction. */
    747 #define USE_COCOA_EVENT_LOOP 1
    748 #else
    749 #define USE_GENERIC_EVENT_LOOP 1
    750 #endif
    751 #endif
    752 
    753 #if PLATFORM(COCOA)
    754 #define USE_MEDIAREMOTE 1
    755 #endif
    756 
    757 #if COMPILER(MSVC)
    758 /* Enable strict runtime stack buffer checks. */
    759 #pragma strict_gs_check(on)
    760 #endif
    761 
    762 #if PLATFORM(MAC)
    763 #define HAVE_TOUCH_BAR 1
    764 #endif
    765 
    766 #if PLATFORM(MAC)
    767 #define USE_DICTATION_ALTERNATIVES 1
    768 #endif
    769 
    770 
    771 #if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(MACCATALYST) || USE(GCRYPT)
    772 #define HAVE_RSA_PSS 1
    773 #endif
    774 
    775 #if (PLATFORM(MAC) && USE(APPLE_INTERNAL_SDK) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    776 #define USE_SOURCE_APPLICATION_AUDIT_DATA 1
    777 #endif
    778 
    779 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    780 #define HAVE_HSTS_STORAGE_PATH 1
    781 #endif
    782 
    783 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
    784 #define HAVE_URL_FORMATTING 1
    785 #endif
    786 
    787 #if !OS(WINDOWS)
    788 #define HAVE_STACK_BOUNDS_FOR_NEW_THREAD 1
    789 #endif
    790 
    791 #if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
    792 #define HAVE_AVCONTENTKEYSESSION 1
    793 #endif
    794 
    795 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
    796 #define HAVE_SEC_KEY_PROXY 1
    797 #endif
    798 
    799 #if PLATFORM(COCOA) && USE(CA)
    800 #define USE_IOSURFACE_CANVAS_BACKING_STORE 1
    801 #endif
    802 
    803 /* FIXME: Should this be enabled or IOS_FAMILY, not just IOS? */
    804 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS)
    805 #define HAVE_FOUNDATION_WITH_SAVE_COOKIES_WITH_COMPLETION_HANDLER 1
    806 #endif
    807 
    808 /* FIXME: Should this be enabled for IOS_FAMILY, not just IOS? */
    809 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS)
    810 #define HAVE_FOUNDATION_WITH_SAME_SITE_COOKIE_SUPPORT 1
    811 #endif
    812 
    813 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101400
    814 #define HAVE_NSHTTPCOOKIESTORAGE__INITWITHIDENTIFIER_WITH_INACCURATE_NULLABILITY 1
    815 #endif
    816 
    817 #if PLATFORM(COCOA)
    818 #define HAVE_CFNETWORK_WITH_CONTENT_ENCODING_SNIFFING_OVERRIDE 1
    819 /* The override isn't needed on iOS family, as the default behavior is to not sniff. */
    820 /* FIXME: This should probably be enabled on 10.13.2 and newer, not just 10.14 and newer. */
    821 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
    822 #define USE_CFNETWORK_CONTENT_ENCODING_SNIFFING_OVERRIDE 1
    823 #endif
    824 #endif
    825 
    826 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(GTK)
    827 #define HAVE_OS_DARK_MODE_SUPPORT 1
    828 #endif
    829 
    830 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
    831 #define HAVE_CG_FONT_RENDERING_GET_FONT_SMOOTHING_DISABLED 1
    832 #endif
    833 
    834 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    835 #define HAVE_CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED 1
    836 #endif
    837 
    838 #ifdef __APPLE__
    839 #define HAVE_FUNC_USLEEP 1
    840 #endif
    841 
    842 #if PLATFORM(MAC) || PLATFORM(WPE)
    843 /* FIXME: This really needs a descriptive name, this "new theme" was added in 2008. */
    844 #define USE_NEW_THEME 1
    845 #endif
    846 
    847 #if PLATFORM(MAC)
    848 #define HAVE_WINDOW_SERVER_OCCLUSION_NOTIFICATIONS 1
    849 #endif
    850 
    851 #if PLATFORM(COCOA)
    852 #define HAVE_SEC_ACCESS_CONTROL 1
    853 #endif
    854 
    855 #if PLATFORM(IOS)
    856 /* FIXME: SafariServices.framework exists on macOS. It is only used by WebKit on iOS, so the behavior is correct, but the name is misleading. */
    857 #define HAVE_SAFARI_SERVICES_FRAMEWORK 1
    858 #endif
    859 
    860 #if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(WATCHOS)
    861 #define HAVE_SAFE_BROWSING 1
    862 #endif
    863 
    864 #if PLATFORM(IOS)
    865 #define HAVE_LINK_PREVIEW 1
    866 #endif
    867 
    868 #if (PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400))
    869 #define HAVE_ACCESSIBILITY_SUPPORT 1
    870 #endif
    871 
    872 #if PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000 && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130100
    873 #define HAVE_ACCESSIBILITY_BUNDLES_PATH 1
    874 #endif
    875 
    876 #if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400)
    877 #define HAVE_AUTHORIZATION_STATUS_FOR_MEDIA_TYPE 1
    878 #endif
    879 
    880 #if (PLATFORM(MAC) && (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101404)) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 120000 && __IPHONE_OS_VERSION_MAX_ALLOWED >= 120200) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    881 #define HAVE_CFNETWORK_OVERRIDE_SESSION_COOKIE_ACCEPT_POLICY 1
    882 #endif
    883 
    884 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    885 #define HAVE_CFNETWORK_NSURLSESSION_STRICTRUSTEVALUATE 1
    886 #endif
    887 
    888 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    889 #define HAVE_CFNETWORK_NEGOTIATED_SSL_PROTOCOL_CIPHER 1
    890 #endif
    891 
    892 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101600) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 140000)
    893 #define HAVE_CFNETWORK_METRICS_APIS_V4 1
    894 #endif
    895 
    896 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500
    897 #define HAVE_CSCHECKFIXDISABLE 1
    898 #endif
    899 
    900 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS_FAMILY)
    901 #define HAVE_SANDBOX_ISSUE_MACH_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN 1
    902 #endif
    903 
    904 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS_FAMILY)
    905 #define HAVE_SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN 1
    906 #endif
    907 
    908 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    909 #define HAVE_MDNS_FAST_REGISTRATION 1
    910 #endif
    911 
    912 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS_FAMILY)
    913 #define HAVE_DISALLOWABLE_USER_INSTALLED_FONTS 1
    914 #endif
    915 
    916 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    917 #define HAVE_CTFONTCREATEFORCHARACTERSWITHLANGUAGEANDOPTION 1
    918 #endif
    919 
    920 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    921 #define HAVE_CTFONTTRANSFORMGLYPHSWITHLANGUAGE 1
    922 #endif
    923 
    924 #if PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000
    925 #define HAVE_ARKIT_QUICK_LOOK_PREVIEW_ITEM 1
    926 #endif
    927 
    928 #if PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000
    929 #define HAVE_UI_WK_DOCUMENT_CONTEXT 1
    930 #endif
    931 
    932 #if PLATFORM(MACCATALYST)
    933 #define HAVE_HOVER_GESTURE_RECOGNIZER 1
    934 #endif
    935 
    936 #if PLATFORM(MACCATALYST)
    937 #define HAVE_UI_PARALLAX_TRANSITION_GESTURE_RECOGNIZER 1
    938 #endif
    939 
    940 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    941 #define HAVE_ALLOWS_SENSITIVE_LOGGING 1
    942 #endif
    943 
    944 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    945 #define HAVE_FAIRPLAYSTREAMING_CENC_INITDATA 1
    946 #endif
    947 
    948 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    949 #define HAVE_UI_SCROLL_VIEW_INDICATOR_FLASHING_SPI 1
    950 #endif
    951 
    952 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    953 #define HAVE_APP_LINKS_WITH_ISENABLED 1
    954 #endif
    955 
    956 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    957 #define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO 1
    958 #endif
    959 
    960 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 120000 && !PLATFORM(IOS_SIMULATOR))
    961 #define HAVE_DEVICE_MANAGEMENT 1
    962 #endif
    963 
    964 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101500
    965 #define USE_REALPATH_FOR_DLOPEN_PREFLIGHT 1
    966 #endif
    967 
    968 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    969 #define HAVE_NSURLSESSION_WEBSOCKET 1
    970 #endif
    971 
    972 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    973 #define HAVE_AVPLAYER_RESOURCE_CONSERVATION_LEVEL 1
    974 #endif
    975 
    976 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 120000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    977 #define HAVE_CORETEXT_AUTO_OPTICAL_SIZING 1
    978 #endif
    979 
    980 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000)
    981 #define HAVE_NSFONT_WITH_OPTICAL_SIZING_BUG 1
    982 #endif
    983 
    984 #if (PLATFORM(IOS) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500))
    985 #define HAVE_APP_SSO 1
    986 #endif
    987 
    988 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000 || PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(WATCHOS) || PLATFORM(APPLETV) || PLATFORM(MACCATALYST)
    989 #define HAVE_TLS_PROTOCOL_VERSION_T 1
    990 #endif
    991 
    992 #if PLATFORM(IOS) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(WATCHOS) || PLATFORM(APPLETV) || PLATFORM(MACCATALYST)
    993 #define HAVE_SEC_TRUST_EVALUATE_WITH_ERROR 1
    994 #endif
    995 
    996 #if PLATFORM(IOS) || PLATFORM(MACCATALYST)
    997 #define USE_UICONTEXTMENU 1
    998 #endif
    999 
    1000 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500
    1001 #define HAVE_SUBVIEWS_IVAR_SPI 1
    1002 #endif
    1003 
    1004 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101500
    1005 #define HAVE_SUBVIEWS_IVAR_DECLARED_BY_SDK 1
    1006 #endif
    1007 
    1008 #if PLATFORM(MAC) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 110000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    1009 #define USE_PLATFORM_SYSTEM_FALLBACK_LIST 1
    1010 #endif
    1011 
    1012 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
    1013 #define HAVE_AX_CLIENT_TYPE 1
    1014 #endif
    1015 
    1016 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    1017 #define HAVE_DESIGN_SYSTEM_UI_FONTS 1
    1018 #endif
    1019 
    1020 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || (PLATFORM(IOS) && !PLATFORM(IOS_SIMULATOR))
    1021 #define HAVE_DEVICE_IDENTITY 1
    1022 #endif
    1023 
    1024 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    1025 #define HAVE_DATA_PROTECTION_KEYCHAIN 1
    1026 #endif
    1027 
    1028 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && !PLATFORM(IOS_FAMILY_SIMULATOR))
    1029 #define HAVE_NEAR_FIELD 1
    1030 #endif
    1031 
    1032 #if PLATFORM(IOS_FAMILY) || (!(defined(USE_SYSTEM_MALLOC) && USE_SYSTEM_MALLOC) && (OS(LINUX) && (PLATFORM(GTK) || PLATFORM(WPE))))
    1033 #define USE_BMALLOC_MEMORY_FOOTPRINT_API 1
    1034 #endif
    1035 
    1036 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS_FAMILY)
    1037 #define HAVE_OS_SIGNPOST 1
    1038 #endif
    1039 
    1040 
    1041 
    1042 #if USE(APPLE_INTERNAL_SDK) && __has_include(<WebKitAdditions/AdditionalPlatform.h>)
    1043 #include <WebKitAdditions/AdditionalPlatform.h>
    1044 #endif
    1045 
    1046 #if USE(APPLE_INTERNAL_SDK) && __has_include(<WebKitAdditions/AdditionalFeatureDefines.h>)
    1047 #include <WebKitAdditions/AdditionalFeatureDefines.h>
    1048 #endif
    1049 
    1050 /* __PLATFORM_INDIRECT__ ensures that users #include <wtf/Platform.h> rather than wtf/FeatureDefines.h directly. */
    1051 #define __PLATFORM_INDIRECT__
    1052 
    1053 /* Include feature macros */
    1054 #include <wtf/PlatformEnable.h>
    1055 
    1056 #undef __PLATFORM_INDIRECT__
    1057 
    1058 
    1059 
    1060 /* FIXME: The following are currenly positioned at the bottom of this file as they are currently dependent on ENABLE macros. */
    1061 
    1062 /* FIXME: Remove dependence on ENABLE(WEB_RTC). */
    1063 #if PLATFORM(COCOA) && ENABLE(WEB_RTC)
    1064 #define USE_LIBWEBRTC 1
    1065 #endif
    1066 
    1067 /* FIXME: This is used to "turn on a specific feature of WebKit", so should be converted to an ENABLE macro. */
    1068 /* This feature works by embedding the OpcodeID in the 32 bit just before the generated LLint code
    1069    that executes each opcode. It cannot be supported by the CLoop since there's no way to embed the
    1070    OpcodeID word in the CLoop's switch statement cases. It is also currently not implemented for MSVC.
    1071 */
    1072 #if !defined(USE_LLINT_EMBEDDED_OPCODE_ID) && !ENABLE(C_LOOP) && !COMPILER(MSVC) && \
    1073     (CPU(X86) || CPU(X86_64) || CPU(ARM64) || (CPU(ARM_THUMB2) && OS(DARWIN)))
    1074 #define USE_LLINT_EMBEDDED_OPCODE_ID 1
    1075 #endif
    1076 
    1077 
    1078 #if PLATFORM(COCOA)
    1079 #if ENABLE(WEBGL)
    1080 
    1081 /* USE_ANGLE=1 uses ANGLE for the WebGL backend.
    1082    It replaces USE_OPENGL, USE_OPENGL_ES and USE_EGL. */
    1083 #if PLATFORM(MAC) || (PLATFORM(MACCATALYST) && __has_include(<OpenGL/OpenGL.h>))
    1084 #define USE_OPENGL 1
    1085 #define USE_OPENGL_ES 0
    1086 #define USE_ANGLE 0
    1087 #else
    1088 #define USE_OPENGL 0
    1089 #define USE_OPENGL_ES 1
    1090 #define USE_ANGLE 0
    1091 #endif
    1092 
    1093 #ifndef GL_SILENCE_DEPRECATION
    1094 #define GL_SILENCE_DEPRECATION 1
    1095 #endif
    1096 
    1097 #if USE(OPENGL) && !defined(HAVE_OPENGL_4)
    1098 #define HAVE_OPENGL_4 1
    1099 #endif
    1100 
    1101 #if USE(OPENGL_ES) && !defined(HAVE_OPENGL_ES_3)
    1102 #define HAVE_OPENGL_ES_3 1
    1103 #endif
    1104 
    1105 #if USE_ANGLE && (USE_OPENGL || USE_OPENGL_ES)
    1106 #error USE_ANGLE is incompatible with USE_OPENGL and USE_OPENGL_ES
    1107 #endif
    1108 
    1109 #endif /* ENABLE(WEBGL) */
    1110 #endif /* PLATFORM(COCOA) */
    1111 
    1112 #if ENABLE(WEBGL)
    1113 #if !defined(USE_ANGLE)
    1114 #define USE_ANGLE 0
    1115 #endif
    1116 
    1117 #if (USE_ANGLE && (USE_OPENGL || USE_OPENGL_ES || (defined(USE_EGL) && USE_EGL))) && !USE(TEXTURE_MAPPER)
    1118 #error USE_ANGLE is incompatible with USE_OPENGL, USE_OPENGL_ES and USE_EGL
    1119 #endif
    1120 #endif
    1121 
    1122 #if USE(TEXTURE_MAPPER) && ENABLE(GRAPHICS_CONTEXT_GL) && !defined(USE_TEXTURE_MAPPER_GL)
    1123 #define USE_TEXTURE_MAPPER_GL 1
    1124 #endif
    1125 
    1126 /* FIXME: This is used to "turn on a specific feature of WebKit", so should be converted to an ENABLE macro. */
    1127 #if PLATFORM(COCOA) && ENABLE(ACCESSIBILITY)
    1128 #define USE_ACCESSIBILITY_CONTEXT_MENUS 1
    1129 #endif
    1130 
    1131 
    1132 /* FIXME: These calling convention macros should move to their own file. They are at the bottom currently because they depend on FeatureDefines.h */
    1133 
    1134 #if CPU(X86) && COMPILER(MSVC)
    1135 #define JSC_HOST_CALL __fastcall
    1136 #elif CPU(X86) && COMPILER(GCC_COMPATIBLE)
    1137 #define JSC_HOST_CALL __attribute__ ((fastcall))
    1138 #else
    1139 #define JSC_HOST_CALL
    1140 #endif
    1141 
    1142 #if CPU(X86) && OS(WINDOWS)
    1143 #define CALLING_CONVENTION_IS_STDCALL 1
    1144 #ifndef CDECL
    1145 #if COMPILER(MSVC)
    1146 #define CDECL __cdecl
    1147 #else
    1148 #define CDECL __attribute__ ((__cdecl))
    1149 #endif
    1150 #endif
    1151 #else
    1152 #define CALLING_CONVENTION_IS_STDCALL 0
    1153 #endif
    1154 
    1155 #if CPU(X86)
    1156 #define WTF_COMPILER_SUPPORTS_FASTCALL_CALLING_CONVENTION 1
    1157 #ifndef FASTCALL
    1158 #if COMPILER(MSVC)
    1159 #define FASTCALL __fastcall
    1160 #else
    1161 #define FASTCALL  __attribute__ ((fastcall))
    1162 #endif
    1163 #endif
    1164 #else
    1165 #define WTF_COMPILER_SUPPORTS_FASTCALL_CALLING_CONVENTION 0
    1166 #endif
    1167 
    1168 #if ENABLE(JIT) && CALLING_CONVENTION_IS_STDCALL
    1169 #define JIT_OPERATION CDECL
    1170 #else
    1171 #define JIT_OPERATION
    1172 #endif
Note: See TracChangeset for help on using the changeset viewer.