Title: [116055] trunk/Tools
Revision
116055
Author
e...@webkit.org
Date
2012-05-03 18:06:47 -0700 (Thu, 03 May 2012)

Log Message

Split build-webkit's feature option list off into its own module in preparation for autogeneration
https://bugs.webkit.org/show_bug.cgi?id=85548

Reviewed by Daniel Bates.

My Perl-fu is very weak.  This moves the feature option list off into a separate module
file so that I can easily autogenerate just that file with the fancy new generate-feature-files command.
It's a bit odd to have an array which we return out to build-webkit to modify, but it turns out
not to matter.  Also, build-webkit doesn't actually use any of the variables we're using to
store the results from the option parse, so those end up inaccessible from build-webkit (except by reference)
which is actually cleaner.  Callers can't assume that they would get a new array every time, but someone
with more Perl-fu than I could create something fancier than this if we need in the future.

* Scripts/build-webkit:
* Scripts/webkitperl/FeatureList.pm: Added.
(getFeatureOptionList):

Modified Paths

Added Paths

Diff

Modified: trunk/Tools/ChangeLog (116054 => 116055)


--- trunk/Tools/ChangeLog	2012-05-04 01:05:50 UTC (rev 116054)
+++ trunk/Tools/ChangeLog	2012-05-04 01:06:47 UTC (rev 116055)
@@ -1,3 +1,22 @@
+2012-05-03  Eric Seidel  <e...@webkit.org>
+
+        Split build-webkit's feature option list off into its own module in preparation for autogeneration
+        https://bugs.webkit.org/show_bug.cgi?id=85548
+
+        Reviewed by Daniel Bates.
+
+        My Perl-fu is very weak.  This moves the feature option list off into a separate module
+        file so that I can easily autogenerate just that file with the fancy new generate-feature-files command.
+        It's a bit odd to have an array which we return out to build-webkit to modify, but it turns out
+        not to matter.  Also, build-webkit doesn't actually use any of the variables we're using to
+        store the results from the option parse, so those end up inaccessible from build-webkit (except by reference)
+        which is actually cleaner.  Callers can't assume that they would get a new array every time, but someone
+        with more Perl-fu than I could create something fancier than this if we need in the future.
+
+        * Scripts/build-webkit:
+        * Scripts/webkitperl/FeatureList.pm: Added.
+        (getFeatureOptionList):
+
 2012-05-03  Dirk Pranke  <dpra...@chromium.org>
 
         REGRESSION: run-webkit-tests failing on Chromium Mac

Modified: trunk/Tools/Scripts/build-webkit (116054 => 116055)


--- trunk/Tools/Scripts/build-webkit	2012-05-04 01:05:50 UTC (rev 116054)
+++ trunk/Tools/Scripts/build-webkit	2012-05-04 01:06:47 UTC (rev 116055)
@@ -39,6 +39,7 @@
 use Getopt::Long qw(:config pass_through);
 use lib $FindBin::Bin;
 use webkitdirs;
+use webkitperl::FeatureList qw(getFeatureOptionList);
 use POSIX;
 
 sub cMakeArgsFromFeatures();
@@ -64,316 +65,8 @@
 my $coverageSupport = 0;
 my $startTime = time();
 
-my (
-    $requestAnimationFrameSupport,
-    $threeDCanvasSupport,
-    $threeDRenderingSupport,
-    $accelerated2dCanvasSupport,
-    $animationAPISupport,
-    $batterystatusAPISupport,
-    $blobSupport,
-    $channelMessagingSupport,
-    $cssFiltersSupport,
-    $cssGridLayoutSupport,
-    $cssShadersSupport,
-    $sqlDatabaseSupport,
-    $datalistSupport,
-    $dataTransferItemsSupport,
-    $detailsSupport,
-    $deviceOrientationSupport,
-    $directoryUploadSupport,
-    $downloadAttributeSupport,
-    $fileSystemSupport,
-    $filtersSupport,
-    $ftpDirSupport,
-    $fullscreenAPISupport,
-    $gamepadSupport,
-    $geolocationSupport,
-    $highDPICanvasSupport,
-    $iconDatabaseSupport,
-    $imageResizerSupport,
-    $indexedDatabaseSupport,
-    $inputTypeColorSupport,
-    $inputSpeechSupport,
-    $scriptedSpeechSupport,
-    $inputTypeDateSupport,
-    $inputTypeDatetimeSupport,
-    $inputTypeDatetimelocalSupport,
-    $inputTypeMonthSupport,
-    $inputTypeTimeSupport,
-    $inputTypeWeekSupport,
-    $_javascript_DebuggerSupport,
-    $legacyNotificationsSupport,
-    $legacyWebKitBlobBuilderSupport,
-    $linkPrefetchSupport,
-    $linkPrerenderSupport,
-    $mathmlSupport,
-    $mediaSourceSupport,
-    $mediaStatisticsSupport,
-    $mediaStreamSupport,
-    $meterTagSupport,
-    $mhtmlSupport,
-    $microdataSupport,
-    $mutationObserversSupport,
-    $netscapePluginSupport,
-    $networkInfoSupport,
-    $notificationsSupport,
-    $orientationEventsSupport,
-    $pageVisibilityApiSupport,
-    $progressTagSupport,
-    $quotaSupport,
-    $registerProtocolHandlerSupport,
-    $shadowDomSupport,
-    $sharedWorkersSupport,
-    $styleScopedSupport,
-    $svgSupport,
-    $svgDOMObjCBindingsSupport,
-    $svgFontsSupport,
-    $systemMallocSupport,
-    $tiledBackingStoreSupport,
-    $touchEventsSupport,
-    $touchIconLoadingSupport,
-    $vibrationSupport,
-    $videoSupport,
-    $videoTrackSupport,
-    $webAudioSupport,
-    $webInspectorSupport,
-    $webSocketsSupport,
-    $webTimingSupport,
-    $workersSupport,
-    $xsltSupport,
-);
+my @features = getFeatureOptionList();
 
-my @features = (
-    { option => "request-animation-frame", desc => "Toggle requestAnimationFrame support",
-      define => "ENABLE_REQUEST_ANIMATION_FRAME", default => (isAppleMacWebKit() || isGtk() || isEfl() || isBlackBerry()), value => \$requestAnimationFrameSupport },
-
-    { option => "download-attribute", desc => "Toggle download attribute support",
-      define => "ENABLE_DOWNLOAD_ATTRIBUTE", default => isBlackBerry(), value =>\$downloadAttributeSupport },
-
-    { option => "3d-canvas", desc => "Toggle 3D canvas (WebGL) support",
-      define => "ENABLE_WEBGL", default => isAppleMacWebKit(), value => \$threeDCanvasSupport },
-
-    { option => "3d-rendering", desc => "Toggle 3D rendering support",
-      define => "ENABLE_3D_RENDERING", default => (isAppleMacWebKit() || isQt()), value => \$threeDRenderingSupport },
-
-    { option => "accelerated-2d-canvas", desc => "Toggle accelerated 2D canvas support",
-      define => "ENABLE_ACCELERATED_2D_CANVAS", default => 0, value => \$accelerated2dCanvasSupport },
-
-    { option => "animation-api", desc => "Toggle animation API support",
-      define => "ENABLE_ANIMATION_API", default => isBlackBerry(), value => \$animationAPISupport },
-
-    { option => "battery-status-api", desc => "Toggle battery status API support",
-      define => "ENABLE_BATTERY_STATUS", default => (isEfl() || isBlackBerry()), value => \$batterystatusAPISupport },
-
-    { option => "blob", desc => "Toggle Blob support",
-      define => "ENABLE_BLOB", default => (isAppleMacWebKit() || isGtk() || isChromium() || isBlackBerry()), value => \$blobSupport },
-
-    { option => "channel-messaging", desc => "Toggle MessageChannel and MessagePort support",
-      define => "ENABLE_CHANNEL_MESSAGING", default => 1, value => \$channelMessagingSupport },
-
-    { option => "css-filters", desc => "Toggle CSS Filters support",
-      define => "ENABLE_CSS_FILTERS", default => isAppleWebKit(), value => \$cssFiltersSupport },
-
-    { option => "css-grid-layout", desc => "Toggle CSS Grid Layout support",
-      define => "ENABLE_CSS_GRID_LAYOUT", default => 0, value => \$cssGridLayoutSupport },
-
-    { option => "css-shaders", desc => "Toggle CSS Shaders (within CSS Filters) support",
-      define => "ENABLE_CSS_SHADERS", default => 0, value => \$cssShadersSupport },
-
-    { option => "sql-database", desc => "Toggle SQL Database Support",
-      define => "ENABLE_SQL_DATABASE", default => 1, value => \$sqlDatabaseSupport },
-
-    { option => "datalist", desc => "Toggle HTML5 datalist support",
-      define => "ENABLE_DATALIST", default => 0, value => \$datalistSupport },
-
-    { option => "data-transfer-items", desc => "Toggle HTML5 data transfer items support",
-      define => "ENABLE_DATA_TRANSFER_ITEMS", default => 0, value => \$dataTransferItemsSupport },
-
-    { option => "details", desc => "Toggle HTML5 details support",
-      define => "ENABLE_DETAILS", default => 1, value => \$detailsSupport },
-
-    { option => "device-orientation", desc => "Toggle DeviceOrientation support",
-      define => "ENABLE_DEVICE_ORIENTATION", default => isBlackBerry(), value => \$deviceOrientationSupport },
-
-    { option => "directory-upload", desc => "Toogle Directory upload support",
-      define => "ENABLE_DIRECTORY_UPLOAD", default => 0, value => \$directoryUploadSupport },
-
-    { option => "file-system", desc => "Toggle FileSystem support",
-      define => "ENABLE_FILE_SYSTEM", default => isBlackBerry(), value => \$fileSystemSupport },
-
-    { option => "filters", desc => "Toggle SVG Filters support",
-      define => "ENABLE_FILTERS", default => (isAppleWebKit() || isGtk() || isQt() || isEfl() || isBlackBerry()), value => \$filtersSupport },
-
-    { option => "ftpdir", desc => "Toggle FTP directory support",
-      define => "ENABLE_FTPDIR", default => !isWinCE(), value => \$ftpDirSupport },
-
-    { option => "fullscreen-api", desc => "Toggle Fullscreen API support",
-      define => "ENABLE_FULLSCREEN_API", default => (isAppleMacWebKit() || isGtk() || isBlackBerry()), value => \$fullscreenAPISupport },
-
-    { option => "gamepad", desc => "Toggle Gamepad support",
-      define => "ENABLE_GAMEPAD", default => 0, value => \$gamepadSupport },
-
-    { option => "geolocation", desc => "Toggle Geolocation support",
-      define => "ENABLE_GEOLOCATION", default => (isAppleWebKit() || isGtk() || isBlackBerry()), value => \$geolocationSupport },
-
-    { option => "high-dpi-canvas", desc => "Toggle high-DPI canvas backing store support",
-      define => "ENABLE_HIGH_DPI_CANVAS", default => (isAppleWebKit()), value => \$highDPICanvasSupport },
-
-    { option => "icon-database", desc => "Toggle Icon database support",
-      define => "ENABLE_ICONDATABASE", default => 1, value => \$iconDatabaseSupport },
-
-    { option => "indexed-database", desc => "Toggle Indexed Database API support",
-      define => "ENABLE_INDEXED_DATABASE", default => 0, value => \$indexedDatabaseSupport },
-
-    { option => "input-speech", desc => "Speech Input API support",
-      define => "ENABLE_INPUT_SPEECH", default => 0, value => \$inputSpeechSupport },
-
-    { option => "scripted-speech", desc => "Scripted Speech API support",
-      define => "ENABLE_SCRIPTED_SPEECH", default => 0, value => \$scriptedSpeechSupport },
-
-    { option => "input-type-color", desc => "Toggle color type <input> support",
-      define => "ENABLE_INPUT_TYPE_COLOR", default => (isBlackBerry() || isEfl()), value => \$inputTypeColorSupport },
-
-    { option => "input-type-date", desc => "Toggle date type <input> support",
-      define => "ENABLE_INPUT_TYPE_DATE", default => 0, value => \$inputTypeDateSupport },
-
-    { option => "input-type-datetime", desc => "Toggle datetime type <input> support",
-      define => "ENABLE_INPUT_TYPE_DATETIME", default => 0, value => \$inputTypeDatetimeSupport },
-
-    { option => "input-type-datetimelocal", desc => "Toggle datetime-local type <input> support",
-      define => "ENABLE_INPUT_TYPE_DATETIMELOCAL", default => 0, value => \$inputTypeDatetimelocalSupport },
-
-    { option => "input-type-month", desc => "Toggle month type <input> support",
-      define => "ENABLE_INPUT_TYPE_MONTH", default => 0, value => \$inputTypeMonthSupport },
-
-    { option => "input-type-time", desc => "Toggle time type <input> support",
-      define => "ENABLE_INPUT_TYPE_TIME", default => 0, value => \$inputTypeTimeSupport },
-
-    { option => "input-type-week", desc => "Toggle week type <input> support",
-      define => "ENABLE_INPUT_TYPE_WEEK", default => 0, value => \$inputTypeWeekSupport },
-
-    { option => "inspector", desc => "Toggle Web Inspector support",
-      define => "ENABLE_INSPECTOR", default => !isWinCE(), value => \$webInspectorSupport },
-
-    { option => "_javascript_-debugger", desc => "Toggle _javascript_ Debugger/Profiler support",
-      define => "ENABLE_JAVASCRIPT_DEBUGGER", default => 1, value => \$_javascript_DebuggerSupport },
-
-    { option => "legacy-notifications", desc => "Toggle Legacy Desktop Notifications Support",
-      define => "ENABLE_LEGACY_NOTIFICATIONS", default => isBlackBerry(), value => \$legacyNotificationsSupport },
-
-    { option => "legacy-webkit-blob-builder", desc => "Toggle Legacy WebKitBlobBuilder Support",
-      define => "ENABLE_LEGACY_WEBKIT_BLOB_BUILDER", default => (isGtk() || isChromium() || isBlackBerry()), value => \$legacyWebKitBlobBuilderSupport },
-
-    { option => "link-prefetch", desc => "Toggle pre fetching support",
-      define => "ENABLE_LINK_PREFETCH", default => 0, value => \$linkPrefetchSupport },
-
-    { option => "link-prerender", desc => "Toggle pre rendering support",
-      define => "ENABLE_LINK_PRERENDER", default => 0, value => \$linkPrerenderSupport },
-
-    { option => "mathml", desc => "Toggle MathML support",
-      define => "ENABLE_MATHML", default => 1, value => \$mathmlSupport },
-
-    { option => "media-source", desc => "Toggle Media Source support",
-      define => "ENABLE_MEDIA_SOURCE", default => 0, value => \$mediaSourceSupport },
-
-    { option => "media-statistics", desc => "Toggle Media Statistics support",
-      define => "ENABLE_MEDIA_STATISTICS", default => 0, value => \$mediaStatisticsSupport },
-
-    { option => "media-stream", desc => "Toggle Media Stream API support (implies Blob support, currently Chromium and GTK only)",
-      define => "ENABLE_MEDIA_STREAM", default => (isChromium() || isGtk()), value => \$mediaStreamSupport },
-
-    { option => "meter-tag", desc => "Meter Tag support",
-      define => "ENABLE_METER_TAG", default => !isAppleWinWebKit(), value => \$meterTagSupport },
-
-    { option => "mhtml", desc => "Toggle MHTML support",
-      define => "ENABLE_MHTML", default => 0, value => \$mhtmlSupport },
-
-    { option => "microdata", desc => "Toggle Microdata support",
-      define => "ENABLE_MICRODATA", default => 0, value => \$microdataSupport },
-
-    { option => "mutation-observers", desc => "Toggle DOM mutation observer support",
-      define => "ENABLE_MUTATION_OBSERVERS", default => 1, value => \$mutationObserversSupport },
-
-    { option => "netscape-plugin", desc => "Netscape Plugin support",
-      define => "ENABLE_NETSCAPE_PLUGIN_API", default => !isEfl(), value => \$netscapePluginSupport },
-
-    { option => "network-info", desc => "Network Information API support",
-      define => "ENABLE_NETWORK_INFO", default => isEfl(), value => \$networkInfoSupport },
-
-    { option => "notifications", desc => "Toggle Desktop Notifications Support",
-      define => "ENABLE_NOTIFICATIONS", default => isBlackBerry(), value => \$notificationsSupport },
-
-    { option => "orientation-events", desc => "Toggle Orientation Events support",
-      define => "ENABLE_ORIENTATION_EVENTS", default => isBlackBerry(), value => \$orientationEventsSupport },
-
-    { option => "page-visibility-api", desc => "Page Visibility API support",
-      define => "ENABLE_PAGE_VISIBILITY_API", default => (isBlackBerry() || isEfl()), value => \$pageVisibilityApiSupport },
-
-    { option => "progress-tag", desc => "Progress Tag support",
-      define => "ENABLE_PROGRESS_TAG", default => 1, value => \$progressTagSupport },
-
-    { option => "quota", desc => "Toggle Quota support",
-      define => "ENABLE_QUOTA", default => 0, value => \$quotaSupport },
-
-    { option => "register-protocol-handler", desc => "Register Protocol Handler support",
-      define => "ENABLE_REGISTER_PROTOCOL_HANDLER", default => 0, value => \$registerProtocolHandlerSupport },
-
-    { option => "system-malloc", desc => "Toggle system allocator instead of TCmalloc",
-      define => "USE_SYSTEM_MALLOC", default => isWinCE(), value => \$systemMallocSupport },
-
-    { option => "shadow-dom", desc => "Toggle Shadow DOM support",
-      define => "ENABLE_SHADOW_DOM", default => isGtk(), value => \$shadowDomSupport },
-
-    { option => "shared-workers", desc => "Toggle SharedWorkers support",
-      define => "ENABLE_SHARED_WORKERS", default => (isAppleWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$sharedWorkersSupport },
-
-    { option => "style-scoped", desc => "Toggle <style scoped> support",
-      define => "ENABLE_STYLE_SCOPED", default => 0, value => \$styleScopedSupport },
-
-    { option => "svg", desc => "Toggle SVG support",
-      define => "ENABLE_SVG", default => 1, value => \$svgSupport },
-
-    { option => "svg-dom-objc-bindings", desc => "Toggle SVG DOM Objective-C bindings support (implies SVG support)",
-      define => "ENABLE_SVG_DOM_OBJC_BINDINGS", default => isAppleMacWebKit(), value => \$svgDOMObjCBindingsSupport },
-
-    { option => "svg-fonts", desc => "Toggle SVG fonts support (imples SVG support)",
-      define => "ENABLE_SVG_FONTS", default => 1, value => \$svgFontsSupport },
-
-    { option => "tiled-backing-store", desc => "Toggle Tiled Backing Store support",
-      define => "WTF_USE_TILED_BACKING_STORE", default => isQt(), value => \$tiledBackingStoreSupport },
-
-    { option => "touch-events", desc => "Toggle Touch Events support",
-      define => "ENABLE_TOUCH_EVENTS", default => (isQt() || isBlackBerry()), value => \$touchEventsSupport },
-
-    { option => "touch-icon-loading", desc => "Toggle Touch Icon Loading Support",
-      define => "ENABLE_TOUCH_ICON_LOADING", default => 0, value => \$touchIconLoadingSupport },
-
-    { option => "vibration", desc => "Toggle Vibration API support",
-      define => "ENABLE_VIBRATION", default => (isEfl() || isBlackBerry()), value => \$vibrationSupport },
-
-    { option => "video", desc => "Toggle Video support",
-      define => "ENABLE_VIDEO", default => (isAppleWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$videoSupport },
-
-    { option => "video-track", desc => "Toggle Video Track support",
-      define => "ENABLE_VIDEO_TRACK", default => (isAppleWebKit() || isGtk() || isEfl()), value => \$videoTrackSupport },
-
-    { option => "web-audio", desc => "Toggle Web Audio support",
-      define => "ENABLE_WEB_AUDIO", default => 0, value=> \$webAudioSupport },
-
-    { option => "web-sockets", desc => "Toggle Web Sockets support",
-      define => "ENABLE_WEB_SOCKETS", default => 1, value=> \$webSocketsSupport },
-
-    { option => "web-timing", desc => "Toggle Web Timing support",
-      define => "ENABLE_WEB_TIMING", default => (isBlackBerry() || isGtk() || isEfl()), value=> \$webTimingSupport },
-
-    { option => "workers", desc => "Toggle Web Workers support",
-      define => "ENABLE_WORKERS", default => (isAppleWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$workersSupport },
-
-    { option => "xslt", desc => "Toggle XSLT support",
-      define => "ENABLE_XSLT", default => 1, value => \$xsltSupport },
-);
-
 # Update defaults from Qt's project file
 if (isQt()) {
     # Take a sneek peek at the arguments, since we will need the qmake binary early

Added: trunk/Tools/Scripts/webkitperl/FeatureList.pm (0 => 116055)


--- trunk/Tools/Scripts/webkitperl/FeatureList.pm	                        (rev 0)
+++ trunk/Tools/Scripts/webkitperl/FeatureList.pm	2012-05-04 01:06:47 UTC (rev 116055)
@@ -0,0 +1,359 @@
+# 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.
+
+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 (
+    $requestAnimationFrameSupport,
+    $threeDCanvasSupport,
+    $threeDRenderingSupport,
+    $accelerated2dCanvasSupport,
+    $animationAPISupport,
+    $batterystatusAPISupport,
+    $blobSupport,
+    $channelMessagingSupport,
+    $cssFiltersSupport,
+    $cssGridLayoutSupport,
+    $cssShadersSupport,
+    $sqlDatabaseSupport,
+    $datalistSupport,
+    $dataTransferItemsSupport,
+    $detailsSupport,
+    $deviceOrientationSupport,
+    $directoryUploadSupport,
+    $downloadAttributeSupport,
+    $fileSystemSupport,
+    $filtersSupport,
+    $ftpDirSupport,
+    $fullscreenAPISupport,
+    $gamepadSupport,
+    $geolocationSupport,
+    $highDPICanvasSupport,
+    $iconDatabaseSupport,
+    $imageResizerSupport,
+    $indexedDatabaseSupport,
+    $inputTypeColorSupport,
+    $inputSpeechSupport,
+    $scriptedSpeechSupport,
+    $inputTypeDateSupport,
+    $inputTypeDatetimeSupport,
+    $inputTypeDatetimelocalSupport,
+    $inputTypeMonthSupport,
+    $inputTypeTimeSupport,
+    $inputTypeWeekSupport,
+    $_javascript_DebuggerSupport,
+    $legacyNotificationsSupport,
+    $legacyWebKitBlobBuilderSupport,
+    $linkPrefetchSupport,
+    $linkPrerenderSupport,
+    $mathmlSupport,
+    $mediaSourceSupport,
+    $mediaStatisticsSupport,
+    $mediaStreamSupport,
+    $meterTagSupport,
+    $mhtmlSupport,
+    $microdataSupport,
+    $mutationObserversSupport,
+    $netscapePluginSupport,
+    $networkInfoSupport,
+    $notificationsSupport,
+    $orientationEventsSupport,
+    $pageVisibilityApiSupport,
+    $progressTagSupport,
+    $quotaSupport,
+    $registerProtocolHandlerSupport,
+    $shadowDomSupport,
+    $sharedWorkersSupport,
+    $styleScopedSupport,
+    $svgSupport,
+    $svgDOMObjCBindingsSupport,
+    $svgFontsSupport,
+    $systemMallocSupport,
+    $tiledBackingStoreSupport,
+    $touchEventsSupport,
+    $touchIconLoadingSupport,
+    $vibrationSupport,
+    $videoSupport,
+    $videoTrackSupport,
+    $webAudioSupport,
+    $webInspectorSupport,
+    $webSocketsSupport,
+    $webTimingSupport,
+    $workersSupport,
+    $xsltSupport,
+);
+
+my @features = (
+    { option => "request-animation-frame", desc => "Toggle requestAnimationFrame support",
+      define => "ENABLE_REQUEST_ANIMATION_FRAME", default => (isAppleMacWebKit() || isGtk() || isEfl() || isBlackBerry()), value => \$requestAnimationFrameSupport },
+
+    { option => "download-attribute", desc => "Toggle download attribute support",
+      define => "ENABLE_DOWNLOAD_ATTRIBUTE", default => isBlackBerry(), value =>\$downloadAttributeSupport },
+
+    { option => "3d-canvas", desc => "Toggle 3D canvas (WebGL) support",
+      define => "ENABLE_WEBGL", default => isAppleMacWebKit(), value => \$threeDCanvasSupport },
+
+    { option => "3d-rendering", desc => "Toggle 3D rendering support",
+      define => "ENABLE_3D_RENDERING", default => (isAppleMacWebKit() || isQt()), value => \$threeDRenderingSupport },
+
+    { option => "accelerated-2d-canvas", desc => "Toggle accelerated 2D canvas support",
+      define => "ENABLE_ACCELERATED_2D_CANVAS", default => 0, value => \$accelerated2dCanvasSupport },
+
+    { option => "animation-api", desc => "Toggle animation API support",
+      define => "ENABLE_ANIMATION_API", default => isBlackBerry(), value => \$animationAPISupport },
+
+    { option => "battery-status-api", desc => "Toggle battery status API support",
+      define => "ENABLE_BATTERY_STATUS", default => (isEfl() || isBlackBerry()), value => \$batterystatusAPISupport },
+
+    { option => "blob", desc => "Toggle Blob support",
+      define => "ENABLE_BLOB", default => (isAppleMacWebKit() || isGtk() || isChromium() || isBlackBerry()), value => \$blobSupport },
+
+    { option => "channel-messaging", desc => "Toggle MessageChannel and MessagePort support",
+      define => "ENABLE_CHANNEL_MESSAGING", default => 1, value => \$channelMessagingSupport },
+
+    { option => "css-filters", desc => "Toggle CSS Filters support",
+      define => "ENABLE_CSS_FILTERS", default => isAppleWebKit(), value => \$cssFiltersSupport },
+
+    { option => "css-grid-layout", desc => "Toggle CSS Grid Layout support",
+      define => "ENABLE_CSS_GRID_LAYOUT", default => 0, value => \$cssGridLayoutSupport },
+
+    { option => "css-shaders", desc => "Toggle CSS Shaders (within CSS Filters) support",
+      define => "ENABLE_CSS_SHADERS", default => 0, value => \$cssShadersSupport },
+
+    { option => "sql-database", desc => "Toggle SQL Database Support",
+      define => "ENABLE_SQL_DATABASE", default => 1, value => \$sqlDatabaseSupport },
+
+    { option => "datalist", desc => "Toggle HTML5 datalist support",
+      define => "ENABLE_DATALIST", default => 0, value => \$datalistSupport },
+
+    { option => "data-transfer-items", desc => "Toggle HTML5 data transfer items support",
+      define => "ENABLE_DATA_TRANSFER_ITEMS", default => 0, value => \$dataTransferItemsSupport },
+
+    { option => "details", desc => "Toggle HTML5 details support",
+      define => "ENABLE_DETAILS", default => 1, value => \$detailsSupport },
+
+    { option => "device-orientation", desc => "Toggle DeviceOrientation support",
+      define => "ENABLE_DEVICE_ORIENTATION", default => isBlackBerry(), value => \$deviceOrientationSupport },
+
+    { option => "directory-upload", desc => "Toogle Directory upload support",
+      define => "ENABLE_DIRECTORY_UPLOAD", default => 0, value => \$directoryUploadSupport },
+
+    { option => "file-system", desc => "Toggle FileSystem support",
+      define => "ENABLE_FILE_SYSTEM", default => isBlackBerry(), value => \$fileSystemSupport },
+
+    { option => "filters", desc => "Toggle SVG Filters support",
+      define => "ENABLE_FILTERS", default => (isAppleWebKit() || isGtk() || isQt() || isEfl() || isBlackBerry()), value => \$filtersSupport },
+
+    { option => "ftpdir", desc => "Toggle FTP directory support",
+      define => "ENABLE_FTPDIR", default => !isWinCE(), value => \$ftpDirSupport },
+
+    { option => "fullscreen-api", desc => "Toggle Fullscreen API support",
+      define => "ENABLE_FULLSCREEN_API", default => (isAppleMacWebKit() || isGtk() || isBlackBerry()), value => \$fullscreenAPISupport },
+
+    { option => "gamepad", desc => "Toggle Gamepad support",
+      define => "ENABLE_GAMEPAD", default => 0, value => \$gamepadSupport },
+
+    { option => "geolocation", desc => "Toggle Geolocation support",
+      define => "ENABLE_GEOLOCATION", default => (isAppleWebKit() || isGtk() || isBlackBerry()), value => \$geolocationSupport },
+
+    { option => "high-dpi-canvas", desc => "Toggle high-DPI canvas backing store support",
+      define => "ENABLE_HIGH_DPI_CANVAS", default => (isAppleWebKit()), value => \$highDPICanvasSupport },
+
+    { option => "icon-database", desc => "Toggle Icon database support",
+      define => "ENABLE_ICONDATABASE", default => 1, value => \$iconDatabaseSupport },
+
+    { option => "indexed-database", desc => "Toggle Indexed Database API support",
+      define => "ENABLE_INDEXED_DATABASE", default => 0, value => \$indexedDatabaseSupport },
+
+    { option => "input-speech", desc => "Speech Input API support",
+      define => "ENABLE_INPUT_SPEECH", default => 0, value => \$inputSpeechSupport },
+
+    { option => "scripted-speech", desc => "Scripted Speech API support",
+      define => "ENABLE_SCRIPTED_SPEECH", default => 0, value => \$scriptedSpeechSupport },
+
+    { option => "input-type-color", desc => "Toggle color type <input> support",
+      define => "ENABLE_INPUT_TYPE_COLOR", default => (isBlackBerry() || isEfl()), value => \$inputTypeColorSupport },
+
+    { option => "input-type-date", desc => "Toggle date type <input> support",
+      define => "ENABLE_INPUT_TYPE_DATE", default => 0, value => \$inputTypeDateSupport },
+
+    { option => "input-type-datetime", desc => "Toggle datetime type <input> support",
+      define => "ENABLE_INPUT_TYPE_DATETIME", default => 0, value => \$inputTypeDatetimeSupport },
+
+    { option => "input-type-datetimelocal", desc => "Toggle datetime-local type <input> support",
+      define => "ENABLE_INPUT_TYPE_DATETIMELOCAL", default => 0, value => \$inputTypeDatetimelocalSupport },
+
+    { option => "input-type-month", desc => "Toggle month type <input> support",
+      define => "ENABLE_INPUT_TYPE_MONTH", default => 0, value => \$inputTypeMonthSupport },
+
+    { option => "input-type-time", desc => "Toggle time type <input> support",
+      define => "ENABLE_INPUT_TYPE_TIME", default => 0, value => \$inputTypeTimeSupport },
+
+    { option => "input-type-week", desc => "Toggle week type <input> support",
+      define => "ENABLE_INPUT_TYPE_WEEK", default => 0, value => \$inputTypeWeekSupport },
+
+    { option => "inspector", desc => "Toggle Web Inspector support",
+      define => "ENABLE_INSPECTOR", default => !isWinCE(), value => \$webInspectorSupport },
+
+    { option => "_javascript_-debugger", desc => "Toggle _javascript_ Debugger/Profiler support",
+      define => "ENABLE_JAVASCRIPT_DEBUGGER", default => 1, value => \$_javascript_DebuggerSupport },
+
+    { option => "legacy-notifications", desc => "Toggle Legacy Desktop Notifications Support",
+      define => "ENABLE_LEGACY_NOTIFICATIONS", default => isBlackBerry(), value => \$legacyNotificationsSupport },
+
+    { option => "legacy-webkit-blob-builder", desc => "Toggle Legacy WebKitBlobBuilder Support",
+      define => "ENABLE_LEGACY_WEBKIT_BLOB_BUILDER", default => (isGtk() || isChromium() || isBlackBerry()), value => \$legacyWebKitBlobBuilderSupport },
+
+    { option => "link-prefetch", desc => "Toggle pre fetching support",
+      define => "ENABLE_LINK_PREFETCH", default => 0, value => \$linkPrefetchSupport },
+
+    { option => "link-prerender", desc => "Toggle pre rendering support",
+      define => "ENABLE_LINK_PRERENDER", default => 0, value => \$linkPrerenderSupport },
+
+    { option => "mathml", desc => "Toggle MathML support",
+      define => "ENABLE_MATHML", default => 1, value => \$mathmlSupport },
+
+    { option => "media-source", desc => "Toggle Media Source support",
+      define => "ENABLE_MEDIA_SOURCE", default => 0, value => \$mediaSourceSupport },
+
+    { option => "media-statistics", desc => "Toggle Media Statistics support",
+      define => "ENABLE_MEDIA_STATISTICS", default => 0, value => \$mediaStatisticsSupport },
+
+    { option => "media-stream", desc => "Toggle Media Stream API support (implies Blob support, currently Chromium and GTK only)",
+      define => "ENABLE_MEDIA_STREAM", default => (isChromium() || isGtk()), value => \$mediaStreamSupport },
+
+    { option => "meter-tag", desc => "Meter Tag support",
+      define => "ENABLE_METER_TAG", default => !isAppleWinWebKit(), value => \$meterTagSupport },
+
+    { option => "mhtml", desc => "Toggle MHTML support",
+      define => "ENABLE_MHTML", default => 0, value => \$mhtmlSupport },
+
+    { option => "microdata", desc => "Toggle Microdata support",
+      define => "ENABLE_MICRODATA", default => 0, value => \$microdataSupport },
+
+    { option => "mutation-observers", desc => "Toggle DOM mutation observer support",
+      define => "ENABLE_MUTATION_OBSERVERS", default => 1, value => \$mutationObserversSupport },
+
+    { option => "netscape-plugin", desc => "Netscape Plugin support",
+      define => "ENABLE_NETSCAPE_PLUGIN_API", default => !isEfl(), value => \$netscapePluginSupport },
+
+    { option => "network-info", desc => "Network Information API support",
+      define => "ENABLE_NETWORK_INFO", default => isEfl(), value => \$networkInfoSupport },
+
+    { option => "notifications", desc => "Toggle Desktop Notifications Support",
+      define => "ENABLE_NOTIFICATIONS", default => isBlackBerry(), value => \$notificationsSupport },
+
+    { option => "orientation-events", desc => "Toggle Orientation Events support",
+      define => "ENABLE_ORIENTATION_EVENTS", default => isBlackBerry(), value => \$orientationEventsSupport },
+
+    { option => "page-visibility-api", desc => "Page Visibility API support",
+      define => "ENABLE_PAGE_VISIBILITY_API", default => (isBlackBerry() || isEfl()), value => \$pageVisibilityApiSupport },
+
+    { option => "progress-tag", desc => "Progress Tag support",
+      define => "ENABLE_PROGRESS_TAG", default => 1, value => \$progressTagSupport },
+
+    { option => "quota", desc => "Toggle Quota support",
+      define => "ENABLE_QUOTA", default => 0, value => \$quotaSupport },
+
+    { option => "register-protocol-handler", desc => "Register Protocol Handler support",
+      define => "ENABLE_REGISTER_PROTOCOL_HANDLER", default => 0, value => \$registerProtocolHandlerSupport },
+
+    { option => "system-malloc", desc => "Toggle system allocator instead of TCmalloc",
+      define => "USE_SYSTEM_MALLOC", default => isWinCE(), value => \$systemMallocSupport },
+
+    { option => "shadow-dom", desc => "Toggle Shadow DOM support",
+      define => "ENABLE_SHADOW_DOM", default => isGtk(), value => \$shadowDomSupport },
+
+    { option => "shared-workers", desc => "Toggle SharedWorkers support",
+      define => "ENABLE_SHARED_WORKERS", default => (isAppleWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$sharedWorkersSupport },
+
+    { option => "style-scoped", desc => "Toggle <style scoped> support",
+      define => "ENABLE_STYLE_SCOPED", default => 0, value => \$styleScopedSupport },
+
+    { option => "svg", desc => "Toggle SVG support",
+      define => "ENABLE_SVG", default => 1, value => \$svgSupport },
+
+    { option => "svg-dom-objc-bindings", desc => "Toggle SVG DOM Objective-C bindings support (implies SVG support)",
+      define => "ENABLE_SVG_DOM_OBJC_BINDINGS", default => isAppleMacWebKit(), value => \$svgDOMObjCBindingsSupport },
+
+    { option => "svg-fonts", desc => "Toggle SVG fonts support (imples SVG support)",
+      define => "ENABLE_SVG_FONTS", default => 1, value => \$svgFontsSupport },
+
+    { option => "tiled-backing-store", desc => "Toggle Tiled Backing Store support",
+      define => "WTF_USE_TILED_BACKING_STORE", default => isQt(), value => \$tiledBackingStoreSupport },
+
+    { option => "touch-events", desc => "Toggle Touch Events support",
+      define => "ENABLE_TOUCH_EVENTS", default => (isQt() || isBlackBerry()), value => \$touchEventsSupport },
+
+    { option => "touch-icon-loading", desc => "Toggle Touch Icon Loading Support",
+      define => "ENABLE_TOUCH_ICON_LOADING", default => 0, value => \$touchIconLoadingSupport },
+
+    { option => "vibration", desc => "Toggle Vibration API support",
+      define => "ENABLE_VIBRATION", default => (isEfl() || isBlackBerry()), value => \$vibrationSupport },
+
+    { option => "video", desc => "Toggle Video support",
+      define => "ENABLE_VIDEO", default => (isAppleWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$videoSupport },
+
+    { option => "video-track", desc => "Toggle Video Track support",
+      define => "ENABLE_VIDEO_TRACK", default => (isAppleWebKit() || isGtk() || isEfl()), value => \$videoTrackSupport },
+
+    { option => "web-audio", desc => "Toggle Web Audio support",
+      define => "ENABLE_WEB_AUDIO", default => 0, value=> \$webAudioSupport },
+
+    { option => "web-sockets", desc => "Toggle Web Sockets support",
+      define => "ENABLE_WEB_SOCKETS", default => 1, value=> \$webSocketsSupport },
+
+    { option => "web-timing", desc => "Toggle Web Timing support",
+      define => "ENABLE_WEB_TIMING", default => (isBlackBerry() || isGtk() || isEfl()), value=> \$webTimingSupport },
+
+    { option => "workers", desc => "Toggle Web Workers support",
+      define => "ENABLE_WORKERS", default => (isAppleWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$workersSupport },
+
+    { option => "xslt", desc => "Toggle XSLT support",
+      define => "ENABLE_XSLT", default => 1, value => \$xsltSupport },
+);
+
+sub getFeatureOptionList()
+{
+    return @features;
+}
+
+1;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to