1# Setting up features (enabled/disabled)
2
3CONFIG(minimal) {
4    DEFINES += ENABLE_NETSCAPE_PLUGIN_API=0
5}
6
7CONFIG(production) {
8    DEFINES += ENABLE_XSLT=0
9    DEFINES += ENABLE_WEB_TIMING=0
10}
11
12meegotouch {
13    DEFINES += WTF_USE_MEEGOTOUCH=1
14}
15
16## load mobilityconfig if mobility is available
17load(mobilityconfig, true)
18
19## Define default features macros for optional components
20## (look for defs in config.h and included files!)
21# Try to locate sqlite3 source
22CONFIG(QTDIR_build) {
23    SQLITE3SRCDIR = $$QT_SOURCE_TREE/src/3rdparty/sqlite/
24} else {
25    SQLITE3SRCDIR = $$(SQLITE3SRCDIR)
26    isEmpty(SQLITE3SRCDIR) {
27        SQLITE3SRCDIR = $$[QT_INSTALL_PREFIX]/src/3rdparty/sqlite/
28    }
29}
30
31contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
32    DEFINES+=ENABLE_DATABASE=0 ENABLE_DOM_STORAGE=0 ENABLE_ICONDATABASE=0 ENABLE_WORKERS=0 ENABLE_SHARED_WORKERS=0
33}
34
35# turn off SQLITE support if we do not have sqlite3 available
36!CONFIG(QTDIR_build):win32-*:!exists( $${SQLITE3SRCDIR}/sqlite3.c ): DEFINES += ENABLE_SQLITE=0 ENABLE_DATABASE=0 ENABLE_WORKERS=0 ENABLE_SHARED_WORKERS=0 ENABLE_ICONDATABASE=0 ENABLE_OFFLINE_WEB_APPLICATIONS=0 ENABLE_DOM_STORAGE=0
37
38!contains(DEFINES, ENABLE_JAVASCRIPT_DEBUGGER=.): DEFINES += ENABLE_JAVASCRIPT_DEBUGGER=1
39!contains(DEFINES, ENABLE_DATABASE=.): DEFINES += ENABLE_DATABASE=1
40!contains(DEFINES, ENABLE_EVENTSOURCE=.): DEFINES += ENABLE_EVENTSOURCE=1
41!contains(DEFINES, ENABLE_OFFLINE_WEB_APPLICATIONS=.): DEFINES += ENABLE_OFFLINE_WEB_APPLICATIONS=1
42!contains(DEFINES, ENABLE_DOM_STORAGE=.): DEFINES += ENABLE_DOM_STORAGE=1
43!contains(DEFINES, ENABLE_ICONDATABASE=.): DEFINES += ENABLE_ICONDATABASE=1
44!contains(DEFINES, ENABLE_CHANNEL_MESSAGING=.): DEFINES += ENABLE_CHANNEL_MESSAGING=1
45!contains(DEFINES, ENABLE_DIRECTORY_UPLOAD=.): DEFINES += ENABLE_DIRECTORY_UPLOAD=0
46!contains(DEFINES, ENABLE_FILE_SYSTEM=.): DEFINES += ENABLE_FILE_SYSTEM=0
47!contains(DEFINES, ENABLE_QUOTA=.): DEFINES += ENABLE_QUOTA=0
48!contains(DEFINES, ENABLE_ZLIB=.): DEFINES += ENABLE_ZLIB=1
49
50# turn on SQLITE support if any of the dependent features are turned on
51!contains(DEFINES, ENABLE_SQLITE=.) {
52  contains(DEFINES, ENABLE_DATABASE=1)|contains(DEFINES, ENABLE_ICONDATABASE=1)|contains(DEFINES, ENABLE_DOM_STORAGE=1)|contains(DEFINES, ENABLE_OFFLINE_WEB_APPLICATIONS=1) {
53    DEFINES += ENABLE_SQLITE=1
54  } else {
55    DEFINES += ENABLE_SQLITE=0
56  }
57}
58
59!contains(DEFINES, ENABLE_DASHBOARD_SUPPORT=.): DEFINES += ENABLE_DASHBOARD_SUPPORT=0
60!contains(DEFINES, ENABLE_FILTERS=.): DEFINES += ENABLE_FILTERS=1
61!contains(DEFINES, ENABLE_XPATH=.): DEFINES += ENABLE_XPATH=1
62#!contains(DEFINES, ENABLE_XBL=.): DEFINES += ENABLE_XBL=1
63!contains(DEFINES, ENABLE_WCSS=.): DEFINES += ENABLE_WCSS=0
64!contains(DEFINES, ENABLE_SHARED_WORKERS=.): DEFINES += ENABLE_SHARED_WORKERS=1
65!contains(DEFINES, ENABLE_WORKERS=.): DEFINES += ENABLE_WORKERS=1
66!contains(DEFINES, ENABLE_XHTMLMP=.): DEFINES += ENABLE_XHTMLMP=0
67!contains(DEFINES, ENABLE_DETAILS=.): DEFINES += ENABLE_DETAILS=1
68!contains(DEFINES, ENABLE_METER_TAG=.): DEFINES += ENABLE_METER_TAG=1
69!contains(DEFINES, ENABLE_PROGRESS_TAG=.): DEFINES += ENABLE_PROGRESS_TAG=1
70!contains(DEFINES, ENABLE_BLOB=.): DEFINES += ENABLE_BLOB=1
71!contains(DEFINES, ENABLE_NOTIFICATIONS=.): DEFINES += ENABLE_NOTIFICATIONS=1
72!contains(DEFINES, ENABLE_INPUT_SPEECH=.): DEFINES += ENABLE_INPUT_SPEECH=0
73!contains(DEFINES, ENABLE_INSPECTOR=.): DEFINES += ENABLE_INSPECTOR=1
74!contains(DEFINES, ENABLE_3D_RENDERING=.): DEFINES += ENABLE_3D_RENDERING=1
75!contains(DEFINES, ENABLE_WEB_AUDIO=.): DEFINES += ENABLE_WEB_AUDIO=0
76!contains(DEFINES, ENABLE_WEBGL=.): DEFINES += ENABLE_WEBGL=0
77!contains(DEFINES, ENABLE_MEDIA_STATISTICS=.): DEFINES += ENABLE_MEDIA_STATISTICS=0
78!contains(DEFINES, ENABLE_VIDEO_TRACK=.): DEFINES += ENABLE_VIDEO_TRACK=0
79!contains(DEFINES, ENABLE_TOUCH_ICON_LOADING=.): DEFINES += ENABLE_TOUCH_ICON_LOADING=0
80!contains(DEFINES, ENABLE_ANIMATION_API=.): DEFINES += ENABLE_ANIMATION_API=0
81
82# SVG support
83!contains(DEFINES, ENABLE_SVG=0) {
84    !contains(DEFINES, ENABLE_SVG=.): DEFINES += ENABLE_SVG=1
85    !contains(DEFINES, ENABLE_SVG_FONTS=.): DEFINES += ENABLE_SVG_FONTS=1
86    !contains(DEFINES, ENABLE_SVG_FOREIGN_OBJECT=.): DEFINES += ENABLE_SVG_FOREIGN_OBJECT=1
87    !contains(DEFINES, ENABLE_SVG_ANIMATION=.): DEFINES += ENABLE_SVG_ANIMATION=1
88    !contains(DEFINES, ENABLE_SVG_AS_IMAGE=.): DEFINES += ENABLE_SVG_AS_IMAGE=1
89    !contains(DEFINES, ENABLE_SVG_USE=.): DEFINES += ENABLE_SVG_USE=1
90} else {
91    DEFINES += ENABLE_SVG_FONTS=0 ENABLE_SVG_FOREIGN_OBJECT=0 ENABLE_SVG_ANIMATION=0 ENABLE_SVG_AS_IMAGE=0 ENABLE_SVG_USE=0
92}
93
94# HTML5 datalist support
95!contains(DEFINES, ENABLE_DATALIST=.): DEFINES += ENABLE_DATALIST=1
96
97# Tiled Backing Store support
98!contains(DEFINES, ENABLE_TILED_BACKING_STORE=.): DEFINES += ENABLE_TILED_BACKING_STORE=1
99
100# Nescape plugins support (NPAPI)
101!contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=.) {
102    unix|win32-*:!embedded:!wince*: {
103        DEFINES += ENABLE_NETSCAPE_PLUGIN_API=1
104    } else {
105        DEFINES += ENABLE_NETSCAPE_PLUGIN_API=0
106    }
107}
108
109# Web Socket support.
110!contains(DEFINES, ENABLE_WEB_SOCKETS=.): DEFINES += ENABLE_WEB_SOCKETS=1
111
112# Web Timing support.
113!contains(DEFINES, ENABLE_WEB_TIMING=.): DEFINES += ENABLE_WEB_TIMING=1
114
115# XSLT support with QtXmlPatterns
116!contains(DEFINES, ENABLE_XSLT=.) {
117    contains(QT_CONFIG, xmlpatterns):DEFINES += ENABLE_XSLT=1
118    else:DEFINES += ENABLE_XSLT=0
119}
120
121# geolocation support if QtMobility exists
122!CONFIG(QTDIR_build):!contains(DEFINES, ENABLE_GEOLOCATION=.) {
123    contains(MOBILITY_CONFIG, location) {
124       DEFINES += ENABLE_GEOLOCATION=1
125       DEFINES += ENABLE_CLIENT_BASED_GEOLOCATION=1
126    }
127}
128
129# orientation support if QtMobility exists
130contains(MOBILITY_CONFIG, sensors) {
131   !contains(DEFINES, ENABLE_ORIENTATION_EVENTS=.): DEFINES += ENABLE_ORIENTATION_EVENTS=1
132   !contains(DEFINES, ENABLE_DEVICE_ORIENTATION=.): DEFINES += ENABLE_DEVICE_ORIENTATION=1
133   CONFIG *= mobility
134   MOBILITY *= sensors
135}
136
137# systeminfo support if QtMobility systeminfo module exists, but only for symbian, maemo and meego
138symbian|maemo5|maemo6 {
139    !CONFIG(QTDIR_build):!contains(DEFINES, WTF_USE_QT_MOBILITY_SYSTEMINFO=.) {
140        contains(MOBILITY_CONFIG, systeminfo) {
141            DEFINES += WTF_USE_QT_MOBILITY_SYSTEMINFO=1
142        }
143    }
144}
145
146# Bearer management is part of Qt 4.7
147# for older version, check for mobility with bearer
148!contains(DEFINES, WTF_USE_QT_BEARER=.) {
149     !lessThan(QT_MINOR_VERSION, 7) {
150        DEFINES += WTF_USE_QT_BEARER=1
151     } else {
152        contains(MOBILITY_CONFIG, bearer) {
153            DEFINES += WTF_USE_QT_BEARER=1
154        }
155    }
156}
157
158!contains(DEFINES, ENABLE_TOUCH_EVENTS=.): DEFINES += ENABLE_TOUCH_EVENTS=1
159
160# HTML5 Media Support
161# We require QtMultimedia
162!contains(DEFINES, ENABLE_VIDEO=.) {
163    DEFINES -= ENABLE_VIDEO=1
164    DEFINES += ENABLE_VIDEO=0
165
166    linux-*:!contains(DEFINES, USE_QTMULTIMEDIA=1) {
167        !contains(QT_CONFIG, no-pkg-config):system(pkg-config --exists glib-2.0 gio-2.0 gstreamer-0.10): {
168            DEFINES -= ENABLE_VIDEO=0
169            DEFINES += ENABLE_VIDEO=1
170            DEFINES += WTF_USE_GSTREAMER=1
171            DEFINES -= WTF_USE_GSTREAMER=0
172        } else {
173            message("Disabling video due the lack of GLib/Gio/GStreamer.")
174            DEFINES -= ENABLE_VIDEO=1
175            DEFINES += ENABLE_VIDEO=0
176        }
177    } else: contains(MOBILITY_CONFIG, multimedia) {
178        DEFINES -= ENABLE_VIDEO=0
179        DEFINES += ENABLE_VIDEO=1
180        DEFINES -= WTF_USE_QT_MULTIMEDIA=0
181        DEFINES += WTF_USE_QT_MULTIMEDIA=1
182    }
183}
184
185# Used to compute defaults for the build-webkit script
186CONFIG(compute_defaults) {
187    message($$DEFINES)
188    error("Done computing defaults")
189}
190
191contains(DEFINES, ENABLE_WCSS=1) {
192    contains(DEFINES, ENABLE_XHTMLMP=0) {
193        DEFINES -= ENABLE_XHTMLMP=0
194        DEFINES += ENABLE_XHTMLMP=1
195    }
196}
197
198## Forward enabled feature macros to JavaScript enabled features macros
199FEATURE_DEFINES_JAVASCRIPT = LANGUAGE_JAVASCRIPT=1
200v8: FEATURE_DEFINES_JAVASCRIPT += V8_BINDING=1
201contains(DEFINES, ENABLE_CHANNEL_MESSAGING=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_CHANNEL_MESSAGING=1
202contains(DEFINES, ENABLE_ORIENTATION_EVENTS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_ORIENTATION_EVENTS=1
203contains(DEFINES, ENABLE_EVENTSOURCE=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_EVENTSOURCE=1
204contains(DEFINES, ENABLE_DATABASE=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_DATABASE=1
205contains(DEFINES, ENABLE_DATALIST=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_DATALIST=1
206contains(DEFINES, ENABLE_DOM_STORAGE=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_DOM_STORAGE=1
207contains(DEFINES, ENABLE_SHARED_SCRIPT=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_SHARED_SCRIPT=1
208contains(DEFINES, ENABLE_WORKERS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_WORKERS=1
209contains(DEFINES, ENABLE_SHARED_WORKERS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_SHARED_WORKERS=1
210contains(DEFINES, ENABLE_VIDEO=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_VIDEO=1
211contains(DEFINES, ENABLE_XPATH=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_XPATH=1
212contains(DEFINES, ENABLE_XSLT=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_XSLT=1
213contains(DEFINES, ENABLE_XBL=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_XBL=1
214contains(DEFINES, ENABLE_FILTERS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_FILTERS=1
215contains(DEFINES, ENABLE_WCSS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_WCSS=1
216contains(DEFINES, ENABLE_XHTMLMP=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_XHTMLMP=1
217contains(DEFINES, ENABLE_SVG=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_SVG=1
218contains(DEFINES, ENABLE_SVG_ANIMATION=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_SVG_ANIMATION=1
219contains(DEFINES, ENABLE_SVG_FONTS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_SVG_FONTS=1
220contains(DEFINES, ENABLE_SVG_FOREIGN_OBJECT=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_SVG_FOREIGN_OBJECT=1
221contains(DEFINES, ENABLE_JAVASCRIPT_DEBUGGER=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_JAVASCRIPT_DEBUGGER=1
222contains(DEFINES, ENABLE_OFFLINE_WEB_APPLICATIONS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_OFFLINE_WEB_APPLICATIONS=1
223contains(DEFINES, ENABLE_WEB_SOCKETS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_WEB_SOCKETS=1
224contains(DEFINES, ENABLE_WEB_TIMING=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_WEB_TIMING=1
225contains(DEFINES, ENABLE_TOUCH_EVENTS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_TOUCH_EVENTS=1
226contains(DEFINES, ENABLE_TILED_BACKING_STORE=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_TILED_BACKING_STORE=1
227contains(DEFINES, ENABLE_NOTIFICATIONS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_NOTIFICATIONS=1
228contains(DEFINES, ENABLE_DETAILS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_DETAILS=1
229contains(DEFINES, ENABLE_METER_TAG=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_METER_TAG=1
230contains(DEFINES, ENABLE_PROGRESS_TAG=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_PROGRESS_TAG=1
231contains(DEFINES, ENABLE_GEOLOCATION=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_GEOLOCATION=1
232contains(DEFINES, ENABLE_BLOB=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_BLOB=1
233contains(DEFINES, ENABLE_MEDIA_STATISTICS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_MEDIA_STATISTICS=1
234contains(DEFINES, ENABLE_VIDEO_TRACK=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_VIDEO_TRACK=1
235contains(DEFINES, ENABLE_DATA_TRANSFER_ITEMS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_DATA_TRANSFER_ITEMS=1
236