Home | History | Annotate | Download | only in WebCore
      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