1 # Include file for WebCore 2 3 include(../common.pri) 4 include(features.pri) 5 6 # Uncomment this to enable Texture Mapper. 7 # CONFIG += texmap 8 9 QT *= network 10 11 SOURCE_DIR = $$replace(PWD, /WebCore, "") 12 13 contains(QT_CONFIG, qpa):CONFIG += embedded 14 15 # Use a config-specific target to prevent parallel builds file clashes on Mac 16 mac: CONFIG(debug, debug|release): WEBCORE_TARGET = webcored 17 else: WEBCORE_TARGET = webcore 18 19 # Output in WebCore/<config> 20 CONFIG(debug, debug|release) : WEBCORE_DESTDIR = debug 21 else: WEBCORE_DESTDIR = release 22 23 CONFIG(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 33 V8_DIR = "$$[QT_INSTALL_PREFIX]/src/3rdparty/v8" 34 35 v8:!exists($${V8_DIR}/include/v8.h) { 36 error("Cannot build with V8. Needed file $${V8_DIR}/include/v8.h does not exist.") 37 } 38 39 v8 { 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 50 v8 { 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 65 WEBCORE_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 124 WEBCORE_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. 136 symbian { 137 PREPEND_INCLUDEPATH = $$WEBCORE_INCLUDEPATH $$WC_GENERATED_SOURCES_DIR $$PREPEND_INCLUDEPATH 138 } else { 139 INCLUDEPATH = $$WEBCORE_INCLUDEPATH $$WC_GENERATED_SOURCES_DIR $$INCLUDEPATH 140 } 141 142 symbian { 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 170 contains(DEFINES, ENABLE_XSLT=1) { 171 QT *= xmlpatterns 172 } 173 174 contains(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 193 contains(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 224 contains(DEFINES, ENABLE_GEOLOCATION=1) { 225 CONFIG *= mobility 226 MOBILITY *= location 227 } 228 229 contains(DEFINES, ENABLE_DEVICE_ORIENTATION=1) { 230 CONFIG *= mobility 231 MOBILITY *= sensors 232 } 233 234 contains(DEFINES, ENABLE_QT_USERAGENT_DEVICEMODEL=1) { 235 CONFIG *= mobility 236 MOBILITY *= systeminfo 237 } 238 239 contains(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 248 contains(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 274 contains(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 281 contains(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 295 contains (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 313 win32-* { 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 321 win32-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 334 wince* { 335 LIBS += -lmmtimer 336 LIBS += -lole32 337 } 338 339 mac { 340 LIBS_PRIVATE += -framework Carbon -framework AppKit 341 } 342 343 unix:!mac:*-g++*:QMAKE_CXXFLAGS += -ffunction-sections -fdata-sections 344 unix:!mac:*-g++*:QMAKE_LFLAGS += -Wl,--gc-sections 345 linux*-g++*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF 346 347 unix|win32-g++*:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtNetwork 348 unix:!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 353 enable_fast_mobile_scrolling: DEFINES += ENABLE_FAST_MOBILE_SCROLLING=1 354 355 use_qt_mobile_theme: DEFINES += WTF_USE_QT_MOBILE_THEME=1 356 357 defineTest(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