1# -------------------------------------------------------------------
2# This file contains shared rules used both when building WebCore
3# itself, and by targets that use WebCore.
4#
5# See 'Tools/qmake/README' for an overview of the build system
6# -------------------------------------------------------------------
7
8SOURCE_DIR = $${ROOT_WEBKIT_DIR}/Source/WebCore
9
10QT *= network sql core-private gui-private
11
12WEBCORE_GENERATED_SOURCES_DIR = $${ROOT_BUILD_DIR}/Source/WebCore/$${GENERATED_SOURCES_DESTDIR}
13
14INCLUDEPATH += \
15    $$SOURCE_DIR \
16    $$SOURCE_DIR/Modules/filesystem \
17    $$SOURCE_DIR/Modules/geolocation \
18    $$SOURCE_DIR/Modules/indexeddb \
19    $$SOURCE_DIR/Modules/navigatorcontentutils \
20    $$SOURCE_DIR/Modules/notifications \
21    $$SOURCE_DIR/Modules/proximity \
22    $$SOURCE_DIR/Modules/quota \
23    $$SOURCE_DIR/Modules/webaudio \
24    $$SOURCE_DIR/Modules/webdatabase \
25    $$SOURCE_DIR/Modules/websockets \
26    $$SOURCE_DIR/accessibility \
27    $$SOURCE_DIR/bindings \
28    $$SOURCE_DIR/bindings/generic \
29    $$SOURCE_DIR/bridge \
30    $$SOURCE_DIR/bridge/qt \
31    $$SOURCE_DIR/css \
32    $$SOURCE_DIR/dom \
33    $$SOURCE_DIR/dom/default \
34    $$SOURCE_DIR/editing \
35    $$SOURCE_DIR/fileapi \
36    $$SOURCE_DIR/history \
37    $$SOURCE_DIR/html \
38    $$SOURCE_DIR/html/canvas \
39    $$SOURCE_DIR/html/forms \
40    $$SOURCE_DIR/html/parser \
41    $$SOURCE_DIR/html/shadow \
42    $$SOURCE_DIR/html/track \
43    $$SOURCE_DIR/inspector \
44    $$SOURCE_DIR/loader \
45    $$SOURCE_DIR/loader/appcache \
46    $$SOURCE_DIR/loader/archive \
47    $$SOURCE_DIR/loader/cache \
48    $$SOURCE_DIR/loader/icon \
49    $$SOURCE_DIR/mathml \
50    $$SOURCE_DIR/page \
51    $$SOURCE_DIR/page/animation \
52    $$SOURCE_DIR/page/qt \
53    $$SOURCE_DIR/page/scrolling \
54    $$SOURCE_DIR/page/scrolling/coordinatedgraphics \
55    $$SOURCE_DIR/platform \
56    $$SOURCE_DIR/platform/animation \
57    $$SOURCE_DIR/platform/audio \
58    $$SOURCE_DIR/platform/graphics \
59    $$SOURCE_DIR/platform/graphics/cpu/arm \
60    $$SOURCE_DIR/platform/graphics/cpu/arm/filters \
61    $$SOURCE_DIR/platform/graphics/filters \
62    $$SOURCE_DIR/platform/graphics/filters/texmap \
63    $$SOURCE_DIR/platform/graphics/opengl \
64    $$SOURCE_DIR/platform/graphics/opentype \
65    $$SOURCE_DIR/platform/graphics/qt \
66    $$SOURCE_DIR/platform/graphics/surfaces \
67    $$SOURCE_DIR/platform/graphics/texmap \
68    $$SOURCE_DIR/platform/graphics/texmap/coordinated \
69    $$SOURCE_DIR/platform/graphics/transforms \
70    $$SOURCE_DIR/platform/image-decoders \
71    $$SOURCE_DIR/platform/image-decoders/bmp \
72    $$SOURCE_DIR/platform/image-decoders/ico \
73    $$SOURCE_DIR/platform/image-decoders/gif \
74    $$SOURCE_DIR/platform/image-decoders/jpeg \
75    $$SOURCE_DIR/platform/image-decoders/png \
76    $$SOURCE_DIR/platform/image-decoders/webp \
77    $$SOURCE_DIR/platform/leveldb \
78    $$SOURCE_DIR/platform/mock \
79    $$SOURCE_DIR/platform/network \
80    $$SOURCE_DIR/platform/network/qt \
81    $$SOURCE_DIR/platform/qt \
82    $$SOURCE_DIR/platform/sql \
83    $$SOURCE_DIR/platform/text \
84    $$SOURCE_DIR/platform/text/transcoder \
85    $$SOURCE_DIR/plugins \
86    $$SOURCE_DIR/rendering \
87    $$SOURCE_DIR/rendering/mathml \
88    $$SOURCE_DIR/rendering/shapes \
89    $$SOURCE_DIR/rendering/style \
90    $$SOURCE_DIR/rendering/svg \
91    $$SOURCE_DIR/storage \
92    $$SOURCE_DIR/svg \
93    $$SOURCE_DIR/svg/animation \
94    $$SOURCE_DIR/svg/graphics \
95    $$SOURCE_DIR/svg/graphics/filters \
96    $$SOURCE_DIR/svg/properties \
97    $$SOURCE_DIR/testing \
98    $$SOURCE_DIR/websockets \
99    $$SOURCE_DIR/workers \
100    $$SOURCE_DIR/xml \
101    $$SOURCE_DIR/xml/parser \
102    $$SOURCE_DIR/../ThirdParty
103
104INCLUDEPATH += \
105    $$SOURCE_DIR/bridge/jsc \
106    $$SOURCE_DIR/bindings/js \
107    $$SOURCE_DIR/bridge/c \
108    $$SOURCE_DIR/testing/js
109
110INCLUDEPATH += $$WEBCORE_GENERATED_SOURCES_DIR
111
112enable?(XSLT) {
113    use?(LIBXML2) {
114        mac {
115            INCLUDEPATH += /usr/include/libxslt /usr/include/libxml2
116            LIBS += -lxml2 -lxslt
117        } else {
118            PKGCONFIG += libxslt libxml-2.0
119        }
120    } else {
121        QT *= xmlpatterns
122    }
123} else:!mac:use?(LIBXML2) {
124    PKGCONFIG += libxml-2.0
125}
126
127use?(ZLIB) {
128    LIBS += -lz
129}
130
131enable?(NETSCAPE_PLUGIN_API) {
132    unix {
133        mac {
134            INCLUDEPATH += platform/mac
135            # Note: XP_MACOSX is defined in npapi.h
136        } else {
137            xlibAvailable() {
138                CONFIG *= x11
139                LIBS += -lXrender
140                DEFINES += MOZ_X11
141            }
142            DEFINES += XP_UNIX
143            DEFINES += ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE=1
144        }
145    }
146    win32-* {
147        LIBS += \
148            -ladvapi32 \
149            -lgdi32 \
150            -lshell32 \
151            -lshlwapi \
152            -luser32 \
153            -lversion
154    }
155}
156
157have?(qtsensors):if(enable?(ORIENTATION_EVENTS)|enable?(DEVICE_ORIENTATION)): QT += sensors
158
159use?(QT_MOBILITY_SYSTEMINFO) {
160     CONFIG *= mobility
161     MOBILITY *= systeminfo
162}
163
164enable?(GAMEPAD) {
165    INCLUDEPATH += \
166        $$SOURCE_DIR/platform/linux \
167        $$SOURCE_DIR/Modules/gamepad
168    PKGCONFIG += libudev
169}
170
171use?(GSTREAMER) {
172    DEFINES += WTF_USE_GLIB=1
173    use?(GSTREAMER010) {
174        PKGCONFIG += glib-2.0 gio-2.0 gstreamer-0.10 gstreamer-app-0.10 gstreamer-base-0.10 gstreamer-interfaces-0.10 gstreamer-pbutils-0.10 gstreamer-plugins-base-0.10 gstreamer-video-0.10
175    } else {
176        DEFINES += GST_API_VERSION=1.0
177        DEFINES += GST_API_VERSION_1
178        PKGCONFIG += glib-2.0 gio-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-base-1.0 gstreamer-pbutils-1.0 gstreamer-plugins-base-1.0 gstreamer-video-1.0 gstreamer-audio-1.0
179    }
180}
181
182enable?(VIDEO) {
183    use?(GSTREAMER) {
184        INCLUDEPATH += $$SOURCE_DIR/platform/graphics/gstreamer
185    } else:use?(QT_MULTIMEDIA) {
186        QT *= multimedia
187    }
188}
189
190enable?(WEB_AUDIO) {
191    use?(GSTREAMER) {
192        DEFINES += WTF_USE_WEBAUDIO_GSTREAMER=1
193        INCLUDEPATH += $$SOURCE_DIR/platform/audio/gstreamer
194        use?(GSTREAMER010) {
195            PKGCONFIG += gstreamer-audio-0.10 gstreamer-fft-0.10
196        } else {
197            PKGCONFIG += gstreamer-audio-1.0 gstreamer-fft-1.0
198        }
199    }
200}
201
202use?(3D_GRAPHICS) {
203    win32: {
204        win32-g++: {
205            # Make sure OpenGL libs are after the webcore lib so MinGW can resolve symbols
206            contains(QT_CONFIG, opengles2) {
207                CONFIG(debug, debug|release):contains(QT_CONFIG, angle) {
208                    LIBS += $$QMAKE_LIBS_OPENGL_ES2_DEBUG
209                } else {
210                    LIBS += $$QMAKE_LIBS_OPENGL_ES2
211                }
212            } else {
213                LIBS += $$QMAKE_LIBS_OPENGL
214            }
215        }
216    } else {
217        contains(QT_CONFIG, opengles2): CONFIG += egl
218    }
219}
220
221use?(GRAPHICS_SURFACE) {
222    mac: LIBS += -framework IOSurface -framework CoreFoundation
223    linux-*: {
224        LIBS += -lXcomposite -lXrender
225        CONFIG *= x11
226    }
227}
228
229have?(sqlite3) {
230    mac {
231        LIBS += -lsqlite3
232    } else {
233        PKGCONFIG += sqlite3
234    }
235} else {
236    SQLITE3SRCDIR = $$(SQLITE3SRCDIR)
237    isEmpty(SQLITE3SRCDIR): SQLITE3SRCDIR = ../../../qtbase/src/3rdparty/sqlite/
238    exists($${SQLITE3SRCDIR}/sqlite3.c) {
239        INCLUDEPATH += $${SQLITE3SRCDIR}
240        DEFINES += SQLITE_CORE SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_COMPLETE
241    } else {
242        INCLUDEPATH += $${SQLITE3SRCDIR}
243        LIBS += -lsqlite3
244    }
245}
246
247use?(libjpeg): LIBS += -ljpeg
248use?(libpng): LIBS += -lpng
249use?(webp): LIBS += -lwebp
250
251enable?(opencl) {
252    LIBS += -lOpenCL
253    INCLUDEPATH += $$SOURCE_DIR/platform/graphics/gpu/opencl
254}
255
256mac {
257    LIBS += -framework Carbon -framework AppKit -framework IOKit
258}
259
260win32 {
261    INCLUDEPATH += $$SOURCE_DIR/platform/win
262
263    wince* {
264        # see https://bugs.webkit.org/show_bug.cgi?id=43442
265        DEFINES += HAVE_LOCALTIME_S=0
266
267        LIBS += -lmmtimer
268        LIBS += -lole32
269    }
270    else {
271        LIBS += -lgdi32
272        LIBS += -lole32
273        LIBS += -luser32
274    }
275}
276
277# Remove whole program optimizations due to miscompilations
278win32-msvc2005|win32-msvc2008|win32-msvc2010|wince*:{
279    QMAKE_CFLAGS_LTCG -= -GL
280    QMAKE_CXXFLAGS_LTCG -= -GL
281
282    # Disable incremental linking for windows 32bit OS debug build as WebKit is so big
283    # that linker failes to link incrementally in debug mode.
284    ARCH = $$(PROCESSOR_ARCHITECTURE)
285    WOW64ARCH = $$(PROCESSOR_ARCHITEW6432)
286    equals(ARCH, x86):{
287        isEmpty(WOW64ARCH): QMAKE_LFLAGS_DEBUG += /INCREMENTAL:NO
288    }
289}
290
291mac {
292    LIBS_PRIVATE += -framework Carbon -framework AppKit
293}
294
295# -ffunction-section conflicts with -pg option
296!contains(CONFIG, gprof) {
297    unix:!mac:*-g++*:QMAKE_CXXFLAGS += -ffunction-sections
298}
299unix:!mac:*-g++*:QMAKE_CXXFLAGS += -fdata-sections
300unix:!mac:*-g++*:QMAKE_LFLAGS += -Wl,--gc-sections
301linux*-g++*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
302
303enable_fast_mobile_scrolling: DEFINES += ENABLE_FAST_MOBILE_SCROLLING=1
304
305!production_build:have?(FONTCONFIG): PKGCONFIG += fontconfig
306
307