Changeset 254417 in webkit


Ignore:
Timestamp:
Jan 12, 2020 4:21:42 PM (4 years ago)
Author:
weinig@apple.com
Message:

Platform.h is out of control Part 2: Split WTF_OS_* macro definitions out of Platform.h and into a new OS.h
https://bugs.webkit.org/show_bug.cgi?id=206138

Reviewed by Anders Carlsson.

As a another step towards cleaning up Platform.h, split out OS related
macros into their own file.

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

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

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

    r254401 r254417  
    445445                7C137943222326D500D7A824 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
    446446                7C3F72391D78811900674E26 /* Brigand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Brigand.h; sourceTree = "<group>"; };
     447                7C8B633023CAC76D00BB4620 /* OS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OS.h; sourceTree = "<group>"; };
    447448                7C9692941F66306E00267A9E /* KeyValuePair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyValuePair.h; sourceTree = "<group>"; };
    448449                7CA842E923C98CB700514CAF /* CPU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPU.h; sourceTree = "<group>"; };
     
    11071108                                275DFB6B238BDF72001230E2 /* OptionSetHash.h */,
    11081109                                0F9495831C571CC900413A48 /* OrderMaker.h */,
     1110                                7C8B633023CAC76D00BB4620 /* OS.h */,
    11091111                                A8A472D7151A825B004123FF /* OSAllocator.h */,
    11101112                                7CBBA07319BB7FDC00BBF025 /* OSObjectPtr.h */,
  • trunk/Source/WTF/wtf/CMakeLists.txt

    r254401 r254417  
    150150    NotFound.h
    151151    NumberOfCores.h
     152    OS.h
    152153    OSAllocator.h
    153154    OSObjectPtr.h
  • trunk/Source/WTF/wtf/OS.h

    r254414 r254417  
    3131#include <wtf/Compiler.h>
    3232
    33 /* Include CPU specific macros */
    34 #include <wtf/CPU.h>
    35 
    36 /* ==== PLATFORM handles OS, operating environment, graphics API, and
    37    CPU. This macro will be phased out in favor of platform adaptation
    38    macros, policy decision macros, and top-level port definitions. ==== */
    39 #define PLATFORM(WTF_FEATURE) (defined WTF_PLATFORM_##WTF_FEATURE  && WTF_PLATFORM_##WTF_FEATURE)
    40 
    41 
    42 /* ==== Platform adaptation macros: these describe properties of the target environment. ==== */
    43 
    44 /* CPU() - the target CPU architecture */
    45 #define CPU(WTF_FEATURE) (defined WTF_CPU_##WTF_FEATURE  && WTF_CPU_##WTF_FEATURE)
    46 /* HAVE() - specific system features (headers, functions or similar) that are present or not */
    47 #define HAVE(WTF_FEATURE) (defined HAVE_##WTF_FEATURE  && HAVE_##WTF_FEATURE)
    48 /* OS() - underlying operating system; only to be used for mandated low-level services like
    49    virtual memory, not to choose a GUI toolkit */
    50 #define OS(WTF_FEATURE) (defined WTF_OS_##WTF_FEATURE  && WTF_OS_##WTF_FEATURE)
    51 
    52 
    53 /* ==== Policy decision macros: these define policy choices for a particular port. ==== */
    54 
    55 /* USE() - use a particular third-party library or optional OS service */
    56 #define USE(WTF_FEATURE) (defined USE_##WTF_FEATURE  && USE_##WTF_FEATURE)
    57 /* ENABLE() - turn on a specific feature of WebKit */
    58 #define ENABLE(WTF_FEATURE) (defined ENABLE_##WTF_FEATURE  && ENABLE_##WTF_FEATURE)
    59 
    60 
    61 /* MIPS requires allocators to use aligned memory */
    62 #if CPU(MIPS) || CPU(MIPS64)
    63 #define USE_ARENA_ALLOC_ALIGNMENT_INTEGER 1
    64 #endif
    65 
    66 /*ARMv5TE requires allocators to use aligned memory*/
    67 #if defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
    68 #define USE_ARENA_ALLOC_ALIGNMENT_INTEGER 1
    69 #endif
    70 
    71 /*ARMv5TE requires allocators to use aligned memory*/
    72 #if defined(__TARGET_ARCH_5E) || defined(__TARGET_ARCH_5TE) || defined(__TARGET_ARCH_5TEJ)
    73 #define USE_ARENA_ALLOC_ALIGNMENT_INTEGER 1
    74 #endif
    75 
    76 #if CPU(ARM_NEON)
    77 /* All NEON intrinsics usage can be disabled by this macro. */
    78 #define HAVE_ARM_NEON_INTRINSICS 1
    79 #endif
    80 
    81 /* FIXME: This should be renamed to WTF_CPU_ARM_IDIV_INSTRUCTIONS and moved to CPU.h */
    82 #if defined(__ARM_ARCH_EXT_IDIV__) || CPU(APPLE_ARMV7S)
    83 #define HAVE_ARM_IDIV_INSTRUCTIONS 1
    84 #endif
    85 
    86 
    87 
    88 /* ==== OS() - underlying operating system; only to be used for mandated low-level services like
    89    virtual memory, not to choose a GUI toolkit ==== */
    90 
    91 /* OS(AIX) - AIX */
    92 #ifdef _AIX
    93 #define WTF_OS_AIX 1
    94 #endif
    95 
    96 /* OS(DARWIN) - Any Darwin-based OS, including Mac OS X and iPhone OS */
    97 #ifdef __APPLE__
    98 #define WTF_OS_DARWIN 1
    99 
     33#if defined(__APPLE__)
    10034#include <Availability.h>
    10135#include <AvailabilityMacros.h>
     
    10337#endif
    10438
     39
     40/* OS() - underlying operating system; only to be used for mandated low-level services like
     41   virtual memory, not to choose a GUI toolkit */
     42#define OS(WTF_FEATURE) (defined WTF_OS_##WTF_FEATURE  && WTF_OS_##WTF_FEATURE)
     43
     44
     45/* ==== OS() - underlying operating system; only to be used for mandated low-level services like
     46   virtual memory, not to choose a GUI toolkit ==== */
     47
     48/* OS(AIX) - AIX */
     49#if defined(_AIX)
     50#define WTF_OS_AIX 1
     51#endif
     52
     53/* OS(DARWIN) - Any Darwin-based OS, including macOS, iOS, macCatalyst, tvOS, and watchOS */
     54#if defined(__APPLE__)
     55#define WTF_OS_DARWIN 1
     56#endif
     57
    10558/* OS(IOS_FAMILY) - iOS family, including iOS, macCatalyst, tvOS, watchOS */
     59#if OS(DARWIN) && TARGET_OS_IPHONE
     60#define WTF_OS_IOS_FAMILY 1
     61#endif
     62
    10663/* OS(IOS) - iOS only, not including macCatalyst */
    107 /* OS(MAC_OS_X) - macOS (not including iOS family) */
    108 #if OS(DARWIN)
    109 #if TARGET_OS_IOS && !(defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST)
     64#if OS(DARWIN) && (TARGET_OS_IOS && !(defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST))
    11065#define WTF_OS_IOS 1
    11166#endif
    112 #if TARGET_OS_IPHONE
    113 #define WTF_OS_IOS_FAMILY 1
    114 #elif TARGET_OS_MAC
     67
     68/* FIXME: Rename this to drop the X, as that is no longer the name of the operating system. */
     69/* OS(MAC_OS_X) - macOS (not including iOS family) */
     70#if OS(DARWIN) && TARGET_OS_OSX
    11571#define WTF_OS_MAC_OS_X 1
    116 #endif
    11772#endif
    11873
     
    12378
    12479/* OS(FUCHSIA) - Fuchsia */
    125 #ifdef __Fuchsia__
     80#if defined(__Fuchsia__)
    12681#define WTF_OS_FUCHSIA 1
    12782#endif
    12883
    12984/* OS(HURD) - GNU/Hurd */
    130 #ifdef __GNU__
     85#if defined(__GNU__)
    13186#define WTF_OS_HURD 1
    13287#endif
    13388
    13489/* OS(LINUX) - Linux */
    135 #ifdef __linux__
     90#if defined(__linux__)
    13691#define WTF_OS_LINUX 1
    13792#endif
     
    14398
    14499/* OS(OPENBSD) - OpenBSD */
    145 #ifdef __OpenBSD__
     100#if defined(__OpenBSD__)
    146101#define WTF_OS_OPENBSD 1
    147102#endif
     
    152107#endif
    153108
    154 #define WTF_OS_WIN ERROR "USE WINDOWS WITH OS NOT WIN"
    155 #define WTF_OS_MAC ERROR "USE MAC_OS_X WITH OS NOT MAC"
    156109
    157110/* OS(UNIX) - Any Unix-like system */
     
    170123#endif
    171124
    172 /* Operating environments */
    173125
     126/* Asserts, invariants for macro definitions */
    174127
    175 /* FIXME: Rename WTF_CPU_EFFECTIVE_ADDRESS_WIDTH to WTF_OS_EFFECTIVE_ADDRESS_WIDTH, as it is an OS feature, not a CPU feature. */
    176 #if CPU(ADDRESS64)
    177 #if OS(DARWIN) && CPU(ARM64)
    178 #define WTF_CPU_EFFECTIVE_ADDRESS_WIDTH 36
    179 #else
    180 /* We strongly assume that effective address width is <= 48 in 64bit architectures (e.g. NaN boxing). */
    181 #define WTF_CPU_EFFECTIVE_ADDRESS_WIDTH 48
    182 #endif
    183 #else
    184 #define WTF_CPU_EFFECTIVE_ADDRESS_WIDTH 32
    185 #endif
    186 
    187 /* Export macro support. Detects the attributes available for shared library symbol export
    188    decorations. */
    189 #if OS(WINDOWS) || (COMPILER_HAS_CLANG_DECLSPEC(dllimport) && COMPILER_HAS_CLANG_DECLSPEC(dllexport))
    190 #define USE_DECLSPEC_ATTRIBUTE 1
    191 #define USE_VISIBILITY_ATTRIBUTE 0
    192 #elif defined(__GNUC__)
    193 #define USE_DECLSPEC_ATTRIBUTE 0
    194 #define USE_VISIBILITY_ATTRIBUTE 1
    195 #else
    196 #define USE_DECLSPEC_ATTRIBUTE 0
    197 #define USE_VISIBILITY_ATTRIBUTE 0
    198 #endif
    199 
    200 /* Standard libraries */
    201 #if defined(HAVE_FEATURES_H) && HAVE_FEATURES_H
    202 /* If the included features.h is glibc's one, __GLIBC__ is defined. */
    203 #include <features.h>
    204 #endif
    205 
    206 /* FIXME: these are all mixes of OS, operating environment and policy choices. */
    207 /* PLATFORM(GTK) */
    208 /* PLATFORM(MAC) */
    209 /* PLATFORM(IOS) */
    210 /* PLATFORM(IOS_FAMILY) */
    211 /* PLATFORM(IOS_SIMULATOR) */
    212 /* PLATFORM(IOS_FAMILY_SIMULATOR) */
    213 /* PLATFORM(WIN) */
    214 #if defined(BUILDING_GTK__)
    215 #define WTF_PLATFORM_GTK 1
    216 #elif defined(BUILDING_WPE__)
    217 #define WTF_PLATFORM_WPE 1
    218 #elif defined(BUILDING_JSCONLY__)
    219 /* JSCOnly does not provide PLATFORM() macro */
    220 #elif OS(MAC_OS_X)
    221 #define WTF_PLATFORM_MAC 1
    222 #elif OS(IOS_FAMILY)
    223 #if OS(IOS)
    224 #define WTF_PLATFORM_IOS 1
    225 #endif
    226 #define WTF_PLATFORM_IOS_FAMILY 1
    227 #if TARGET_OS_SIMULATOR
    228 #if OS(IOS)
    229 #define WTF_PLATFORM_IOS_SIMULATOR 1
    230 #endif
    231 #define WTF_PLATFORM_IOS_FAMILY_SIMULATOR 1
    232 #endif
    233 #if defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST
    234 #define WTF_PLATFORM_MACCATALYST 1
    235 #endif
    236 #elif OS(WINDOWS)
    237 #define WTF_PLATFORM_WIN 1
    238 #endif
    239 
    240 /* PLATFORM(COCOA) */
    241 #if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
    242 #define WTF_PLATFORM_COCOA 1
    243 #endif
    244 
    245 #if PLATFORM(COCOA)
    246 #if defined __has_include && __has_include(<CoreFoundation/CFPriv.h>)
    247 #define USE_APPLE_INTERNAL_SDK 1
    248 #endif
    249 #endif
    250 
    251 /* PLATFORM(APPLETV) */
    252 #if defined(TARGET_OS_TV) && TARGET_OS_TV
    253 #define WTF_PLATFORM_APPLETV 1
    254 #endif
    255 
    256 /* PLATFORM(WATCHOS) */
    257 #if defined(TARGET_OS_WATCH) && TARGET_OS_WATCH
    258 #define WTF_PLATFORM_WATCHOS 1
    259 #endif
    260 
    261 /* Graphics engines */
    262 
    263 /* USE(CG) and PLATFORM(CI) */
    264 #if PLATFORM(COCOA)
    265 #define USE_CG 1
    266 #define USE_CA 1
    267 #endif
    268 
    269 #if PLATFORM(GTK) || PLATFORM(WPE)
    270 #define USE_GLIB 1
    271 #define USE_FREETYPE 1
    272 #define USE_HARFBUZZ 1
    273 #define USE_SOUP 1
    274 #define USE_WEBP 1
    275 #define USE_FILE_LOCK 1
    276 #endif
    277 
    278 #if PLATFORM(GTK)
    279 #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_36
    280 #define GDK_VERSION_MIN_REQUIRED GDK_VERSION_3_6
    281 #endif
    282 
    283 #if PLATFORM(WPE)
    284 #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_40
    285 #endif
    286 
    287 #if USE(SOUP)
    288 #define SOUP_VERSION_MIN_REQUIRED SOUP_VERSION_2_42
    289 #endif
    290 
    291 /* On Windows, use QueryPerformanceCounter by default */
    292 #if OS(WINDOWS)
    293 #define USE_QUERY_PERFORMANCE_COUNTER  1
    294 #endif
    295 
    296 #if PLATFORM(COCOA)
    297 
    298 #define HAVE_OUT_OF_PROCESS_LAYER_HOSTING 1
    299 #define USE_CF 1
    300 #define USE_FILE_LOCK 1
    301 #define USE_FOUNDATION 1
    302 #define USE_NETWORK_CFDATA_ARRAY_CALLBACK 1
    303 
    304 /* Cocoa defines a series of platform macros for debugging. */
    305 /* Some of them are really annoying because they use common names (e.g. check()). */
    306 /* Disable those macros so that we are not limited in how we name methods and functions. */
    307 #undef __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES
    308 #define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
    309 
    310 #endif
    311 
    312 #if PLATFORM(MAC)
    313 
    314 #define HAVE_RUNLOOP_TIMER 1
    315 #define HAVE_SEC_KEYCHAIN 1
    316 #define HAVE_HISERVICES 1
    317 #define USE_APPKIT 1
    318 #define USE_PASSKIT 1
    319 
    320 #if CPU(X86_64)
    321 #define HAVE_NETWORK_EXTENSION 1
    322 #define USE_PLUGIN_HOST_PROCESS 1
    323 #endif
    324 #endif /* PLATFORM(MAC) */
    325 
    326 #if PLATFORM(IOS_FAMILY)
    327 
    328 #define HAVE_NETWORK_EXTENSION 1
    329 #define HAVE_READLINE 1
    330 #define USE_UIKIT_EDITING 1
    331 #define USE_WEB_THREAD 1
    332 
    333 #if CPU(ARM64)
    334 #define ENABLE_JIT_CONSTANT_BLINDING 0
    335 #endif
    336 
    337 #if CPU(ARM_NEON)
    338 #undef HAVE_ARM_NEON_INTRINSICS
    339 #define HAVE_ARM_NEON_INTRINSICS 0
    340 #endif
    341 
    342 #endif /* PLATFORM(IOS_FAMILY) */
    343 
    344 #if !defined(HAVE_ACCESSIBILITY)
    345 #if PLATFORM(COCOA) || PLATFORM(WIN) || PLATFORM(GTK) || PLATFORM(WPE)
    346 #define HAVE_ACCESSIBILITY 1
    347 #endif
    348 #endif /* !defined(HAVE_ACCESSIBILITY) */
    349 
    350 /* FIXME: Remove after CMake build enabled on Darwin */
    351 #if OS(DARWIN)
    352 #define HAVE_ERRNO_H 1
    353 #define HAVE_LANGINFO_H 1
    354 #define HAVE_LOCALTIME_R 1
    355 #define HAVE_MMAP 1
    356 #define HAVE_REGEX_H 1
    357 #define HAVE_SIGNAL_H 1
    358 #define HAVE_STAT_BIRTHTIME 1
    359 #define HAVE_STRINGS_H 1
    360 #define HAVE_STRNSTR 1
    361 #define HAVE_SYS_PARAM_H 1
    362 #define HAVE_SYS_TIME_H 1
    363 #define HAVE_TM_GMTOFF 1
    364 #define HAVE_TM_ZONE 1
    365 #define HAVE_TIMEGM 1
    366 #define HAVE_PTHREAD_MAIN_NP 1
    367 
    368 #if CPU(X86_64) || CPU(ARM64)
    369 #define HAVE_INT128_T 1
    370 #endif
    371 #endif /* OS(DARWIN) */
    372 
    373 #if OS(UNIX)
    374 #define USE_PTHREADS 1
    375 #endif /* OS(UNIX) */
    376 
    377 #if OS(UNIX) && !OS(FUCHSIA)
    378 #define HAVE_RESOURCE_H 1
    379 #define HAVE_PTHREAD_SETSCHEDPARAM 1
    380 #endif
    381 
    382 #if OS(DARWIN)
    383 #define HAVE_DISPATCH_H 1
    384 #define HAVE_MADV_FREE 1
    385 #define HAVE_MADV_FREE_REUSE 1
    386 #define HAVE_MADV_DONTNEED 1
    387 #define HAVE_MERGESORT 1
    388 #define HAVE_PTHREAD_SETNAME_NP 1
    389 #define HAVE_READLINE 1
    390 #define HAVE_SYS_TIMEB_H 1
    391 #define HAVE_AUDIT_TOKEN 1
    392 
    393 #if __has_include(<mach/mach_exc.defs>) && !PLATFORM(GTK)
    394 #define HAVE_MACH_EXCEPTIONS 1
    395 #endif
    396 
    397 #if !PLATFORM(GTK)
    398 #define USE_ACCELERATE 1
    399 #endif
    400 #if !PLATFORM(IOS_FAMILY)
    401 #define HAVE_HOSTED_CORE_ANIMATION 1
    402 #endif
    403 
    404 #endif /* OS(DARWIN) */
    405 
    406 #if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
    407 #define HAVE_MACHINE_CONTEXT 1
    408 #endif
    409 
    410 #if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__) && !CPU(MIPS))
    411 #define HAVE_BACKTRACE 1
    412 #endif
    413 
    414 #if OS(DARWIN) || OS(LINUX)
    415 #if PLATFORM(GTK)
    416 #if defined(__GLIBC__) && !defined(__UCLIBC__) && !CPU(MIPS)
    417 #define HAVE_BACKTRACE_SYMBOLS 1
    418 #endif
    419 #endif /* PLATFORM(GTK) */
    420 #define HAVE_DLADDR 1
    421 #endif /* OS(DARWIN) || OS(LINUX) */
    422 
    423 
    424 /* ENABLE macro defaults */
    425 
    426 /* FIXME: move out all ENABLE() defines from here to FeatureDefines.h */
    427 
    428 #if USE(APPLE_INTERNAL_SDK) && __has_include(<WebKitAdditions/AdditionalPlatform.h>)
    429 #include <WebKitAdditions/AdditionalPlatform.h>
    430 #endif
    431 
    432 #if USE(APPLE_INTERNAL_SDK) && __has_include(<WebKitAdditions/AdditionalFeatureDefines.h>)
    433 #include <WebKitAdditions/AdditionalFeatureDefines.h>
    434 #endif
    435 
    436 /* Include feature macros */
    437 #include <wtf/FeatureDefines.h>
    438 
    439 #if OS(WINDOWS)
    440 #define USE_SYSTEM_MALLOC 1
    441 #endif
    442 
    443 
    444 #if !defined(USE_JSVALUE64) && !defined(USE_JSVALUE32_64)
    445 #if CPU(ADDRESS64) || CPU(ARM64)
    446 #define USE_JSVALUE64 1
    447 #else
    448 #define USE_JSVALUE32_64 1
    449 #endif
    450 #endif /* !defined(USE_JSVALUE64) && !defined(USE_JSVALUE32_64) */
    451 
    452 /* The JIT is enabled by default on all x86-64 & ARM64 platforms. */
    453 #if !defined(ENABLE_JIT) \
    454     && (CPU(X86_64) || CPU(ARM64)) \
    455     && !CPU(APPLE_ARMV7K)
    456 #define ENABLE_JIT 1
    457 #endif
    458 
    459 #if USE(JSVALUE32_64)
    460 #if (CPU(ARM_THUMB2) || CPU(MIPS)) && OS(LINUX)
    461 /* On ARMv7 and MIPS on Linux the JIT is enabled unless explicitly disabled. */
    462 #if !defined(ENABLE_JIT)
    463 #define ENABLE_JIT 1
    464 #endif
    465 #else
    466 /* Disable JIT and force C_LOOP on all other 32bit architectures. */
    467 #undef ENABLE_JIT
    468 #define ENABLE_JIT 0
    469 #undef ENABLE_C_LOOP
    470 #define ENABLE_C_LOOP 1
    471 #endif
    472 #endif
    473 
    474 #if !defined(ENABLE_C_LOOP)
    475 #if ENABLE(JIT) \
    476     || CPU(X86_64) || (CPU(ARM64) && !defined(__ILP32__))
    477 #define ENABLE_C_LOOP 0
    478 #else
    479 #define ENABLE_C_LOOP 1
    480 #endif
    481 #endif
    482 
    483 /* The FTL *does not* work on 32-bit platforms. Disable it even if someone asked us to enable it. */
    484 #if USE(JSVALUE32_64)
    485 #undef ENABLE_FTL_JIT
    486 #define ENABLE_FTL_JIT 0
    487 #endif
    488 
    489 /* The FTL is disabled on the iOS simulator, mostly for simplicity. */
    490 #if PLATFORM(IOS_FAMILY_SIMULATOR)
    491 #undef ENABLE_FTL_JIT
    492 #define ENABLE_FTL_JIT 0
    493 #endif
    494 
    495 /* If possible, try to enable a disassembler. This is optional. We proceed in two
    496    steps: first we try to find some disassembler that we can use, and then we
    497    decide if the high-level disassembler API can be enabled. */
    498 #if !defined(USE_UDIS86) && ENABLE(JIT) && CPU(X86_64) && !USE(CAPSTONE)
    499 #define USE_UDIS86 1
    500 #endif
    501 
    502 #if !defined(USE_ARM64_DISASSEMBLER) && ENABLE(JIT) && CPU(ARM64) && !USE(CAPSTONE)
    503 #define USE_ARM64_DISASSEMBLER 1
    504 #endif
    505 
    506 #if !defined(ENABLE_DISASSEMBLER) && (USE(UDIS86) || USE(ARM64_DISASSEMBLER) || (ENABLE(JIT) && USE(CAPSTONE)))
    507 #define ENABLE_DISASSEMBLER 1
    508 #endif
    509 
    510 #if !defined(ENABLE_DFG_JIT) && ENABLE(JIT)
    511 /* Enable the DFG JIT on X86 and X86_64. */
    512 #if CPU(X86_64) && (OS(DARWIN) || OS(LINUX) || OS(FREEBSD) || OS(HURD) || OS(WINDOWS))
    513 #define ENABLE_DFG_JIT 1
    514 #endif
    515 /* Enable the DFG JIT on ARMv7.  Only tested on iOS, Linux, and FreeBSD. */
    516 #if (CPU(ARM_THUMB2) || CPU(ARM64)) && (PLATFORM(IOS_FAMILY) || OS(LINUX) || OS(FREEBSD))
    517 #define ENABLE_DFG_JIT 1
    518 #endif
    519 /* Enable the DFG JIT on MIPS. */
    520 #if CPU(MIPS)
    521 #define ENABLE_DFG_JIT 1
    522 #endif
    523 #endif
    524 
    525 /* Concurrent JS only works on 64-bit platforms because it requires that
    526    values get stored to atomically. This is trivially true on 64-bit platforms,
    527    but not true at all on 32-bit platforms where values are composed of two
    528    separate sub-values. */
    529 #if ENABLE(JIT) && USE(JSVALUE64)
    530 #define ENABLE_CONCURRENT_JS 1
    531 #endif
    532 
    533 #if __has_include(<System/pthread_machdep.h>)
    534 #define HAVE_FAST_TLS 1
    535 #endif
    536 
    537 #if (CPU(X86_64) || CPU(ARM64)) && HAVE(FAST_TLS)
    538 #define ENABLE_FAST_TLS_JIT 1
    539 #endif
    540 
    541 #if CPU(X86) || CPU(X86_64) || CPU(ARM_THUMB2) || CPU(ARM64) || CPU(MIPS)
    542 #define ENABLE_MASM_PROBE 1
    543 #else
    544 #define ENABLE_MASM_PROBE 0
    545 #endif
    546 
    547 #if !ENABLE(JIT)
    548 #undef ENABLE_MASM_PROBE
    549 #define ENABLE_MASM_PROBE 0
    550 #endif
    551 
    552 /* If the baseline jit is not available, then disable upper tiers as well.
    553    The MacroAssembler::probe() is also required for supporting the upper tiers. */
    554 #if !ENABLE(JIT) || !ENABLE(MASM_PROBE)
    555 #undef ENABLE_DFG_JIT
    556 #undef ENABLE_FTL_JIT
    557 #define ENABLE_DFG_JIT 0
    558 #define ENABLE_FTL_JIT 0
    559 #endif
    560 
    561 /* If the DFG jit is not available, then disable upper tiers as well: */
    562 #if !ENABLE(DFG_JIT)
    563 #undef ENABLE_FTL_JIT
    564 #define ENABLE_FTL_JIT 0
    565 #endif
    566 
    567 /* This controls whether B3 is built. B3 is needed for FTL JIT and WebAssembly */
    568 #if ENABLE(FTL_JIT)
    569 #define ENABLE_B3_JIT 1
    570 #endif
    571 
    572 #if !defined(ENABLE_WEBASSEMBLY)
    573 #if ENABLE(B3_JIT) && PLATFORM(COCOA) && CPU(ADDRESS64)
    574 #define ENABLE_WEBASSEMBLY 1
    575 #else
    576 #define ENABLE_WEBASSEMBLY 0
    577 #endif
    578 #endif
    579 
    580 /* The SamplingProfiler is the probabilistic and low-overhead profiler used by
    581  * JSC to measure where time is spent inside a JavaScript program.
    582  * In configurations other than Windows and Darwin, because layout of mcontext_t depends on standard libraries (like glibc),
    583  * sampling profiler is enabled if WebKit uses pthreads and glibc. */
    584 #if !defined(ENABLE_SAMPLING_PROFILER)
    585 #if !ENABLE(C_LOOP) && (OS(WINDOWS) || HAVE(MACHINE_CONTEXT))
    586 #define ENABLE_SAMPLING_PROFILER 1
    587 #else
    588 #define ENABLE_SAMPLING_PROFILER 0
    589 #endif
    590 #endif
    591 
    592 #if ENABLE(WEBASSEMBLY) && HAVE(MACHINE_CONTEXT)
    593 #define ENABLE_WEBASSEMBLY_FAST_MEMORY 1
    594 #endif
    595 
    596 /* Counts uses of write barriers using sampling counters. Be sure to also
    597    set ENABLE_SAMPLING_COUNTERS to 1. */
    598 #if !defined(ENABLE_WRITE_BARRIER_PROFILING)
    599 #define ENABLE_WRITE_BARRIER_PROFILING 0
    600 #endif
    601 
    602 /* Logs all allocation-related activity that goes through fastMalloc or the
    603    JSC GC (both cells and butterflies). Also logs marking. Note that this
    604    isn't a completely accurate view of the heap since it doesn't include all
    605    butterfly resize operations, doesn't tell you what is going on with weak
    606    references (other than to tell you when they're marked), and doesn't
    607    track direct mmap() allocations or things like JIT allocation. */
    608 #if !defined(ENABLE_ALLOCATION_LOGGING)
    609 #define ENABLE_ALLOCATION_LOGGING 0
    610 #endif
    611 
    612 /* Enable verification that that register allocations are not made within generated control flow.
    613    Turned on for debug builds. */
    614 #if !defined(ENABLE_DFG_REGISTER_ALLOCATION_VALIDATION) && ENABLE(DFG_JIT)
    615 #if !defined(NDEBUG)
    616 #define ENABLE_DFG_REGISTER_ALLOCATION_VALIDATION 1
    617 #else
    618 #define ENABLE_DFG_REGISTER_ALLOCATION_VALIDATION 0
    619 #endif
    620 #endif
    621 
    622 /* Configure the JIT */
    623 #if CPU(X86) && COMPILER(MSVC)
    624 #define JSC_HOST_CALL __fastcall
    625 #elif CPU(X86) && COMPILER(GCC_COMPATIBLE)
    626 #define JSC_HOST_CALL __attribute__ ((fastcall))
    627 #else
    628 #define JSC_HOST_CALL
    629 #endif
    630 
    631 #if CPU(X86) && OS(WINDOWS)
    632 #define CALLING_CONVENTION_IS_STDCALL 1
    633 #ifndef CDECL
    634 #if COMPILER(MSVC)
    635 #define CDECL __cdecl
    636 #else
    637 #define CDECL __attribute__ ((__cdecl))
    638 #endif
    639 #endif
    640 #else
    641 #define CALLING_CONVENTION_IS_STDCALL 0
    642 #endif
    643 
    644 #if CPU(X86)
    645 #define WTF_COMPILER_SUPPORTS_FASTCALL_CALLING_CONVENTION 1
    646 #ifndef FASTCALL
    647 #if COMPILER(MSVC)
    648 #define FASTCALL __fastcall
    649 #else
    650 #define FASTCALL  __attribute__ ((fastcall))
    651 #endif
    652 #endif
    653 #else
    654 #define WTF_COMPILER_SUPPORTS_FASTCALL_CALLING_CONVENTION 0
    655 #endif
    656 
    657 #if ENABLE(JIT) && CALLING_CONVENTION_IS_STDCALL
    658 #define JIT_OPERATION CDECL
    659 #else
    660 #define JIT_OPERATION
    661 #endif
    662 
    663 #if PLATFORM(IOS_FAMILY) && CPU(ARM64) && (!ENABLE(FAST_JIT_PERMISSIONS) || !CPU(ARM64E))
    664 #define ENABLE_SEPARATED_WX_HEAP 1
    665 #else
    666 #define ENABLE_SEPARATED_WX_HEAP 0
    667 #endif
    668 
    669 /* Configure the interpreter */
    670 #if COMPILER(GCC_COMPATIBLE)
    671 #define HAVE_COMPUTED_GOTO 1
    672 #endif
    673 
    674 /* Determine if we need to enable Computed Goto Opcodes or not: */
    675 #if HAVE(COMPUTED_GOTO) || !ENABLE(C_LOOP)
    676 #define ENABLE_COMPUTED_GOTO_OPCODES 1
    677 #endif
    678 
    679 #if !defined(USE_LLINT_EMBEDDED_OPCODE_ID) && !ENABLE(C_LOOP) && !COMPILER(MSVC) && \
    680     (CPU(X86) || CPU(X86_64) || CPU(ARM64) || (CPU(ARM_THUMB2) && OS(DARWIN)))
    681 /* This feature works by embedding the OpcodeID in the 32 bit just before the generated LLint code
    682    that executes each opcode. It cannot be supported by the CLoop since there's no way to embed the
    683    OpcodeID word in the CLoop's switch statement cases. It is also currently not implemented for MSVC.
    684 */
    685 #define USE_LLINT_EMBEDDED_OPCODE_ID 1
    686 #endif
    687 
    688 /* Use __builtin_frame_address(1) to get CallFrame* */
    689 #if COMPILER(GCC_COMPATIBLE) && (CPU(ARM64) || CPU(X86_64))
    690 #define USE_BUILTIN_FRAME_ADDRESS 1
    691 #endif
    692 
    693 /* Regular Expression Tracing - Set to 1 to trace RegExp's in jsc.  Results dumped at exit */
    694 #define ENABLE_REGEXP_TRACING 0
    695 
    696 /* Yet Another Regex Runtime - turned on by default for JIT enabled ports. */
    697 #if !defined(ENABLE_YARR_JIT) && ENABLE(JIT)
    698 #define ENABLE_YARR_JIT 1
    699 
    700 /* Setting this flag compares JIT results with interpreter results. */
    701 #define ENABLE_YARR_JIT_DEBUG 0
    702 #endif
    703 
    704 #if ENABLE(YARR_JIT)
    705 #if CPU(ARM64) || (CPU(X86_64) && !OS(WINDOWS))
    706 /* Enable JIT'ing Regular Expressions that have nested parenthesis and back references. */
    707 #define ENABLE_YARR_JIT_ALL_PARENS_EXPRESSIONS 1
    708 #define ENABLE_YARR_JIT_BACKREFERENCES 1
    709 #endif
    710 #endif
    711 
    712 /* If either the JIT or the RegExp JIT is enabled, then the Assembler must be
    713    enabled as well: */
    714 #if ENABLE(JIT) || ENABLE(YARR_JIT) || !ENABLE(C_LOOP)
    715 #if defined(ENABLE_ASSEMBLER) && !ENABLE_ASSEMBLER
    716 #error "Cannot enable the JIT or RegExp JIT without enabling the Assembler"
    717 #else
    718 #undef ENABLE_ASSEMBLER
    719 #define ENABLE_ASSEMBLER 1
    720 #endif
    721 #endif
    722 
    723 /* If the Disassembler is enabled, then the Assembler must be enabled as well: */
    724 #if ENABLE(DISASSEMBLER)
    725 #if defined(ENABLE_ASSEMBLER) && !ENABLE_ASSEMBLER
    726 #error "Cannot enable the Disassembler without enabling the Assembler"
    727 #else
    728 #undef ENABLE_ASSEMBLER
    729 #define ENABLE_ASSEMBLER 1
    730 #endif
    731 #endif
    732 
    733 /* ASSERT_ENABLED should be true if we want the current compilation unit to
    734    do debug assertion checks unconditionally (e.g. treat a debug ASSERT
    735    like a RELEASE_ASSERT.
    736 */
    737 #ifndef ASSERT_ENABLED
    738 #ifdef NDEBUG
    739 #define ASSERT_ENABLED 0
    740 #else
    741 #define ASSERT_ENABLED 1
    742 #endif
    743 #endif
    744 
    745 #ifndef ENABLE_EXCEPTION_SCOPE_VERIFICATION
    746 #define ENABLE_EXCEPTION_SCOPE_VERIFICATION ASSERT_ENABLED
    747 #endif
    748 
    749 #if ENABLE(DFG_JIT) && HAVE(MACHINE_CONTEXT) && (CPU(X86_64) || CPU(ARM64))
    750 #define ENABLE_SIGNAL_BASED_VM_TRAPS 1
    751 #endif
    752 
    753 /* CSS Selector JIT Compiler */
    754 #if !defined(ENABLE_CSS_SELECTOR_JIT)
    755 #if (CPU(X86_64) || CPU(ARM64) || (CPU(ARM_THUMB2) && PLATFORM(IOS_FAMILY))) && ENABLE(JIT) && (OS(DARWIN) || PLATFORM(GTK) || PLATFORM(WPE))
    756 #define ENABLE_CSS_SELECTOR_JIT 1
    757 #else
    758 #define ENABLE_CSS_SELECTOR_JIT 0
    759 #endif
    760 #endif
    761 
    762 #if CPU(ARM64E) && OS(DARWIN)
    763 #define HAVE_FJCVTZS_INSTRUCTION 1
    764 #endif
    765 
    766 #if PLATFORM(IOS)
    767 #define HAVE_APP_LINKS 1
    768 #define USE_PASSKIT 1
    769 #define USE_QUICK_LOOK 1
    770 #define USE_SYSTEM_PREVIEW 1
    771 #endif
    772 
    773 #if PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)
    774 #define HAVE_CELESTIAL 1
    775 #define HAVE_CORE_ANIMATION_RENDER_SERVER 1
    776 #endif
    777 
    778 #if PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST) && !PLATFORM(APPLETV)
    779 #define HAVE_PARENTAL_CONTROLS_WITH_UNBLOCK_HANDLER 1
    780 #endif
    781 
    782 #if PLATFORM(COCOA)
    783 
    784 #define USE_AVFOUNDATION 1
    785 #define USE_PROTECTION_SPACE_AUTH_CALLBACK 1
    786 
    787 #if !PLATFORM(WATCHOS) && !PLATFORM(APPLETV) && !PLATFORM(MACCATALYST)
    788 #define ENABLE_DATA_DETECTION 1
    789 #endif
    790 
    791 /* FIXME: Enable HAVE_PARENTAL_CONTROLS for watchOS Simulator once rdar://problem/54608386 is resolved */
    792 #if !PLATFORM(APPLETV) && (!PLATFORM(WATCHOS) || !PLATFORM(IOS_FAMILY_SIMULATOR))
    793 #define HAVE_PARENTAL_CONTROLS 1
    794 #endif
    795 
    796 #if !PLATFORM(APPLETV)
    797 #define HAVE_AVKIT 1
    798 #endif
    799 
    800 #if ENABLE(WEBGL)
    801 /* USE_ANGLE=1 uses ANGLE for the WebGL backend.
    802    It replaces USE_OPENGL, USE_OPENGL_ES and USE_EGL. */
    803 #if PLATFORM(MAC) || (PLATFORM(MACCATALYST) && __has_include(<OpenGL/OpenGL.h>))
    804 #define USE_OPENGL 1
    805 #define USE_OPENGL_ES 0
    806 #define USE_ANGLE 0
    807 #else
    808 #define USE_OPENGL 0
    809 #define USE_OPENGL_ES 1
    810 #define USE_ANGLE 0
    811 #endif
    812 #if PLATFORM(COCOA)
    813 #ifndef GL_SILENCE_DEPRECATION
    814 #define GL_SILENCE_DEPRECATION 1
    815 #endif
    816 #if USE(OPENGL) && !defined(HAVE_OPENGL_4)
    817 #define HAVE_OPENGL_4 1
    818 #endif
    819 #if USE(OPENGL_ES) && !defined(HAVE_OPENGL_ES_3)
    820 #define HAVE_OPENGL_ES_3 1
    821 #endif
    822 #endif
    823 #if USE_ANGLE && (USE_OPENGL || USE_OPENGL_ES)
    824 #error USE_ANGLE is incompatible with USE_OPENGL and USE_OPENGL_ES
    825 #endif
    826 #endif
    827 
    828 #define USE_METAL 1
    829 
    830 #if ENABLE(ACCESSIBILITY)
    831 #define USE_ACCESSIBILITY_CONTEXT_MENUS 1
    832 #endif
    833 
    834 #endif
    835 
    836 #if ENABLE(WEBGL)
    837 #if !defined(USE_ANGLE)
    838 #define USE_ANGLE 0
    839 #endif
    840 
    841 #if (USE_ANGLE && (USE_OPENGL || USE_OPENGL_ES || (defined(USE_EGL) && USE_EGL))) && !USE(TEXTURE_MAPPER)
    842 #error USE_ANGLE is incompatible with USE_OPENGL, USE_OPENGL_ES and USE_EGL
    843 #endif
    844 #endif
    845 
    846 #if USE(TEXTURE_MAPPER) && ENABLE(GRAPHICS_CONTEXT_GL) && !defined(USE_TEXTURE_MAPPER_GL)
    847 #define USE_TEXTURE_MAPPER_GL 1
    848 #endif
    849 
    850 #if CPU(ARM_THUMB2) || CPU(ARM64)
    851 #define ENABLE_BRANCH_COMPACTION 1
    852 #endif
    853 
    854 #if !defined(ENABLE_THREADING_LIBDISPATCH) && HAVE(DISPATCH_H)
    855 #define ENABLE_THREADING_LIBDISPATCH 1
    856 #elif !defined(ENABLE_THREADING_OPENMP) && defined(_OPENMP)
    857 #define ENABLE_THREADING_OPENMP 1
    858 #elif !defined(THREADING_GENERIC)
    859 #define ENABLE_THREADING_GENERIC 1
    860 #endif
    861 
    862 #if USE(GLIB)
    863 #include <wtf/glib/GTypedefs.h>
    864 #endif
    865 
    866 #if !defined(USE_EXPORT_MACROS) && (PLATFORM(COCOA) || OS(WINDOWS))
    867 #define USE_EXPORT_MACROS 1
    868 #endif
    869 
    870 #if PLATFORM(GTK) || PLATFORM(WPE)
    871 #define USE_UNIX_DOMAIN_SOCKETS 1
    872 #endif
    873 
    874 #if !defined(USE_IMLANG_FONT_LINK2)
    875 #define USE_IMLANG_FONT_LINK2 1
    876 #endif
    877 
    878 #if !defined(ENABLE_GC_VALIDATION) && !defined(NDEBUG)
    879 #define ENABLE_GC_VALIDATION 1
    880 #endif
    881 
    882 #if !defined(ENABLE_BINDING_INTEGRITY) && !OS(WINDOWS)
    883 #define ENABLE_BINDING_INTEGRITY 1
    884 #endif
    885 
    886 #if !defined(ENABLE_TREE_DEBUGGING)
    887 #if !defined(NDEBUG)
    888 #define ENABLE_TREE_DEBUGGING 1
    889 #else
    890 #define ENABLE_TREE_DEBUGGING 0
    891 #endif
    892 #endif
    893 
    894 /*
    895  * Enable this to put each IsoHeap and other allocation categories into their own malloc heaps, so that tools like vmmap can show how big each heap is.
    896  * Turn BENABLE_MALLOC_HEAP_BREAKDOWN on in bmalloc together when using this.
    897  */
    898 #if !defined(ENABLE_MALLOC_HEAP_BREAKDOWN)
    899 #define ENABLE_MALLOC_HEAP_BREAKDOWN 0
    900 #endif
    901 
    902 #if PLATFORM(COCOA)
    903 #define USE_COREMEDIA 1
    904 #define USE_VIDEOTOOLBOX 1
    905 #define HAVE_AVFOUNDATION_VIDEO_OUTPUT 1
    906 #define HAVE_CORE_VIDEO 1
    907 #define HAVE_MEDIA_PLAYER 1
    908 #endif
    909 
    910 #if PLATFORM(COCOA)
    911 #define HAVE_AVFOUNDATION_MEDIA_SELECTION_GROUP 1
    912 #endif
    913 
    914 #if PLATFORM(COCOA)
    915 #define HAVE_AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT 1
    916 #define HAVE_MEDIA_ACCESSIBILITY_FRAMEWORK 1
    917 #endif
    918 
    919 #if PLATFORM(COCOA)
    920 #define HAVE_AVFOUNDATION_LOADER_DELEGATE 1
    921 #endif
    922 
    923 #if !PLATFORM(WIN)
    924 #define USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR 1
    925 #endif
    926 
    927 #if PLATFORM(MAC) || PLATFORM(MACCATALYST)
    928 #define HAVE_APPLE_GRAPHICS_CONTROL 1
    929 #define HAVE_NSCURSOR 1
    930 #endif
    931 
    932 #if PLATFORM(MAC)
    933 #define USE_COREAUDIO 1
    934 #endif
    935 
    936 #if !defined(USE_ZLIB)
    937 #define USE_ZLIB 1
    938 #endif
    939 
    940 #ifndef HAVE_QOS_CLASSES
    941 #if PLATFORM(COCOA)
    942 #define HAVE_QOS_CLASSES 1
    943 #endif
    944 #endif
    945 
    946 #ifndef HAVE_VOUCHERS
    947 #if PLATFORM(COCOA)
    948 #define HAVE_VOUCHERS 1
    949 #endif
    950 #endif
    951 
    952 #define USE_GRAMMAR_CHECKING 1
    953 
    954 #if PLATFORM(COCOA) || PLATFORM(GTK)
    955 #define USE_UNIFIED_TEXT_CHECKING 1
    956 #endif
    957 #if PLATFORM(MAC)
    958 #define USE_AUTOMATIC_TEXT_REPLACEMENT 1
    959 #endif
    960 
    961 #if PLATFORM(MAC)
    962 /* Some platforms provide UI for suggesting autocorrection. */
    963 #define USE_AUTOCORRECTION_PANEL 1
    964 #endif
    965 
    966 #if PLATFORM(COCOA)
    967 /* 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. */
    968 #define USE_MARKER_REMOVAL_UPON_EDITING 1
    969 #endif
    970 
    971 #if PLATFORM(MAC)
    972 #define USE_INSERTION_UNDO_GROUPING 1
    973 #endif
    974 
    975 #if PLATFORM(COCOA)
    976 #define HAVE_AVASSETREADER 1
    977 #endif
    978 
    979 #if PLATFORM(COCOA)
    980 #define USE_AUDIO_SESSION 1
    981 #endif
    982 
    983 #if PLATFORM(COCOA)
    984 #define HAVE_IOSURFACE 1
    985 #endif
    986 
    987 #if PLATFORM(IOS_FAMILY) && !PLATFORM(IOS_FAMILY_SIMULATOR)
    988 #define HAVE_IOSURFACE_COREIMAGE_SUPPORT 1
    989 #endif
    990 
    991 #if PLATFORM(IOS_FAMILY) && !PLATFORM(IOS_FAMILY_SIMULATOR) && !PLATFORM(MACCATALYST)
    992 #define HAVE_IOSURFACE_ACCELERATOR 1
    993 #endif
    994 
    995 #if PLATFORM(COCOA)
    996 #define ENABLE_RESOURCE_USAGE 1
    997 #endif
    998 
    999 #if PLATFORM(GTK) || PLATFORM(WPE)
    1000 #undef ENABLE_OPENTYPE_VERTICAL
    1001 #define ENABLE_OPENTYPE_VERTICAL 1
    1002 #endif
    1003 
    1004 #if COMPILER(MSVC)
    1005 #undef __STDC_FORMAT_MACROS
    1006 #define __STDC_FORMAT_MACROS
    1007 #undef __STDC_LIMIT_MACROS
    1008 #define __STDC_LIMIT_MACROS
    1009 #endif
    1010 
    1011 #if PLATFORM(MAC)
    1012 #define HAVE_NS_ACTIVITY 1
    1013 #endif
    1014 
    1015 /* Disable SharedArrayBuffers until Spectre security concerns are mitigated. */
    1016 #define ENABLE_SHARED_ARRAY_BUFFER 0
    1017 
    1018 #if (OS(DARWIN) && USE(CG)) || (USE(FREETYPE) && !PLATFORM(GTK)) || (PLATFORM(WIN) && (USE(CG) || USE(CAIRO)))
    1019 #undef ENABLE_OPENTYPE_MATH
    1020 #define ENABLE_OPENTYPE_MATH 1
    1021 #endif
    1022 
    1023 /* Set TARGET_OS_IPHONE to 0 by default to allow using it as a guard
    1024  * in cross-platform the same way as it is used in OS(DARWIN) code. */
    1025 #if !defined(TARGET_OS_IPHONE) && !OS(DARWIN)
    1026 #define TARGET_OS_IPHONE 0
    1027 #endif
    1028 
    1029 #if PLATFORM(COCOA)
    1030 #define USE_MEDIATOOLBOX 1
    1031 #endif
    1032 
    1033 #if PLATFORM(COCOA)
    1034 #define USE_OS_LOG 1
    1035 #if USE(APPLE_INTERNAL_SDK)
    1036 #define USE_OS_STATE 1
    1037 #endif
    1038 #endif
    1039 
    1040 #if PLATFORM(COCOA)
    1041 #define HAVE_SEC_TRUST_SERIALIZATION 1
    1042 #endif
    1043 
    1044 #if !defined(WTF_DEFAULT_EVENT_LOOP)
    1045 #define WTF_DEFAULT_EVENT_LOOP 1
    1046 #endif
    1047 
    1048 #if WTF_DEFAULT_EVENT_LOOP
    1049 #if USE(GLIB)
    1050 /* Use GLib's event loop abstraction. Primarily GTK port uses it. */
    1051 #define USE_GLIB_EVENT_LOOP 1
    1052 #elif OS(WINDOWS)
    1053 /* Use Windows message pump abstraction.
    1054  * Even if the port is AppleWin, we use the Windows message pump system for the event loop,
    1055  * so that USE(WINDOWS_EVENT_LOOP) && USE(CF) can be true.
    1056  * And PLATFORM(WIN) and PLATFORM(GTK) are exclusive. If the port is GTK,
    1057  * PLATFORM(WIN) should be false. And in that case, GLib's event loop is used.
    1058  */
    1059 #define USE_WINDOWS_EVENT_LOOP 1
    1060 #elif PLATFORM(COCOA)
    1061 /* OS X and IOS. Use CoreFoundation & GCD abstraction. */
    1062 #define USE_COCOA_EVENT_LOOP 1
    1063 #else
    1064 #define USE_GENERIC_EVENT_LOOP 1
    1065 #endif
    1066 #endif
    1067 
    1068 #if PLATFORM(COCOA)
    1069 #define USE_MEDIAREMOTE 1
    1070 #endif
    1071 
    1072 #if COMPILER(MSVC)
    1073 /* Enable strict runtime stack buffer checks. */
    1074 #pragma strict_gs_check(on)
    1075 #endif
    1076 
    1077 #if PLATFORM(MAC)
    1078 #define HAVE_TOUCH_BAR 1
    1079 #define USE_DICTATION_ALTERNATIVES 1
    1080 
    1081 #if defined(__LP64__)
    1082 #define ENABLE_WEB_PLAYBACK_CONTROLS_MANAGER 1
    1083 #endif
    1084 #endif /* PLATFORM(MAC) */
    1085 
    1086 #if PLATFORM(COCOA) && ENABLE(WEB_RTC)
    1087 #define USE_LIBWEBRTC 1
    1088 #endif
    1089 
    1090 #if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(MACCATALYST) || USE(GCRYPT)
    1091 #define HAVE_RSA_PSS 1
    1092 #endif
    1093 
    1094 #if (PLATFORM(MAC) && USE(APPLE_INTERNAL_SDK) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    1095 #define USE_SOURCE_APPLICATION_AUDIT_DATA 1
    1096 #endif
    1097 
    1098 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    1099 #define HAVE_HSTS_STORAGE_PATH 1
    1100 #endif
    1101 
    1102 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
    1103 #define HAVE_URL_FORMATTING 1
    1104 #endif
    1105 
    1106 #if !OS(WINDOWS)
    1107 #define HAVE_STACK_BOUNDS_FOR_NEW_THREAD 1
    1108 #endif
    1109 
    1110 #if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
    1111 #define HAVE_AVCONTENTKEYSESSION 1
    1112 #endif
    1113 
    1114 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
    1115 #define HAVE_SEC_KEY_PROXY 1
    1116 #endif
    1117 
    1118 #if PLATFORM(COCOA) && USE(CA)
    1119 #define USE_IOSURFACE_CANVAS_BACKING_STORE 1
    1120 #endif
    1121 
    1122 /* FIXME: Should this be enabled or IOS_FAMILY, not just IOS? */
    1123 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS)
    1124 #define HAVE_FOUNDATION_WITH_SAVE_COOKIES_WITH_COMPLETION_HANDLER 1
    1125 #endif
    1126 
    1127 /* FIXME: Should this be enabled for IOS_FAMILY, not just IOS? */
    1128 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS)
    1129 #define HAVE_FOUNDATION_WITH_SAME_SITE_COOKIE_SUPPORT 1
    1130 #endif
    1131 
    1132 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101400
    1133 #define HAVE_NSHTTPCOOKIESTORAGE__INITWITHIDENTIFIER_WITH_INACCURATE_NULLABILITY 1
    1134 #endif
    1135 
    1136 #if PLATFORM(COCOA)
    1137 #define HAVE_CFNETWORK_WITH_CONTENT_ENCODING_SNIFFING_OVERRIDE 1
    1138 /* The override isn't needed on iOS family, as the default behavior is to not sniff. */
    1139 /* FIXME: This should probably be enabled on 10.13.2 and newer, not just 10.14 and newer. */
    1140 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
    1141 #define USE_CFNETWORK_CONTENT_ENCODING_SNIFFING_OVERRIDE 1
    1142 #endif
    1143 #endif
    1144 
    1145 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(GTK)
    1146 #define HAVE_OS_DARK_MODE_SUPPORT 1
    1147 #endif
    1148 
    1149 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
    1150 #define HAVE_CG_FONT_RENDERING_GET_FONT_SMOOTHING_DISABLED 1
    1151 #endif
    1152 
    1153 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    1154 #define HAVE_CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED 1
    1155 #endif
    1156 
    1157 #ifdef __APPLE__
    1158 #define HAVE_FUNC_USLEEP 1
    1159 #endif
    1160 
    1161 #if PLATFORM(MAC) || PLATFORM(WPE)
    1162 /* FIXME: This really needs a descriptive name, this "new theme" was added in 2008. */
    1163 #define USE_NEW_THEME 1
    1164 #endif
    1165 
    1166 #if PLATFORM(MAC)
    1167 #define HAVE_WINDOW_SERVER_OCCLUSION_NOTIFICATIONS 1
    1168 #endif
    1169 
    1170 #if PLATFORM(COCOA)
    1171 #define HAVE_SEC_ACCESS_CONTROL 1
    1172 #endif
    1173 
    1174 #if PLATFORM(IOS)
    1175 /* FIXME: SafariServices.framework exists on macOS. It is only used by WebKit on iOS, so the behavior is correct, but the name is misleading. */
    1176 #define HAVE_SAFARI_SERVICES_FRAMEWORK 1
    1177 #endif
    1178 
    1179 #if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(WATCHOS)
    1180 #define HAVE_SAFE_BROWSING 1
    1181 #endif
    1182 
    1183 #if PLATFORM(IOS)
    1184 #define HAVE_LINK_PREVIEW 1
    1185 #endif
    1186 
    1187 #if PLATFORM(COCOA)
    1188 /* FIXME: This is a USE style macro, as it triggers the use of CFURLConnection framework stubs. */
    1189 /* FIXME: Is this still necessary? CFURLConnection isn't used on Cocoa platforms any more. */
    1190 #define ENABLE_SEC_ITEM_SHIM 1
    1191 #endif
    1192 
    1193 #if (PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400))
    1194 #define HAVE_ACCESSIBILITY_SUPPORT 1
    1195 #endif
    1196 
    1197 #if PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000 && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130100
    1198 #define HAVE_ACCESSIBILITY_BUNDLES_PATH 1
    1199 #endif
    1200 
    1201 #if PLATFORM(MAC)
    1202 #define ENABLE_FULL_KEYBOARD_ACCESS 1
    1203 #endif
    1204 
    1205 #if ((PLATFORM(COCOA) || PLATFORM(PLAYSTATION) || PLATFORM(WPE)) && ENABLE(ASYNC_SCROLLING)) || PLATFORM(GTK)
    1206 #define ENABLE_KINETIC_SCROLLING 1
    1207 #endif
    1208 
    1209 #if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400)
    1210 #define HAVE_AUTHORIZATION_STATUS_FOR_MEDIA_TYPE 1
    1211 #endif
    1212 
    1213 #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)
    1214 #define HAVE_CFNETWORK_OVERRIDE_SESSION_COOKIE_ACCEPT_POLICY 1
    1215 #endif
    1216 
    1217 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    1218 #define HAVE_CFNETWORK_NSURLSESSION_STRICTRUSTEVALUATE 1
    1219 #endif
    1220 
    1221 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    1222 #define HAVE_CFNETWORK_NEGOTIATED_SSL_PROTOCOL_CIPHER 1
    1223 #endif
    1224 
    1225 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101600) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 140000)
    1226 #define HAVE_CFNETWORK_METRICS_APIS_V4 1
    1227 #endif
    1228 
    1229 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500
    1230 #define HAVE_CSCHECKFIXDISABLE 1
    1231 #endif
    1232 
    1233 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS_FAMILY)
    1234 #define HAVE_SANDBOX_ISSUE_MACH_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN 1
    1235 #endif
    1236 
    1237 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS_FAMILY)
    1238 #define HAVE_SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN 1
    1239 #endif
    1240 
    1241 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    1242 #define HAVE_MDNS_FAST_REGISTRATION 1
    1243 #endif
    1244 
    1245 #if PLATFORM(MAC)
    1246 #define ENABLE_MONOSPACE_FONT_EXCEPTION (__MAC_OS_X_VERSION_MIN_REQUIRED < 101500)
    1247 #elif PLATFORM(IOS_FAMILY)
    1248 #define ENABLE_MONOSPACE_FONT_EXCEPTION (__IPHONE_OS_VERSION_MIN_REQUIRED < 130000)
    1249 #endif
    1250 
    1251 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS_FAMILY)
    1252 #define HAVE_DISALLOWABLE_USER_INSTALLED_FONTS 1
    1253 #endif
    1254 
    1255 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    1256 #define HAVE_CTFONTCREATEFORCHARACTERSWITHLANGUAGEANDOPTION 1
    1257 #endif
    1258 
    1259 #if PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000
    1260 #define HAVE_ARKIT_QUICK_LOOK_PREVIEW_ITEM 1
    1261 #endif
    1262 
    1263 #if PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000
    1264 #define HAVE_UI_WK_DOCUMENT_CONTEXT 1
    1265 #endif
    1266 
    1267 #if PLATFORM(MACCATALYST)
    1268 #define ENABLE_PLATFORM_DRIVEN_TEXT_CHECKING 1
    1269 #define HAVE_HOVER_GESTURE_RECOGNIZER 1
    1270 #define HAVE_UI_PARALLAX_TRANSITION_GESTURE_RECOGNIZER 1
    1271 #endif
    1272 
    1273 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    1274 #define HAVE_ALLOWS_SENSITIVE_LOGGING 1
    1275 #endif
    1276 
    1277 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    1278 #define HAVE_FAIRPLAYSTREAMING_CENC_INITDATA 1
    1279 #endif
    1280 
    1281 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    1282 #define HAVE_UI_SCROLL_VIEW_INDICATOR_FLASHING_SPI 1
    1283 #endif
    1284 
    1285 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    1286 #define HAVE_APP_LINKS_WITH_ISENABLED 1
    1287 #endif
    1288 
    1289 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
    1290 #define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO 1
    1291 #endif
    1292 
    1293 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 120000 && !PLATFORM(IOS_SIMULATOR))
    1294 #define HAVE_DEVICE_MANAGEMENT 1
    1295 #endif
    1296 
    1297 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101500
    1298 #define USE_REALPATH_FOR_DLOPEN_PREFLIGHT 1
    1299 #endif
    1300 
    1301 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    1302 #define HAVE_NSURLSESSION_WEBSOCKET 1
    1303 #endif
    1304 
    1305 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    1306 #define HAVE_AVPLAYER_RESOURCE_CONSERVATION_LEVEL 1
    1307 #endif
    1308 
    1309 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 120000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    1310 #define HAVE_CORETEXT_AUTO_OPTICAL_SIZING 1
    1311 #endif
    1312 
    1313 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000)
    1314 #define HAVE_NSFONT_WITH_OPTICAL_SIZING_BUG 1
    1315 #endif
    1316 
    1317 #if (PLATFORM(IOS) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500))
    1318 #define HAVE_APP_SSO 1
    1319 #endif
    1320 
    1321 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000 || PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(WATCHOS) || PLATFORM(APPLETV) || PLATFORM(MACCATALYST)
    1322 #define HAVE_TLS_PROTOCOL_VERSION_T 1
    1323 #endif
    1324 
    1325 #if PLATFORM(IOS) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(WATCHOS) || PLATFORM(APPLETV) || PLATFORM(MACCATALYST)
    1326 #define HAVE_SEC_TRUST_EVALUATE_WITH_ERROR 1
    1327 #endif
    1328 
    1329 #if PLATFORM(IOS) || PLATFORM(MACCATALYST)
    1330 #define USE_UICONTEXTMENU 1
    1331 #endif
    1332 
    1333 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500
    1334 #define HAVE_SUBVIEWS_IVAR_SPI 1
    1335 #endif
    1336 
    1337 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101500
    1338 #define HAVE_SUBVIEWS_IVAR_DECLARED_BY_SDK 1
    1339 #endif
    1340 
    1341 #if PLATFORM(MAC) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 110000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    1342 #define USE_PLATFORM_SYSTEM_FALLBACK_LIST 1
    1343 #endif
    1344 
    1345 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
    1346 #define HAVE_AX_CLIENT_TYPE 1
    1347 #endif
    1348 
    1349 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(WATCHOS) || PLATFORM(APPLETV)
    1350 #define HAVE_DESIGN_SYSTEM_UI_FONTS 1
    1351 #endif
    1352 
    1353 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || (PLATFORM(IOS) && !PLATFORM(IOS_SIMULATOR))
    1354 #define HAVE_DEVICE_IDENTITY 1
    1355 #endif
    1356 
    1357 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS_FAMILY)
    1358 #define HAVE_DATA_PROTECTION_KEYCHAIN 1
    1359 #endif
    1360 
    1361 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || (PLATFORM(IOS_FAMILY) && !PLATFORM(IOS_FAMILY_SIMULATOR))
    1362 #define HAVE_NEAR_FIELD 1
    1363 #endif
    1364 
    1365 #if PLATFORM(IOS_FAMILY) || (!(defined(USE_SYSTEM_MALLOC) && USE_SYSTEM_MALLOC) && (OS(LINUX) && (PLATFORM(GTK) || PLATFORM(WPE))))
    1366 #define USE_BMALLOC_MEMORY_FOOTPRINT_API 1
    1367 #endif
    1368 
    1369 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || PLATFORM(IOS_FAMILY)
    1370 #define HAVE_OS_SIGNPOST 1
    1371 #endif
     128#define WTF_OS_WIN ERROR "USE WINDOWS WITH OS NOT WIN"
     129#define WTF_OS_MAC ERROR "USE MAC_OS_X WITH OS NOT MAC"
  • trunk/Source/WTF/wtf/Platform.h

    r254401 r254417  
    3434#include <wtf/CPU.h>
    3535
     36/* Include underlying operating system specific macros */
     37#include <wtf/OS.h>
     38
    3639/* ==== PLATFORM handles OS, operating environment, graphics API, and
    3740   CPU. This macro will be phased out in favor of platform adaptation
     
    4245/* ==== Platform adaptation macros: these describe properties of the target environment. ==== */
    4346
    44 /* CPU() - the target CPU architecture */
    45 #define CPU(WTF_FEATURE) (defined WTF_CPU_##WTF_FEATURE  && WTF_CPU_##WTF_FEATURE)
    4647/* HAVE() - specific system features (headers, functions or similar) that are present or not */
    4748#define HAVE(WTF_FEATURE) (defined HAVE_##WTF_FEATURE  && HAVE_##WTF_FEATURE)
    48 /* OS() - underlying operating system; only to be used for mandated low-level services like
    49    virtual memory, not to choose a GUI toolkit */
    50 #define OS(WTF_FEATURE) (defined WTF_OS_##WTF_FEATURE  && WTF_OS_##WTF_FEATURE)
    5149
    5250
     
    8583
    8684
    87 
    88 /* ==== OS() - underlying operating system; only to be used for mandated low-level services like
    89    virtual memory, not to choose a GUI toolkit ==== */
    90 
    91 /* OS(AIX) - AIX */
    92 #ifdef _AIX
    93 #define WTF_OS_AIX 1
    94 #endif
    95 
    96 /* OS(DARWIN) - Any Darwin-based OS, including Mac OS X and iPhone OS */
    97 #ifdef __APPLE__
    98 #define WTF_OS_DARWIN 1
    99 
    100 #include <Availability.h>
    101 #include <AvailabilityMacros.h>
    102 #include <TargetConditionals.h>
    103 #endif
    104 
    105 /* OS(IOS_FAMILY) - iOS family, including iOS, macCatalyst, tvOS, watchOS */
    106 /* OS(IOS) - iOS only, not including macCatalyst */
    107 /* OS(MAC_OS_X) - macOS (not including iOS family) */
    108 #if OS(DARWIN)
    109 #if TARGET_OS_IOS && !(defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST)
    110 #define WTF_OS_IOS 1
    111 #endif
    112 #if TARGET_OS_IPHONE
    113 #define WTF_OS_IOS_FAMILY 1
    114 #elif TARGET_OS_MAC
    115 #define WTF_OS_MAC_OS_X 1
    116 #endif
    117 #endif
    118 
    119 /* OS(FREEBSD) - FreeBSD */
    120 #if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
    121 #define WTF_OS_FREEBSD 1
    122 #endif
    123 
    124 /* OS(FUCHSIA) - Fuchsia */
    125 #ifdef __Fuchsia__
    126 #define WTF_OS_FUCHSIA 1
    127 #endif
    128 
    129 /* OS(HURD) - GNU/Hurd */
    130 #ifdef __GNU__
    131 #define WTF_OS_HURD 1
    132 #endif
    133 
    134 /* OS(LINUX) - Linux */
    135 #ifdef __linux__
    136 #define WTF_OS_LINUX 1
    137 #endif
    138 
    139 /* OS(NETBSD) - NetBSD */
    140 #if defined(__NetBSD__)
    141 #define WTF_OS_NETBSD 1
    142 #endif
    143 
    144 /* OS(OPENBSD) - OpenBSD */
    145 #ifdef __OpenBSD__
    146 #define WTF_OS_OPENBSD 1
    147 #endif
    148 
    149 /* OS(WINDOWS) - Any version of Windows */
    150 #if defined(WIN32) || defined(_WIN32)
    151 #define WTF_OS_WINDOWS 1
    152 #endif
    153 
    154 #define WTF_OS_WIN ERROR "USE WINDOWS WITH OS NOT WIN"
    155 #define WTF_OS_MAC ERROR "USE MAC_OS_X WITH OS NOT MAC"
    156 
    157 /* OS(UNIX) - Any Unix-like system */
    158 #if    OS(AIX)              \
    159     || OS(DARWIN)           \
    160     || OS(FREEBSD)          \
    161     || OS(FUCHSIA)          \
    162     || OS(HURD)             \
    163     || OS(LINUX)            \
    164     || OS(NETBSD)           \
    165     || OS(OPENBSD)          \
    166     || defined(unix)        \
    167     || defined(__unix)      \
    168     || defined(__unix__)
    169 #define WTF_OS_UNIX 1
    170 #endif
    17185
    17286/* Operating environments */
Note: See TracChangeset for help on using the changeset viewer.