• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Include file for WebCore
2
3include(../common.pri)
4include(features.pri)
5
6# Uncomment this to enable Texture Mapper.
7# CONFIG += texmap
8
9QT *= network
10
11SOURCE_DIR = $$replace(PWD, /WebCore, "")
12
13contains(QT_CONFIG, qpa):CONFIG += embedded
14
15# Use a config-specific target to prevent parallel builds file clashes on Mac
16mac: CONFIG(debug, debug|release): WEBCORE_TARGET = webcored
17else: WEBCORE_TARGET = webcore
18
19# Output in WebCore/<config>
20CONFIG(debug, debug|release) : WEBCORE_DESTDIR = debug
21else: WEBCORE_DESTDIR = release
22
23CONFIG(standalone_package) {
24    isEmpty(WC_GENERATED_SOURCES_DIR):WC_GENERATED_SOURCES_DIR = $$PWD/../WebCore/generated
25    isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = $$PWD/../JavaScriptCore/generated
26
27    PRECOMPILED_HEADER = $$PWD/../WebKit/qt/WebKit_pch.h
28} else {
29    isEmpty(WC_GENERATED_SOURCES_DIR):WC_GENERATED_SOURCES_DIR = ../WebCore/generated
30    isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = ../JavaScriptCore/generated
31}
32
33V8_DIR = "$$[QT_INSTALL_PREFIX]/src/3rdparty/v8"
34
35v8:!exists($${V8_DIR}/include/v8.h) {
36    error("Cannot build with V8. Needed file $${V8_DIR}/include/v8.h does not exist.")
37}
38
39v8 {
40    message(Using V8 with QtScript)
41    QT += script
42    INCLUDEPATH += $${V8_DIR}/include
43    DEFINES *= V8_BINDING=1
44    DEFINES += WTF_CHANGES=1
45    DEFINES *= WTF_USE_V8=1
46    DEFINES += USING_V8_SHARED
47    linux-*:LIBS += -lv8
48}
49
50v8 {
51    WEBCORE_INCLUDEPATH = \
52        $$SOURCE_DIR/WebCore/bindings/v8 \
53        $$SOURCE_DIR/WebCore/bindings/v8/custom \
54        $$SOURCE_DIR/WebCore/bindings/v8/specialization \
55        $$SOURCE_DIR/WebCore/bridge/qt/v8
56
57} else {
58    WEBCORE_INCLUDEPATH = \
59        $$SOURCE_DIR/WebCore/bridge/jsc \
60        $$SOURCE_DIR/WebCore/bindings/js \
61        $$SOURCE_DIR/WebCore/bindings/js/specialization \
62        $$SOURCE_DIR/WebCore/bridge/c
63}
64
65WEBCORE_INCLUDEPATH = \
66    $$SOURCE_DIR/WebCore \
67    $$SOURCE_DIR/WebCore/accessibility \
68    $$SOURCE_DIR/WebCore/bindings \
69    $$SOURCE_DIR/WebCore/bindings/generic \
70    $$SOURCE_DIR/WebCore/bridge \
71    $$SOURCE_DIR/WebCore/css \
72    $$SOURCE_DIR/WebCore/dom \
73    $$SOURCE_DIR/WebCore/dom/default \
74    $$SOURCE_DIR/WebCore/editing \
75    $$SOURCE_DIR/WebCore/fileapi \
76    $$SOURCE_DIR/WebCore/history \
77    $$SOURCE_DIR/WebCore/html \
78    $$SOURCE_DIR/WebCore/html/canvas \
79    $$SOURCE_DIR/WebCore/html/parser \
80    $$SOURCE_DIR/WebCore/html/shadow \
81    $$SOURCE_DIR/WebCore/inspector \
82    $$SOURCE_DIR/WebCore/loader \
83    $$SOURCE_DIR/WebCore/loader/appcache \
84    $$SOURCE_DIR/WebCore/loader/archive \
85    $$SOURCE_DIR/WebCore/loader/cache \
86    $$SOURCE_DIR/WebCore/loader/icon \
87    $$SOURCE_DIR/WebCore/mathml \
88    $$SOURCE_DIR/WebCore/notifications \
89    $$SOURCE_DIR/WebCore/page \
90    $$SOURCE_DIR/WebCore/page/animation \
91    $$SOURCE_DIR/WebCore/platform \
92    $$SOURCE_DIR/WebCore/platform/animation \
93    $$SOURCE_DIR/WebCore/platform/audio \
94    $$SOURCE_DIR/WebCore/platform/graphics \
95    $$SOURCE_DIR/WebCore/platform/graphics/filters \
96    $$SOURCE_DIR/WebCore/platform/graphics/filters/arm \
97    $$SOURCE_DIR/WebCore/platform/graphics/texmap \
98    $$SOURCE_DIR/WebCore/platform/graphics/transforms \
99    $$SOURCE_DIR/WebCore/platform/image-decoders \
100    $$SOURCE_DIR/WebCore/platform/leveldb \
101    $$SOURCE_DIR/WebCore/platform/mock \
102    $$SOURCE_DIR/WebCore/platform/network \
103    $$SOURCE_DIR/WebCore/platform/sql \
104    $$SOURCE_DIR/WebCore/platform/text \
105    $$SOURCE_DIR/WebCore/platform/text/transcoder \
106    $$SOURCE_DIR/WebCore/plugins \
107    $$SOURCE_DIR/WebCore/rendering \
108    $$SOURCE_DIR/WebCore/rendering/mathml \
109    $$SOURCE_DIR/WebCore/rendering/style \
110    $$SOURCE_DIR/WebCore/rendering/svg \
111    $$SOURCE_DIR/WebCore/storage \
112    $$SOURCE_DIR/WebCore/svg \
113    $$SOURCE_DIR/WebCore/svg/animation \
114    $$SOURCE_DIR/WebCore/svg/graphics \
115    $$SOURCE_DIR/WebCore/svg/graphics/filters \
116    $$SOURCE_DIR/WebCore/svg/properties \
117    $$SOURCE_DIR/WebCore/webaudio \
118    $$SOURCE_DIR/WebCore/websockets \
119    $$SOURCE_DIR/WebCore/wml \
120    $$SOURCE_DIR/WebCore/workers \
121    $$SOURCE_DIR/WebCore/xml \
122    $$WEBCORE_INCLUDEPATH
123
124WEBCORE_INCLUDEPATH = \
125    $$SOURCE_DIR/WebCore/bridge/qt \
126    $$SOURCE_DIR/WebCore/page/qt \
127    $$SOURCE_DIR/WebCore/platform/graphics/qt \
128    $$SOURCE_DIR/WebCore/platform/network/qt \
129    $$SOURCE_DIR/WebCore/platform/qt \
130    $$SOURCE_DIR/WebKit/qt/Api \
131    $$SOURCE_DIR/WebKit/qt/WebCoreSupport \
132    $$WEBCORE_INCLUDEPATH
133
134# On Symbian PREPEND_INCLUDEPATH is the best way to make sure that WebKit headers
135# are included before platform headers.
136symbian {
137    PREPEND_INCLUDEPATH = $$WEBCORE_INCLUDEPATH $$WC_GENERATED_SOURCES_DIR $$PREPEND_INCLUDEPATH
138} else {
139    INCLUDEPATH = $$WEBCORE_INCLUDEPATH $$WC_GENERATED_SOURCES_DIR $$INCLUDEPATH
140}
141
142symbian {
143    v8 {
144        QMAKE_CXXFLAGS.ARMCC += -OTime -O3
145        QMAKE_CXXFLAGS.ARMCC += --fpu softvfp+vfpv2 --fpmode fast
146        LIBS += -llibpthread
147    }
148
149    # RO text (code) section in qtwebkit.dll exceeds allocated space for gcce udeb target.
150    # Move RW-section base address to start from 0x1000000 instead of the toolchain default 0x400000.
151    QMAKE_LFLAGS.ARMCC += --rw-base 0x1000000
152    QMAKE_LFLAGS.GCCE += -Tdata 0x1000000
153
154    CONFIG += do_not_build_as_thumb
155
156    CONFIG(release, debug|release): QMAKE_CXXFLAGS.ARMCC += -OTime -O3
157    # Symbian plugin support
158    LIBS += -lefsrv
159
160    !CONFIG(QTDIR_build) {
161        # Test if symbian OS comes with sqlite
162        exists($${EPOCROOT}epoc32/release/armv5/lib/sqlite3.dso):CONFIG *= system-sqlite
163    } else:!symbian-abld:!symbian-sbsv2 {
164        # When bundled with Qt, all Symbian build systems extract their own sqlite files if
165        # necessary, but on non-mmp based ones we need to specify this ourselves.
166        include($$QT_SOURCE_TREE/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri)
167    }
168}
169
170contains(DEFINES, ENABLE_XSLT=1) {
171    QT *= xmlpatterns
172}
173
174contains(DEFINES, ENABLE_SQLITE=1) {
175    !system-sqlite:exists( $${SQLITE3SRCDIR}/sqlite3.c ) {
176            INCLUDEPATH += $${SQLITE3SRCDIR}
177            DEFINES += SQLITE_CORE SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_COMPLETE
178            CONFIG(release, debug|release): DEFINES *= NDEBUG
179            contains(DEFINES, ENABLE_SINGLE_THREADED=1): DEFINES += SQLITE_THREADSAFE=0
180    } else {
181        # Use sqlite3 from the underlying OS
182        CONFIG(QTDIR_build) {
183            QMAKE_CXXFLAGS *= $$QT_CFLAGS_SQLITE
184            LIBS *= $$QT_LFLAGS_SQLITE
185        } else {
186            INCLUDEPATH += $${SQLITE3SRCDIR}
187            LIBS += -lsqlite3
188        }
189    }
190    wince*:DEFINES += HAVE_LOCALTIME_S=0
191}
192
193contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) {
194    unix:!symbian {
195        mac {
196            INCLUDEPATH += platform/mac
197            # Note: XP_MACOSX is defined in npapi.h
198        } else {
199            !embedded {
200                CONFIG += x11
201                LIBS += -lXrender
202            }
203            maemo5 {
204                DEFINES += MOZ_PLATFORM_MAEMO=5
205            }
206            contains(DEFINES, Q_WS_MAEMO_6) {
207                DEFINES += MOZ_PLATFORM_MAEMO=6
208            }
209            DEFINES += XP_UNIX
210            DEFINES += ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE=1
211        }
212    }
213    win32-* {
214        LIBS += \
215            -ladvapi32 \
216            -lgdi32 \
217            -lshell32 \
218            -lshlwapi \
219            -luser32 \
220            -lversion
221    }
222}
223
224contains(DEFINES, ENABLE_GEOLOCATION=1) {
225    CONFIG *= mobility
226    MOBILITY *= location
227}
228
229contains(DEFINES, ENABLE_DEVICE_ORIENTATION=1) {
230    CONFIG *= mobility
231    MOBILITY *= sensors
232}
233
234contains(DEFINES, ENABLE_QT_USERAGENT_DEVICEMODEL=1) {
235     CONFIG *= mobility
236     MOBILITY *= systeminfo
237}
238
239contains(DEFINES, ENABLE_QT_BEARER=1) {
240    # Bearer management is part of Qt 4.7, so don't accidentially
241    # pull in Qt Mobility when building against >= 4.7
242    !greaterThan(QT_MINOR_VERSION, 6) {
243        CONFIG *= mobility
244        MOBILITY *= bearer
245    }
246}
247
248contains(DEFINES, ENABLE_VIDEO=1) {
249    contains(DEFINES, USE_GSTREAMER=1) {
250        DEFINES += WTF_USE_GSTREAMER=1
251        DEFINES += ENABLE_GLIB_SUPPORT=1
252
253        INCLUDEPATH += $$PWD/platform/graphics/gstreamer
254
255        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
256    } else:contains(MOBILITY_CONFIG, multimedia) {
257        CONFIG   *= mobility
258        MOBILITY *= multimedia
259        DEFINES  += WTF_USE_QT_MULTIMEDIA=1
260    } else:contains(QT_CONFIG, phonon) {
261        # Add phonon manually to prevent it from coming first in
262        # the include paths, as Phonon's path.h conflicts with
263        # WebCore's Path.h on case-insensitive filesystems.
264        qtAddLibrary(phonon)
265        INCLUDEPATH -= $$QT.phonon.includes
266        INCLUDEPATH += $$QT.phonon.includes
267        mac {
268            INCLUDEPATH -= $$QT.phonon.libs/phonon.framework/Headers
269            INCLUDEPATH += $$QT.phonon.libs/phonon.framework/Headers
270        }
271    }
272}
273
274contains(DEFINES, ENABLE_WEBGL=1)|contains(CONFIG, texmap) {
275    !contains(QT_CONFIG, opengl) {
276        error( "This configuration needs an OpenGL enabled Qt. Your Qt is missing OpenGL.")
277    }
278    QT *= opengl
279}
280
281contains(DEFINES, ENABLE_SYMBIAN_DIALOG_PROVIDERS) {
282    # this feature requires the S60 platform private BrowserDialogsProvider.h header file
283    # and is therefore not enabled by default but only meant for platform builds.
284    symbian {
285        LIBS += -lbrowserdialogsprovider
286    }
287}
288
289!CONFIG(webkit-debug):CONFIG(QTDIR_build) {
290    # Remove the following 2 lines if you want debug information in WebCore
291    CONFIG -= separate_debug_info
292    CONFIG += no_debug_info
293}
294
295contains (CONFIG, text_breaking_with_icu) {
296    LIBS += -licuuc
297}
298
299!CONFIG(QTDIR_build) {
300    win32-*|wince* {
301        DLLDESTDIR = $$OUTPUT_DIR/bin
302        isEmpty(QT_SOURCE_TREE):build_pass: TARGET = $$qtLibraryTarget($$TARGET)
303
304        dlltarget.commands = $(COPY_FILE) $(DESTDIR_TARGET) $$[QT_INSTALL_BINS]
305        dlltarget.CONFIG = no_path
306        INSTALLS += dlltarget
307    }
308    mac {
309        LIBS += -framework Carbon -framework AppKit
310    }
311}
312
313win32-* {
314    INCLUDEPATH += $$SOURCE_DIR/WebCore/platform/win
315    LIBS += -lgdi32
316    LIBS += -lole32
317    LIBS += -luser32
318}
319
320# Remove whole program optimizations due to miscompilations
321win32-msvc2005|win32-msvc2008|wince*:{
322    QMAKE_CFLAGS_RELEASE -= -GL
323    QMAKE_CXXFLAGS_RELEASE -= -GL
324
325    # Disable incremental linking for windows 32bit OS debug build as WebKit is so big
326    # that linker failes to link incrementally in debug mode.
327    ARCH = $$(PROCESSOR_ARCHITECTURE)
328    WOW64ARCH = $$(PROCESSOR_ARCHITEW6432)
329    equals(ARCH, x86):{
330        isEmpty(WOW64ARCH): QMAKE_LFLAGS_DEBUG += /INCREMENTAL:NO
331    }
332}
333
334wince* {
335    LIBS += -lmmtimer
336    LIBS += -lole32
337}
338
339mac {
340    LIBS_PRIVATE += -framework Carbon -framework AppKit
341}
342
343unix:!mac:*-g++*:QMAKE_CXXFLAGS += -ffunction-sections -fdata-sections
344unix:!mac:*-g++*:QMAKE_LFLAGS += -Wl,--gc-sections
345linux*-g++*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
346
347unix|win32-g++*:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtNetwork
348unix:!mac:!symbian:CONFIG += link_pkgconfig
349
350# Disable C++0x mode in WebCore for those who enabled it in their Qt's mkspec
351*-g++*:QMAKE_CXXFLAGS -= -std=c++0x -std=gnu++0x
352
353enable_fast_mobile_scrolling: DEFINES += ENABLE_FAST_MOBILE_SCROLLING=1
354
355use_qt_mobile_theme: DEFINES += WTF_USE_QT_MOBILE_THEME=1
356
357defineTest(prependWebCoreLib) {
358    pathToWebCoreOutput = $$ARGS/$$WEBCORE_DESTDIR
359
360    win32-msvc*|wince* {
361        LIBS = -l$$WEBCORE_TARGET $$LIBS
362        LIBS = -L$$pathToWebCoreOutput $$LIBS
363        POST_TARGETDEPS += $${pathToWebCoreOutput}$${QMAKE_DIR_SEP}$${WEBCORE_TARGET}.lib
364    } else:symbian {
365        LIBS = -l$${WEBCORE_TARGET}.lib $$LIBS
366        QMAKE_LIBDIR += $$pathToWebCoreOutput
367        POST_TARGETDEPS += $${pathToWebCoreOutput}$${QMAKE_DIR_SEP}$${WEBCORE_TARGET}.lib
368    } else {
369        QMAKE_LIBDIR = $$pathToWebCoreOutput $$QMAKE_LIBDIR
370        LIBS = -l$$WEBCORE_TARGET $$LIBS
371        POST_TARGETDEPS += $${pathToWebCoreOutput}$${QMAKE_DIR_SEP}lib$${WEBCORE_TARGET}.a
372    }
373
374    CONFIG -= explicitlib
375    export(QMAKE_LIBDIR)
376    export(POST_TARGETDEPS)
377    export(CONFIG)
378    export(LIBS)
379
380    return(true)
381}
382