[EFL][Qt][WebGL] Share the common code between GraphicsSurfaceGLX and X11WindowResources.
[WebKit-https.git] / Tools / qmake / mkspecs / features / features.prf
1 # -------------------------------------------------------------------
2 # This file does basic 'configure' style checks to determine the
3 # set of enable/use/have defines and their values.
4 #
5 # See 'Tools/qmake/README' for an overview of the build system
6 # -------------------------------------------------------------------
7
8 defineTest(detectFeatures) {
9
10     # -------------- Fill in static defaults --------------
11
12     include(features.pri)
13
14     for(feature, FEATURE_DEFAULTS) {
15         enabledFeature = $$find(feature, =1$)
16         !isEmpty(enabledFeature) {
17         line ~= s/^.+include \"(.*)\"/\\1/
18             enabledFeature ~= s/=1$//
19             enabledFeature ~= s/^ENABLE_//
20             WEBKIT_CONFIG += $$lower($$enabledFeature)
21         }
22     }
23
24     WEBKIT_CONFIG += use_tiled_backing_store
25
26     # ------------- Prepare for feature detection -------------
27
28     # ---------- Dynamically detect optional features -------------
29     #
30     # Please note: static feature defaults go in features.pri
31     #
32
33     haveQtModule(quick): WEBKIT_CONFIG += have_qtquick
34     else: CONFIGURE_WARNINGS += "QtQuick module not found, QML APIs will not be built"
35
36     haveQtModule(printsupport): WEBKIT_CONFIG += have_qtprintsupport
37     haveQtModule(widgets): WEBKIT_CONFIG += have_qstyle
38     haveQtModule(testlib): WEBKIT_CONFIG += have_qttestlib
39
40     config_libxml2: WEBKIT_CONFIG += use_libxml2
41     config_libxslt: WEBKIT_CONFIG += xslt
42     config_libzlib: WEBKIT_CONFIG += use_zlib
43     config_libwebp: WEBKIT_CONFIG += use_webp
44
45     # We can't use Qt's 3rdparty sources for libjpeg and libpng outside of qtbase, but if Qt
46     # is using the system libraries, use them to take advantage of the WebCore image decoders as well.
47     contains(QT_CONFIG, system-jpeg): WEBKIT_CONFIG += use_libjpeg
48     else: CONFIGURE_WARNINGS += "JPEG library not found, QImageDecoder will decode JPEG images"
49
50     contains(QT_CONFIG, system-png): WEBKIT_CONFIG += use_libpng
51     else: CONFIGURE_WARNINGS += "PNG library not found, QImageDecoder will decode PNG images"
52
53     linux-* {
54         config_libXcomposite: WEBKIT_CONFIG += have_xcomposite
55         config_libXrender: WEBKIT_CONFIG += have_xrender
56
57         config_glx:!contains(QT_CONFIG, opengles2): WEBKIT_CONFIG += have_glx
58
59         # We need fontconfig to set up the test fonts for DumpRenderTree and WebKitTestRunner.
60         config_fontconfig: WEBKIT_CONFIG += have_fontconfig
61     }
62
63     # Nescape plugins support (NPAPI)
64     xlibAvailable() {
65         WEBKIT_CONFIG += \
66             netscape_plugin_api \
67             use_plugin_backend_xlib
68
69         # WebKit2
70         WEBKIT_CONFIG += \
71             plugin_architecture_x11 \
72             plugin_process
73
74     } else: unix|win32-*:!embedded:!wince* {
75         WEBKIT_CONFIG += netscape_plugin_api
76         # WebKit2
77         WEBKIT_CONFIG += plugin_architecture_unsupported
78     } else {
79         WEBKIT_CONFIG += plugin_architecture_unsupported
80     }
81
82     # Enable the USE(3D_GRAPHICS) flag when QtOpenGL is enabled.
83     # Disable on Windows CE for now, as ANGLE won't compile.
84     !wince*:contains(QT_CONFIG, opengl) {
85         # On Windows we require GLES2/EGL through ANGLE.
86         !win32|contains(QT_CONFIG, opengles2): WEBKIT_CONFIG += use_3d_graphics
87     }
88
89     # Temporarily disable FTPDIR on Windows CE (missing functions from time.h)
90     wince* {
91         WEBKIT_CONFIG -= ftpdir
92     }
93
94     # WebGL support - only enabled if we can use 3D graphics
95     use?(3d_graphics): WEBKIT_CONFIG += webgl
96
97     # Enable CSS shaders when CSS filters and WebGL are enabled
98     enable?(css_filters):enable?(webgl): WEBKIT_CONFIG += css_shaders
99
100     # Geolocation support if QtMobility exists
101     haveQtModule(location): WEBKIT_CONFIG += geolocation
102
103     # Orientation support
104     haveQtModule(sensors): WEBKIT_CONFIG += orientation_events device_orientation
105
106     # HTML5 Media Support
107     mac {
108         DARWIN_VERSION = $$split(QMAKE_HOST.version, ".")
109         DARWIN_MAJOR_VERSION = $$first(DARWIN_VERSION)
110         # QTKIT support requires 10.7 or newer
111         greaterThan(DARWIN_MAJOR_VERSION, 10) {
112             WEBKIT_CONFIG += video use_qtkit
113         }
114
115     } else: linux-* {
116         !contains(QT_CONFIG, no-pkg-config):packagesExist("glib-2.0 gio-2.0 \'gstreamer-0.10 >= 0.10.30\' \'gstreamer-plugins-base-0.10 >= 0.10.30\'") {
117             WEBKIT_CONFIG += video use_gstreamer
118         } else {
119             CONFIGURE_WARNINGS += "Missing GLib/Gio/GStreamer, disabling media element support"
120         }
121     } else: haveQtModule(multimediawidgets) {
122         WEBKIT_CONFIG += video use_qt_multimedia
123     }
124
125     # Try to use an system wide SQlite installation
126     if(!contains(QT_CONFIG, no-pkg-config):packagesExist("sqlite3"))|mac {
127         WEBKIT_CONFIG += have_sqlite3
128     } else {
129         SQLITE3SRCDIR = $$(SQLITE3SRCDIR)
130         isEmpty(SQLITE3SRCDIR):isEmpty(_QMAKE_SUPER_CACHE_): error("WebKit requires SQLite. Either make it available via pkg-config, set $SQLITE3SRCDIR or build WebKit under qt5.git.")
131     }
132
133     # Gamepad API Support
134     packagesExist(libudev): WEBKIT_CONFIG += gamepad
135
136     # Support for Graphics Surface
137     # GraphicsSurface requires GraphicsContext3D and hence use_3d_graphics
138     use?(3d_graphics) {
139         mac: WEBKIT_CONFIG += use_graphics_surface
140         win32:contains(QT_CONFIG, opengles2): WEBKIT_CONFIG += use_graphics_surface
141         linux-*:contains(WEBKIT_CONFIG, have_glx):contains(WEBKIT_CONFIG, have_xcomposite):contains(WEBKIT_CONFIG, have_xrender): WEBKIT_CONFIG += use_graphics_surface use_glx
142     }
143
144     # Slider Touch is sensible to use when compiling WebKit2
145     enable?(touch_events): WEBKIT_CONFIG += touch_slider
146
147
148     # Minibrowser must be able to query for QtTestSupport
149     build?(qttestsupport): WEBKIT_CONFIG += have_qttestsupport
150
151     # ---------------- Sanitize features -------------------
152
153     export(WEBKIT_CONFIG)
154     export(CONFIGURE_WARNINGS)
155 }
156
157 defineTest(santizeFeatures) {
158     # Disable SVG fonts if SVG is disabled
159     !enable?(svg): WEBKIT_CONFIG -= svg_fonts
160
161     # JavaScript debugger requires the inspector
162     !enable?(inspector): WEBKIT_CONFIG -= javascript_debugger inspector_server
163
164     # Disable animated smooth scrolling if request-animation-frame is disabled
165     !enable?(request_animation_frame): WEBKIT_CONFIG -= smooth_scrolling
166
167     # Fullscreen API relies on WebKit2
168     !build?(webkit2): WEBKIT_CONFIG -= fullscreen_api
169
170     # WK2's plugin process code requires NPAPI
171     !enable?(netscape_plugin_api): WEBKIT_CONFIG -= plugin_process
172
173     # Web Audio requires GStreamer.
174     !use?(gstreamer): WEBKIT_CONFIG -= web_audio
175
176     export(WEBKIT_CONFIG)
177 }