blob: 4047bfbd4aee9f1e8e341957bdc457299c6c7595 [file] [log] [blame]
# Copyright (C) 2012 Google Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# A module to contain all the enable/disable feature option code.
#
# For CMake ports, this module only affects development builds. The
# settings in this file have ZERO EFFECT for end users. Use
# WebKitFeatures.cmake to change settings for users. Guidelines:
#
# * A feature enabled here but not WebKitFeatures.cmake is EXPERIMENTAL.
# * A feature enabled in WebKitFeatures.cmake but not here is a BUG.
use strict;
use warnings;
use FindBin;
use lib $FindBin::Bin;
use webkitdirs;
BEGIN {
use Exporter ();
our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw(&getFeatureOptionList);
%EXPORT_TAGS = ( );
@EXPORT_OK = ();
}
my (
$accelerated2DCanvasSupport,
$accessibilityIsolatedTreeSupport,
$applePaySessionV3Support,
$applePaySessionV4Support,
$applePaySessionV9Support,
$applePaySupport,
$applicationManifestSupport,
$asyncScrollingSupport,
$attachmentElementSupport,
$autocapitalizeSupport,
$avfCaptionsSupport,
$bubblewrapSandboxSupport,
$cachePartitioningSupport,
$channelMessagingSupport,
$cloopSupport,
$contentExtensionsSupport,
$contentFilteringSupport,
$contextMenusSupport,
$css3TextSupport,
$cssBoxDecorationBreakSupport,
$cssCompositingSupport,
$cssConicGradientsSupport,
$cssDeviceAdaptationSupport,
$cssImageResolutionSupport,
$cssPaintingAPISupport,
$cssScrollSnapSupport,
$cssSelectorsLevel4Support,
$cssTrailingWordSupport,
$cssTypedOMSupport,
$cursorVisibilitySupport,
$darkModeCSSSupport,
$dataInteractionSupport,
$datacueValueSupport,
$datalistElementSupport,
$deviceOrientationSupport,
$dfgJITSupport,
$downloadAttributeSupport,
$dragSupportSupport,
$encryptedMediaSupport,
$fastJITPermissionsSupport,
$filtersLevel2Support,
$ftlJITSupport,
$ftpDirSupport,
$fullscreenAPISupport,
$gamepadSupport,
$geolocationSupport,
$gpuProcessSupport,
$gstreamerGLSupport,
$indexedDatabaseInWorkersSupport,
$indexedDatabaseSupport,
$inputTypeColorSupport,
$inputTypeDateSupport,
$inputTypeDatetimeSupport,
$inputTypeDatetimelocalSupport,
$inputTypeMonthSupport,
$inputTypeTimeSupport,
$inputTypeWeekSupport,
$inspectorAlternateDispatchersSupport,
$inspectorTelemetrySupport,
$intersectionObserverSupport,
$iosGestureEventsSupport,
$iosTouchEventsSupport,
$jitSupport,
$layoutFormattingContextSupport,
$legacyCSSVendorPrefixesSupport,
$legacyCustomProtocolManagerSupport,
$legacyEncryptedMediaSupport,
$letterpressSupport,
$macGestureEventsSupport,
$mathmlSupport,
$mediaCaptureSupport,
$mediaControlsScriptSupport,
$mediaSessionSupport,
$mediaSourceSupport,
$mediaStatisticsSupport,
$mediaStreamSupport,
$memorySamplerSupport,
$meterElementSupport,
$mhtmlSupport,
$mouseCursorScaleSupport,
$navigatorStandaloneSupport,
$netscapePluginAPISupport,
$networkCacheSpeculativeRevalidationSupport,
$networkCacheStaleWhileRevalidateSupport,
$notificationsSupport,
$offscreenCanvasSupport,
$orientationEventsSupport,
$overflowScrollingTouchSupport,
$paymentRequestSupport,
$pdfkitPluginSupport,
$pictureInPictureAPISupport,
$pointerLockSupport,
$publicSuffixListSupport,
$quotaSupport,
$remoteInspectorSupport,
$resizeObserverSupport,
$resolutionMediaQuerySupport,
$resourceLoadStatisticsSupport,
$resourceUsageSupport,
$rubberBandingSupport,
$samplingProfilerSupport,
$sandboxExtensionsSupport,
$serverPreconnectSupport,
$serviceControlsSupport,
$serviceWorkerSupport,
$shareableResourceSupport,
$smoothScrollingSupport,
$speechSynthesisSupport,
$spellcheckSupport,
$streamsAPISupport,
$svgFontsSupport,
$systemMallocSupport,
$telephoneNumberDetectionSupport,
$textAutosizingSupport,
$threeDTransformsSupport,
$touchEventsSupport,
$touchSliderSupport,
$unifiedBuildsSupport,
$userMessageHandlersSupport,
$userselectAllSupport,
$variationFontsSupport,
$videoPresentationModeSupport,
$videoSupport,
$videoTrackSupport,
$videoUsesElementFullscreenSupport,
$webAPIStatisticsSupport,
$webAssemblySupport,
$webAudioSupport,
$webAuthNSupport,
$webCryptoSupport,
$webRTCSupport,
$webassemblyStreamingAPISupport,
$webdriverKeyboardInteractionsSupport,
$webdriverMouseInteractionsSupport,
$webdriverSupport,
$webdriverTouchInteractionsSupport,
$webgl2Support,
$webglSupport,
$webgpuSupport,
$webXRSupport,
$wirelessPlaybackTargetSupport,
$xsltSupport,
);
prohibitUnknownPort();
my @features = (
{ option => "3d-rendering", desc => "Toggle 3D rendering support",
define => "ENABLE_3D_TRANSFORMS", value => \$threeDTransformsSupport },
{ option => "accelerated-2d-canvas", desc => "Toggle Accelerated 2D Canvas support",
define => "ENABLE_ACCELERATED_2D_CANVAS", value => \$accelerated2DCanvasSupport },
{ option => "accessibility-isolated-tree", desc => "Toggle accessibility isolated tree support",
define => "ENABLE_ACCESSIBILITY_ISOLATED_TREE", value => \$accessibilityIsolatedTreeSupport },
{ option => "apple-pay", desc => "Toggle Apply Pay support",
define => "ENABLE_APPLE_PAY", value => \$applePaySupport },
{ option => "apple-pay-session-v9", desc => "Toggle Apple Pay Session V9 support",
define => "ENABLE_APPLE_PAY_SESSION_V9", value => \$applePaySessionV9Support },
{ option => "application-manifest", desc => "Toggle Application Manifest support",
define => "ENABLE_APPLICATION_MANIFEST", value => \$applicationManifestSupport },
{ option => "async-scrolling", desc => "Enable asynchronous scrolling",
define => "ENABLE_ASYNC_SCROLLING", value => \$asyncScrollingSupport },
{ option => "attachment-element", desc => "Toggle Attachment Element support",
define => "ENABLE_ATTACHMENT_ELEMENT", value => \$attachmentElementSupport },
{ option => "autocapitalize", desc => "Toggle autocapitalize support",
define => "ENABLE_AUTOCAPITALIZE", value => \$autocapitalizeSupport },
{ option => "avf-captions", desc => "Toggle AVFoundation caption support",
define => "ENABLE_AVF_CAPTIONS", value => \$avfCaptionsSupport },
{ option => "bubblewrap-sandbox", desc => "Toggle Bubblewrap sandboxing support",
define => "ENABLE_BUBBLEWRAP_SANDBOX", value => \$bubblewrapSandboxSupport },
{ option => "cache-partitioning", desc => "Toggle cache partitioning support",
define => "ENABLE_CACHE_PARTITIONING", value => \$cachePartitioningSupport },
{ option => "channel-messaging", desc => "Toggle Channel Messaging support",
define => "ENABLE_CHANNEL_MESSAGING", value => \$channelMessagingSupport },
{ option => "content-extensions", desc => "Toggle Content Extensions support",
define => "ENABLE_CONTENT_EXTENSIONS", value => \$contentExtensionsSupport },
{ option => "content-filtering", desc => "Toggle content filtering support",
define => "ENABLE_CONTENT_FILTERING", value => \$contentFilteringSupport },
{ option => "context-menus", desc => "Toggle Context Menu support",
define => "ENABLE_CONTEXT_MENUS", value => \$contextMenusSupport },
{ option => "css3-text", desc => "Toggle CSS3 Text support",
define => "ENABLE_CSS3_TEXT", value => \$css3TextSupport },
{ option => "css-box-decoration-break", desc => "Toggle CSS box-decoration-break support",
define => "ENABLE_CSS_BOX_DECORATION_BREAK", value => \$cssBoxDecorationBreakSupport },
{ option => "css-compositing", desc => "Toggle CSS Compositing support",
define => "ENABLE_CSS_COMPOSITING", value => \$cssCompositingSupport },
{ option => "css-conic-gradients", desc => "Toggle CSS Conic Gradient support",
define => "ENABLE_CSS_CONIC_GRADIENTS", value => \$cssConicGradientsSupport },
{ option => "css-device-adaptation", desc => "Toggle CSS Device Adaptation support",
define => "ENABLE_CSS_DEVICE_ADAPTATION", value => \$cssDeviceAdaptationSupport },
{ option => "css-image-resolution", desc => "Toggle CSS image-resolution support",
define => "ENABLE_CSS_IMAGE_RESOLUTION", value => \$cssImageResolutionSupport },
{ option => "css-painting-api", desc => "Toggle CSS Painting API support",
define => "ENABLE_CSS_PAINTING_API", value => \$cssPaintingAPISupport },
{ option => "css-scroll-snap", desc => "Toggle CSS snap scroll support",
define => "ENABLE_CSS_SCROLL_SNAP", value => \$cssScrollSnapSupport },
{ option => "css-selectors-level4", desc => "Toggle CSS Selectors Level 4 support",
define => "ENABLE_CSS_SELECTORS_LEVEL4", value => \$cssSelectorsLevel4Support },
{ option => "css-trailing-word", desc => "Toggle css trailing word",
define => "ENABLE_CSS_TRAILING_WORD", value => \$cssTrailingWordSupport },
{ option => "css-typed-om", desc => "Toggle CSS Typed OM support",
define => "ENABLE_CSS_TYPED_OM", value => \$cssTypedOMSupport },
{ option => "cursor-visibility", desc => "Toggle cursor visibility support",
define => "ENABLE_CURSOR_VISIBILITY", value => \$cursorVisibilitySupport },
{ option => "cloop", desc => "Enable CLoop interpreter",
define => "ENABLE_C_LOOP", value => \$cloopSupport },
{ option => "dark-mode-css", desc => "Toggle Dark Mode CSS support",
define => "ENABLE_DARK_MODE_CSS", value => \$darkModeCSSSupport },
{ option => "datacue-value", desc => "Toggle datacue value support",
define => "ENABLE_DATACUE_VALUE", value => \$datacueValueSupport },
{ option => "datalist-element", desc => "Toggle Datalist Element support",
define => "ENABLE_DATALIST_ELEMENT", value => \$datalistElementSupport },
{ option => "data-interaction", desc => "Toggle data interaction support",
define => "ENABLE_DATA_INTERACTION", value => \$dataInteractionSupport },
{ option => "device-orientation", desc => "Toggle Device Orientation support",
define => "ENABLE_DEVICE_ORIENTATION", value => \$deviceOrientationSupport },
{ option => "dfg-jit", desc => "Toggle data flow graph JIT tier",
define => "ENABLE_DFG_JIT", value => \$dfgJITSupport },
{ option => "download-attribute", desc => "Toggle Download Attribute support",
define => "ENABLE_DOWNLOAD_ATTRIBUTE", value => \$downloadAttributeSupport },
{ option => "drag-support", desc => "Toggle support of drag actions (including selection of text with mouse)",
define => "ENABLE_DRAG_SUPPORT", value => \$dragSupportSupport },
{ option => "encrypted-media", desc => "Toggle EME V3 support",
define => "ENABLE_ENCRYPTED_MEDIA", value => \$encryptedMediaSupport },
{ option => "fast-jit-permissions", desc => "Toggle fast JIT permissions support",
define => "ENABLE_FAST_JIT_PERMISSIONS", value => \$fastJITPermissionsSupport },
{ option => "filters-level-2", desc => "Toggle Filters Module Level 2",
define => "ENABLE_FILTERS_LEVEL_2", value => \$filtersLevel2Support },
{ option => "ftl-jit", desc => "Toggle FTL JIT support",
define => "ENABLE_FTL_JIT", value => \$ftlJITSupport },
{ option => "ftpdir", desc => "Toggle FTP Directory support",
define => "ENABLE_FTPDIR", value => \$ftpDirSupport },
{ option => "fullscreen-api", desc => "Toggle Fullscreen API support",
define => "ENABLE_FULLSCREEN_API", value => \$fullscreenAPISupport },
{ option => "gamepad", desc => "Toggle Gamepad support",
define => "ENABLE_GAMEPAD", value => \$gamepadSupport },
{ option => "geolocation", desc => "Toggle Geolocation support",
define => "ENABLE_GEOLOCATION", value => \$geolocationSupport },
{ option => "gpu-process", desc => "Toggle GPU Process support",
define => "ENABLE_GPU_PROCESS", value => \$gpuProcessSupport },
{ option => "indexed-database", desc => "Toggle Indexed Database support",
define => "ENABLE_INDEXED_DATABASE", value => \$indexedDatabaseSupport },
{ option => "indexed-database-in-workers", desc => "Toggle support for Indexed Database in workers",
define => "ENABLE_INDEXED_DATABASE_IN_WORKERS", value => \$indexedDatabaseInWorkersSupport },
{ option => "input-type-color", desc => "Toggle Input Type Color support",
define => "ENABLE_INPUT_TYPE_COLOR", value => \$inputTypeColorSupport },
{ option => "input-type-date", desc => "Toggle Input Type Date support",
define => "ENABLE_INPUT_TYPE_DATE", value => \$inputTypeDateSupport },
{ option => "input-type-datetimelocal", desc => "Toggle Input Type Datetimelocal support",
define => "ENABLE_INPUT_TYPE_DATETIMELOCAL", value => \$inputTypeDatetimelocalSupport },
{ option => "input-type-datetime", desc => "Toggle broken Input Type Datetime support",
define => "ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE", value => \$inputTypeDatetimeSupport },
{ option => "input-type-month", desc => "Toggle Input Type Month support",
define => "ENABLE_INPUT_TYPE_MONTH", value => \$inputTypeMonthSupport },
{ option => "input-type-time", desc => "Toggle Input Type Time support",
define => "ENABLE_INPUT_TYPE_TIME", value => \$inputTypeTimeSupport },
{ option => "input-type-week", desc => "Toggle Input Type Week support",
define => "ENABLE_INPUT_TYPE_WEEK", value => \$inputTypeWeekSupport },
{ option => "inspector-alternate-dispatchers", desc => "Toggle inspector alternate dispatchers support",
define => "ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS", value => \$inspectorAlternateDispatchersSupport },
{ option => "inspector-telemetry", desc => "Toggle inspector telemetry support",
define => "ENABLE_INSPECTOR_TELEMETRY", value => \$inspectorTelemetrySupport },
{ option => "intersection-observer", desc => "Enable Intersection Observer support",
define => "ENABLE_INTERSECTION_OBSERVER", value => \$intersectionObserverSupport },
{ option => "ios-gesture-events", desc => "Toggle iOS gesture events support",
define => "ENABLE_IOS_GESTURE_EVENTS", value => \$iosGestureEventsSupport },
{ option => "ios-touch-events", desc => "Toggle iOS touch events support",
define => "ENABLE_IOS_TOUCH_EVENTS", value => \$iosTouchEventsSupport },
{ option => "jit", desc => "Toggle JustInTime JavaScript support",
define => "ENABLE_JIT", value => \$jitSupport },
{ option => "layout-formatting-context", desc => "Toggle Layout Formatting Context support",
define => "ENABLE_LAYOUT_FORMATTING_CONTEXT", value => \$layoutFormattingContextSupport },
{ option => "legacy-css-vendor-prefixes", desc => "Toggle legacy css vendor prefix support",
define => "ENABLE_LEGACY_CSS_VENDOR_PREFIXES", value => \$legacyCSSVendorPrefixesSupport },
{ option => "legacy-custom-protocol-manager", desc => "Toggle legacy protocol manager support",
define => "ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER", value => \$legacyCustomProtocolManagerSupport },
{ option => "legacy-encrypted-media", desc => "Toggle Legacy EME V2 support",
define => "ENABLE_LEGACY_ENCRYPTED_MEDIA", value => \$legacyEncryptedMediaSupport },
{ option => "letterpress", desc => "Toggle letterpress support",
define => "ENABLE_LETTERPRESS", value => \$letterpressSupport },
{ option => "mac-gesture-events", desc => "Toggle Mac gesture events support",
define => "ENABLE_MAC_GESTURE_EVENTS", value => \$macGestureEventsSupport },
{ option => "mathml", desc => "Toggle MathML support",
define => "ENABLE_MATHML", value => \$mathmlSupport },
{ option => "media-capture", desc => "Toggle Media Capture support",
define => "ENABLE_MEDIA_CAPTURE", value => \$mediaCaptureSupport },
{ option => "media-controls-script", desc => "Toggle definition of media controls in Javascript",
define => "ENABLE_MEDIA_CONTROLS_SCRIPT", value => \$mediaControlsScriptSupport },
{ option => "media-session", desc => "Toggle Media Session support",
define => "ENABLE_MEDIA_SESSION", value => \$mediaSessionSupport },
{ option => "media-source", desc => "Toggle Media Source support",
define => "ENABLE_MEDIA_SOURCE", value => \$mediaSourceSupport },
{ option => "media-statistics", desc => "Toggle Media Statistics support",
define => "ENABLE_MEDIA_STATISTICS", value => \$mediaStatisticsSupport },
{ option => "media-stream", desc => "Toggle Media Stream support",
define => "ENABLE_MEDIA_STREAM", value => \$mediaStreamSupport },
{ option => "memory-sampler", desc => "Toggle Memory Sampler support",
define => "ENABLE_MEMORY_SAMPLER", value => \$memorySamplerSupport },
{ option => "meter-element", desc => "Toggle Meter Element support",
define => "ENABLE_METER_ELEMENT", value => \$meterElementSupport },
{ option => "mhtml", desc => "Toggle MHTML support",
define => "ENABLE_MHTML", value => \$mhtmlSupport },
{ option => "mouse-cursor-scale", desc => "Toggle Scaled mouse cursor support",
define => "ENABLE_MOUSE_CURSOR_SCALE", value => \$mouseCursorScaleSupport },
{ option => "navigator-standalone", desc => "Toogle standalone navigator support",
define => "ENABLE_NAVIGATOR_STANDALONE", value => \$navigatorStandaloneSupport },
{ option => "netscape-plugin-api", desc => "Toggle Netscape Plugin API support",
define => "ENABLE_NETSCAPE_PLUGIN_API", value => \$netscapePluginAPISupport },
{ option => "network-cache-speculative-revalidation", desc => "Toogle network cache speculative revalidation support",
define => "ENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION", value => \$networkCacheSpeculativeRevalidationSupport },
{ option => "network-cache-stale-while-revalidate", desc => "Toogle network cache stale-while-revalidate caching strategy",
define => "ENABLE_NETWORK_CACHE_STALE_WHILE_REVALIDATE", value => \$networkCacheStaleWhileRevalidateSupport },
{ option => "notifications", desc => "Toggle Notifications support",
define => "ENABLE_NOTIFICATIONS", value => \$notificationsSupport },
{ option => "offscreen-canvas", desc => "Toggle OffscreenCanvas support",
define => "ENABLE_OFFSCREEN_CANVAS", value => \$offscreenCanvasSupport },
{ option => "orientation-events", desc => "Toggle Orientation Events support",
define => "ENABLE_ORIENTATION_EVENTS", value => \$orientationEventsSupport },
{ option => "overflow-scrolling-touch", desc => "Toggle accelerated scrolling support",
define => "ENABLE_OVERFLOW_SCROLLING_TOUCH", value => \$overflowScrollingTouchSupport },
{ option => "payment-request", desc => "Toggle Payment Request support",
define => "ENABLE_PAYMENT_REQUEST", value => \$paymentRequestSupport },
{ option => "pdfkit-plugin", desc => "Toggle PDFKit plugin support",
define => "ENABLE_PDFKIT_PLUGIN", value => \$pdfkitPluginSupport },
{ option => "picture-in-picture-api", desc => "Toggle Picture-in-Picture API support",
define => "ENABLE_PICTURE_IN_PICTURE_API", value => \$pictureInPictureAPISupport },
{ option => "pointer-lock", desc => "Toggle pointer lock support",
define => "ENABLE_POINTER_LOCK", value => \$pointerLockSupport },
{ option => "public-suffix-list", desc => "Toggle public suffix list support",
define => "ENABLE_PUBLIC_SUFFIX_LIST", value => \$publicSuffixListSupport },
{ option => "quota", desc => "Toggle Quota support",
define => "ENABLE_QUOTA", value => \$quotaSupport },
{ option => "remote-inspector", desc => "Toggle remote inspector support",
define => "ENABLE_REMOTE_INSPECTOR", value => \$remoteInspectorSupport },
{ option => "resize-observer", desc => "Toggle Resize Observer support",
define => "ENABLE_RESIZE_OBSERVER", value => \$resizeObserverSupport },
{ option => "resolution-media-query", desc => "Toggle resolution media query support",
define => "ENABLE_RESOLUTION_MEDIA_QUERY", value => \$resolutionMediaQuerySupport },
{ option => "resource-load-statistics", desc => "Toggle resource load statistics support",
define => "ENABLE_RESOURCE_LOAD_STATISTICS", value => \$resourceLoadStatisticsSupport },
{ option => "resource-usage", desc => "Toggle resource usage support",
define => "ENABLE_RESOURCE_USAGE", value => \$resourceUsageSupport },
{ option => "rubber-banding", desc => "Toggle rubber banding support",
define => "ENABLE_RUBBER_BANDING", value => \$rubberBandingSupport },
{ option => "sampling-profiler", desc => "Toggle sampling profiler support",
define => "ENABLE_SAMPLING_PROFILER", value => \$samplingProfilerSupport },
{ option => "sandbox-extensions", desc => "Toggle sandbox extensions support",
define => "ENABLE_SANDBOX_EXTENSIONS", value => \$sandboxExtensionsSupport },
{ option => "server-preconnect", desc => "Toggle server preconnect support",
define => "ENABLE_SERVER_PRECONNECT", value => \$serverPreconnectSupport },
{ option => "service-controls", desc => "Toggle service controls support",
define => "ENABLE_SERVICE_CONTROLS", value => \$serviceControlsSupport },
{ option => "service-worker", desc => "Toggle Service Worker support",
define => "ENABLE_SERVICE_WORKER", value => \$serviceWorkerSupport },
{ option => "shareable-resource", desc => "Toggle network shareable resources support",
define => "ENABLE_SHAREABLE_RESOURCE", value => \$shareableResourceSupport },
{ option => "smooth-scrolling", desc => "Toggle smooth scrolling",
define => "ENABLE_SMOOTH_SCROLLING", value => \$smoothScrollingSupport },
{ option => "speech-synthesis", desc => "Toggle Speech Synthesis API support",
define => "ENABLE_SPEECH_SYNTHESIS", value => \$speechSynthesisSupport },
{ option => "spellcheck", desc => "Toggle Spellchecking support (requires Enchant)",
define => "ENABLE_SPELLCHECK", value => \$spellcheckSupport },
{ option => "svg-fonts", desc => "Toggle SVG Fonts support",
define => "ENABLE_SVG_FONTS", value => \$svgFontsSupport },
{ option => "telephone-number-detection", desc => "Toggle telephone number detection support",
define => "ENABLE_TELEPHONE_NUMBER_DETECTION", value => \$telephoneNumberDetectionSupport },
{ option => "text-autosizing", desc => "Toggle automatic text size adjustment support",
define => "ENABLE_TEXT_AUTOSIZING", value => \$textAutosizingSupport },
{ option => "touch-events", desc => "Toggle Touch Events support",
define => "ENABLE_TOUCH_EVENTS", value => \$touchEventsSupport },
{ option => "touch-slider", desc => "Toggle Touch Slider support",
define => "ENABLE_TOUCH_SLIDER", value => \$touchSliderSupport },
{ option => "unified-builds", desc => "Toggle unified builds",
define => "ENABLE_UNIFIED_BUILDS", value => \$unifiedBuildsSupport },
{ option => "userselect-all", desc => "Toggle user-select:all support",
define => "ENABLE_USERSELECT_ALL", value => \$userselectAllSupport },
{ option => "user-message-handlers", desc => "Toggle user script message handler support",
define => "ENABLE_USER_MESSAGE_HANDLERS", value => \$userMessageHandlersSupport },
{ option => "variation-fonts", desc => "Toggle variation fonts support",
define => "ENABLE_VARIATION_FONTS", value => \$variationFontsSupport },
{ option => "video", desc => "Toggle Video support",
define => "ENABLE_VIDEO", value => \$videoSupport },
{ option => "video-presentation-mode", desc => "Toggle Video presentation mode support",
define => "ENABLE_VIDEO_PRESENTATION_MODE", value => \$videoPresentationModeSupport },
{ option => "video-uses-element-fullscreen", desc => "Toggle video element fullscreen support",
define => "ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN", value => \$videoUsesElementFullscreenSupport },
{ option => "webassembly", desc => "Toggle WebAssembly support",
define => "ENABLE_WEBASSEMBLY", value => \$webAssemblySupport },
{ option => "webassembly-streaming-api", desc => "Toggle WebAssembly streaming api support.",
define => "ENABLE_WEBASSEMBLY_STREAMING_API", value => \$webassemblyStreamingAPISupport },
{ option => "webdriver", desc => "Toggle WebDriver service process",
define => "ENABLE_WEBDRIVER", value => \$webdriverSupport },
{ option => "webdriver-keyboard-interactions", desc => "Toggle WebDriver keyboard interactions",
define => "ENABLE_WEBDRIVER_KEYBOARD_INTERACTIONS", value => \$webdriverKeyboardInteractionsSupport },
{ option => "webdriver-mouse-interactions", desc => "Toggle WebDriver mouse interactions",
define => "ENABLE_WEBDRIVER_MOUSE_INTERACTIONS", value => \$webdriverMouseInteractionsSupport },
{ option => "webdriver-touch-interactions", desc => "Toggle WebDriver touch interactions",
define => "ENABLE_WEBDRIVER_TOUCH_INTERACTIONS", value => \$webdriverTouchInteractionsSupport },
{ option => "webgl", desc => "Toggle WebGL support",
define => "ENABLE_WEBGL", value => \$webglSupport },
{ option => "webgl2", desc => "Toggle WebGL2 support",
define => "ENABLE_WEBGL2", value => \$webgl2Support },
{ option => "webgpu", desc => "Toggle WebGPU support",
define => "ENABLE_WEBGPU", value => \$webgpuSupport },
{ option => "webxr", desc => "Toggle WebXR support",
define => "ENABLE_WEBXR", value => \$webXRSupport },
{ option => "web-api-statistics", desc => "Toggle Web API statistics support",
define => "ENABLE_WEB_API_STATISTICS", value => \$webAPIStatisticsSupport },
{ option => "web-audio", desc => "Toggle Web Audio support",
define => "ENABLE_WEB_AUDIO", value => \$webAudioSupport },
{ option => "web-authn", desc => "Toggle Web AuthN support",
define => "ENABLE_WEB_AUTHN", value => \$webAuthNSupport },
{ option => "web-crypto", desc => "Toggle WebCrypto Subtle-Crypto support",
define => "ENABLE_WEB_CRYPTO", value => \$webCryptoSupport },
{ option => "web-rtc", desc => "Toggle WebRTC support",
define => "ENABLE_WEB_RTC", value => \$webRTCSupport },
{ option => "wireless-playback-target", desc => "Toggle wireless playback target support",
define => "ENABLE_WIRELESS_PLAYBACK_TARGET", value => \$wirelessPlaybackTargetSupport },
{ option => "xslt", desc => "Toggle XSLT support",
define => "ENABLE_XSLT", value => \$xsltSupport },
{ option => "gstreamer-gl", desc => "Toggle GStreamer GL support",
define => "USE_GSTREAMER_GL", value => \$gstreamerGLSupport },
{ option => "system-malloc", desc => "Toggle system allocator instead of bmalloc",
define => "USE_SYSTEM_MALLOC", value => \$systemMallocSupport },
);
sub getFeatureOptionList()
{
return @features;
}
1;