blob: 1af9ccc3e6782a0288a7e92477b5683ea082e830 [file] [log] [blame]
# -------------------------------------------------------------------
# This file contains shared rules used both when building WebCore
# itself, and by targets that use WebCore.
#
# See 'Tools/qmake/README' for an overview of the build system
# -------------------------------------------------------------------
SOURCE_DIR = $${ROOT_WEBKIT_DIR}/Source/WebCore
# We enable TextureMapper by default; remove this line to enable GraphicsLayerQt.
CONFIG += texmap
QT *= network sql
haveQt(5): QT *= gui-private
WEBCORE_GENERATED_SOURCES_DIR = $${ROOT_BUILD_DIR}/Source/WebCore/$${GENERATED_SOURCES_DESTDIR}
INCLUDEPATH += \
$$SOURCE_DIR \
$$SOURCE_DIR/Modules/filesystem \
$$SOURCE_DIR/Modules/geolocation \
$$SOURCE_DIR/Modules/indexeddb \
$$SOURCE_DIR/Modules/notifications \
$$SOURCE_DIR/Modules/quota \
$$SOURCE_DIR/Modules/webaudio \
$$SOURCE_DIR/Modules/webdatabase \
$$SOURCE_DIR/Modules/websockets \
$$SOURCE_DIR/accessibility \
$$SOURCE_DIR/bindings \
$$SOURCE_DIR/bindings/generic \
$$SOURCE_DIR/bridge \
$$SOURCE_DIR/bridge/qt \
$$SOURCE_DIR/css \
$$SOURCE_DIR/dom \
$$SOURCE_DIR/dom/default \
$$SOURCE_DIR/editing \
$$SOURCE_DIR/fileapi \
$$SOURCE_DIR/history \
$$SOURCE_DIR/html \
$$SOURCE_DIR/html/canvas \
$$SOURCE_DIR/html/parser \
$$SOURCE_DIR/html/shadow \
$$SOURCE_DIR/html/track \
$$SOURCE_DIR/inspector \
$$SOURCE_DIR/loader \
$$SOURCE_DIR/loader/appcache \
$$SOURCE_DIR/loader/archive \
$$SOURCE_DIR/loader/cache \
$$SOURCE_DIR/loader/icon \
$$SOURCE_DIR/mathml \
$$SOURCE_DIR/page \
$$SOURCE_DIR/page/animation \
$$SOURCE_DIR/page/qt \
$$SOURCE_DIR/page/scrolling \
$$SOURCE_DIR/platform \
$$SOURCE_DIR/platform/animation \
$$SOURCE_DIR/platform/audio \
$$SOURCE_DIR/platform/graphics \
$$SOURCE_DIR/platform/graphics/filters \
$$SOURCE_DIR/platform/graphics/filters/arm \
$$SOURCE_DIR/platform/graphics/opengl \
$$SOURCE_DIR/platform/graphics/qt \
$$SOURCE_DIR/platform/graphics/surfaces \
$$SOURCE_DIR/platform/graphics/texmap \
$$SOURCE_DIR/platform/graphics/transforms \
$$SOURCE_DIR/platform/image-decoders \
$$SOURCE_DIR/platform/image-decoders/bmp \
$$SOURCE_DIR/platform/image-decoders/ico \
$$SOURCE_DIR/platform/image-decoders/gif \
$$SOURCE_DIR/platform/image-decoders/jpeg \
$$SOURCE_DIR/platform/image-decoders/png \
$$SOURCE_DIR/platform/image-decoders/webp \
$$SOURCE_DIR/platform/leveldb \
$$SOURCE_DIR/platform/mock \
$$SOURCE_DIR/platform/network \
$$SOURCE_DIR/platform/network/qt \
$$SOURCE_DIR/platform/qt \
$$SOURCE_DIR/platform/sql \
$$SOURCE_DIR/platform/text \
$$SOURCE_DIR/platform/text/transcoder \
$$SOURCE_DIR/plugins \
$$SOURCE_DIR/rendering \
$$SOURCE_DIR/rendering/mathml \
$$SOURCE_DIR/rendering/style \
$$SOURCE_DIR/rendering/svg \
$$SOURCE_DIR/storage \
$$SOURCE_DIR/svg \
$$SOURCE_DIR/svg/animation \
$$SOURCE_DIR/svg/graphics \
$$SOURCE_DIR/svg/graphics/filters \
$$SOURCE_DIR/svg/properties \
$$SOURCE_DIR/testing \
$$SOURCE_DIR/websockets \
$$SOURCE_DIR/workers \
$$SOURCE_DIR/xml \
$$SOURCE_DIR/xml/parser \
$$SOURCE_DIR/../ThirdParty
v8 {
DEFINES *= V8_BINDING=1
INCLUDEPATH += \
$$SOURCE_DIR/bindings/v8 \
$$SOURCE_DIR/bindings/v8/custom \
$$SOURCE_DIR/bindings/v8/specialization \
$$SOURCE_DIR/bridge/qt/v8 \
$$SOURCE_DIR/testing/v8
} else {
INCLUDEPATH += \
$$SOURCE_DIR/bridge/jsc \
$$SOURCE_DIR/bindings/js \
$$SOURCE_DIR/bindings/js/specialization \
$$SOURCE_DIR/bridge/c \
$$SOURCE_DIR/testing/js
}
INCLUDEPATH += $$WEBCORE_GENERATED_SOURCES_DIR
contains(DEFINES, ENABLE_XSLT=1) {
contains(DEFINES, WTF_USE_LIBXML2=1) {
mac {
INCLUDEPATH += /usr/include/libxml2
LIBS += -lxml2 -lxslt
} else {
PKGCONFIG += libxslt
}
} else {
QT *= xmlpatterns
}
}
contains(DEFINES, WTF_USE_LIBXML2=1) {
PKGCONFIG += libxml-2.0
}
contains(DEFINES, WTF_USE_ZLIB=1) {
LIBS += -lz
}
contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) {
unix {
mac {
INCLUDEPATH += platform/mac
# Note: XP_MACOSX is defined in npapi.h
} else {
xlibAvailable() {
CONFIG += x11
LIBS += -lXrender
DEFINES += MOZ_X11
}
DEFINES += XP_UNIX
DEFINES += ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE=1
}
}
win32-* {
LIBS += \
-ladvapi32 \
-lgdi32 \
-lshell32 \
-lshlwapi \
-luser32 \
-lversion
}
}
contains(DEFINES, ENABLE_GEOLOCATION=1) {
CONFIG *= mobility
MOBILITY *= location
}
contains(DEFINES, ENABLE_ORIENTATION_EVENTS=1)|contains(DEFINES, ENABLE_DEVICE_ORIENTATION=1) {
haveQt(5) {
QT += sensors
} else {
CONFIG *= mobility
MOBILITY *= sensors
}
}
contains(DEFINES, WTF_USE_QT_MOBILITY_SYSTEMINFO=1) {
CONFIG *= mobility
MOBILITY *= systeminfo
}
contains(DEFINES, ENABLE_VIDEO=1) {
contains(DEFINES, WTF_USE_QTKIT=1) {
INCLUDEPATH += $$SOURCE_DIR/platform/graphics/mac
LIBS += -framework AppKit -framework AudioUnit \
-framework AudioToolbox -framework CoreAudio \
-framework QuartzCore -framework QTKit
} else:contains(DEFINES, WTF_USE_GSTREAMER=1) {
DEFINES += ENABLE_GLIB_SUPPORT=1
INCLUDEPATH += $$SOURCE_DIR/platform/graphics/gstreamer
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
} else:contains(DEFINES, WTF_USE_QT_MULTIMEDIA=1) {
CONFIG *= mobility
MOBILITY *= multimedia
}
}
contains(DEFINES, ENABLE_WEBGL=1) {
!contains(QT_CONFIG, opengl) {
error( "This configuration needs an OpenGL enabled Qt. Your Qt is missing OpenGL.")
}
}
contains(CONFIG, texmap) {
DEFINES += WTF_USE_TEXTURE_MAPPER=1
# TextureMapperGL requires stuff from GraphicsContext3D, hence the WebGL
# dependency.
!win32-*:contains(QT_CONFIG, opengl):contains(DEFINES, ENABLE_WEBGL=1) {
DEFINES += WTF_USE_TEXTURE_MAPPER_GL=1
contains(QT_CONFIG, opengles2): LIBS += -lEGL
}
mac: LIBS += -framework IOSurface -framework CoreFoundation
}
contains(DEFINES, WTF_USE_TEXTURE_MAPPER_GL=1)|contains(DEFINES, ENABLE_WEBGL=1) {
# Only Qt 4 needs the opengl module, for Qt 5 everything we need is part of QtGui.
haveQt(4): QT *= opengl
}
!system-sqlite:exists( $${SQLITE3SRCDIR}/sqlite3.c ) {
INCLUDEPATH += $${SQLITE3SRCDIR}
DEFINES += SQLITE_CORE SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_COMPLETE
} else {
INCLUDEPATH += $${SQLITE3SRCDIR}
LIBS += -lsqlite3
}
haveQt(5) {
# Qt5 allows us to use config tests to check for the presence of these libraries
config_libjpeg {
DEFINES += WTF_USE_LIBJPEG=1
LIBS += -ljpeg
} else {
warning("JPEG library not found! QImageDecoder will decode JPEG images.")
}
config_libpng {
DEFINES += WTF_USE_LIBPNG=1
LIBS += -lpng
} else {
warning("PNG library not found! QImageDecoder will decode PNG images.")
}
config_libwebp {
DEFINES += WTF_USE_WEBP=1
LIBS += -lwebp
}
} else {
!win32-*:!mac {
DEFINES += WTF_USE_LIBJPEG=1 WTF_USE_LIBPNG=1
LIBS += -ljpeg -lpng
}
}
win32-*|wince* {
DLLDESTDIR = $${ROOT_BUILD_DIR}/bin
dlltarget.commands = $(COPY_FILE) $(DESTDIR_TARGET) $$[QT_INSTALL_BINS]
dlltarget.CONFIG = no_path
INSTALLS += dlltarget
}
mac {
LIBS += -framework Carbon -framework AppKit
}
win32-* {
INCLUDEPATH += $$SOURCE_DIR/platform/win
LIBS += -lgdi32
LIBS += -lole32
LIBS += -luser32
}
# Remove whole program optimizations due to miscompilations
win32-msvc2005|win32-msvc2008|win32-msvc2010|wince*:{
QMAKE_CFLAGS_LTCG -= -GL
QMAKE_CXXFLAGS_LTCG -= -GL
# Disable incremental linking for windows 32bit OS debug build as WebKit is so big
# that linker failes to link incrementally in debug mode.
ARCH = $$(PROCESSOR_ARCHITECTURE)
WOW64ARCH = $$(PROCESSOR_ARCHITEW6432)
equals(ARCH, x86):{
isEmpty(WOW64ARCH): QMAKE_LFLAGS_DEBUG += /INCREMENTAL:NO
}
}
wince* {
DEFINES += HAVE_LOCALTIME_S=0
LIBS += -lmmtimer
LIBS += -lole32
}
mac {
LIBS_PRIVATE += -framework Carbon -framework AppKit
}
unix:!mac:*-g++*:QMAKE_CXXFLAGS += -ffunction-sections -fdata-sections
unix:!mac:*-g++*:QMAKE_LFLAGS += -Wl,--gc-sections
linux*-g++*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
unix|win32-g++* {
QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtNetwork
haveQt(5): QMAKE_PKGCONFIG_REQUIRES += QtWidgets
}
# Disable C++0x mode in WebCore for those who enabled it in their Qt's mkspec
*-g++*:QMAKE_CXXFLAGS -= -std=c++0x -std=gnu++0x
enable_fast_mobile_scrolling: DEFINES += ENABLE_FAST_MOBILE_SCROLLING=1