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