2011-02-28 Benjamin Poulain <benjamin.poulain@nokia.com>
[WebKit-https.git] / Source / WebKit.pri
1 # Include file to make it easy to include WebKit into Qt projects
2
3 # Detect that we are building as a standalone package by the presence of
4 # either the generated files directory or as part of the Qt package through
5 # QTDIR_build
6 CONFIG(QTDIR_build): CONFIG += standalone_package
7 else:exists($$PWD/WebCore/generated): CONFIG += standalone_package
8
9 CONFIG += depend_includepath
10 DEPENDPATH += $$OUT_PWD
11
12 DEFINES += BUILDING_QT__=1
13 building-libs {
14     win32-msvc*|win32-icc: INCLUDEPATH += $$PWD/JavaScriptCore/os-win32
15 } else {
16     CONFIG(QTDIR_build) {
17         QT += webkit
18     } else {
19         QMAKE_LIBDIR = $$OUTPUT_DIR/lib $$QMAKE_LIBDIR
20         QTWEBKITLIBNAME = QtWebKit
21         mac:!static:contains(QT_CONFIG, qt_framework):!CONFIG(webkit_no_framework) {
22             LIBS += -framework $$QTWEBKITLIBNAME
23             QMAKE_FRAMEWORKPATH = $$OUTPUT_DIR/lib $$QMAKE_FRAMEWORKPATH
24         } else {
25             build_pass: win32-*|wince* {
26                 !CONFIG(release, debug|release): QTWEBKITLIBNAME = $${QTWEBKITLIBNAME}d
27                 QTWEBKITLIBNAME = $${QTWEBKITLIBNAME}$${QT_MAJOR_VERSION}
28                 win32-g++*: LIBS += -l$$QTWEBKITLIBNAME
29                 else: LIBS += $${QTWEBKITLIBNAME}.lib
30             } else {
31                 LIBS += -lQtWebKit
32                 symbian {
33                     TARGET.EPOCSTACKSIZE = 0x14000 // 80 kB
34                     # For EXEs only: set heap to usable value
35                     TARGET.EPOCHEAPSIZE =
36                     heapSizeRule = \
37                     "$${LITERAL_HASH}ifdef WINSCW" \
38                         "EPOCHEAPSIZE  0x40000 0x2000000 // Min 256kB, Max 32MB" \
39                     "$${LITERAL_HASH}else" \
40                         "EPOCHEAPSIZE  0x40000 0x10000000 // Min 256kB, Max 256MB" \
41                     "$${LITERAL_HASH}endif"
42                     MMP_RULES += heapSizeRule
43                 }
44             }
45         }
46     }
47     DEPENDPATH += $$PWD/WebKit/qt/Api
48 }
49
50 CONFIG(release, debug|release) {
51     DEFINES += NDEBUG
52 }
53
54 INCLUDEPATH += \
55     $$OUTPUT_DIR/include/QtWebKit \
56     $$OUTPUT_DIR/include
57 INCLUDEPATH += $$QT.script.includes
58
59 webkit2 {
60     INCLUDEPATH += $$OUTPUT_DIR/include/WebKit2
61     # FIXME: Once the public header are well defined for WebKit2, this must go away.
62     INCLUDEPATH += $$PWD/WebKit2/
63 }
64
65 CONFIG -= warn_on
66 *-g++*:QMAKE_CXXFLAGS += -Wall -Wextra -Wreturn-type -fno-strict-aliasing -Wcast-align -Wchar-subscripts -Wformat-security -Wreturn-type -Wno-unused-parameter -Wno-sign-compare -Wno-switch -Wno-switch-enum -Wundef -Wmissing-noreturn -Winit-self
67
68 # Treat warnings as errors on x86/Linux/GCC
69 linux-g++* {
70     isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386): QMAKE_CXXFLAGS += -Werror
71 }
72
73 symbian|*-armcc {
74     # Enable GNU compiler extensions to the ARM compiler for all Qt ports using RVCT
75     RVCT_COMMON_CFLAGS = --gnu --diag_suppress 68,111,177,368,830,1293
76     RVCT_COMMON_CXXFLAGS = $$RVCT_COMMON_CFLAGS --no_parse_templates
77     # Make debug symbols leaner in RVCT4.x. Ignored by compiler for release builds
78     QMAKE_CXXFLAGS.ARMCC_4_0 += --remove_unneeded_entities
79 }
80
81 *-armcc {
82     QMAKE_CFLAGS += $$RVCT_COMMON_CFLAGS
83     QMAKE_CXXFLAGS += $$RVCT_COMMON_CXXFLAGS
84 }
85
86 symbian {
87     QMAKE_CXXFLAGS.ARMCC += $$RVCT_COMMON_CXXFLAGS
88 }
89
90 valgrind {
91     contains(JAVASCRIPTCORE_JIT,yes): error("'JAVASCRIPTCORE_JIT=yes' not supported with valgrind")
92     QMAKE_CXXFLAGS += -g
93     QMAKE_LFLAGS += -g
94     DEFINES += USE_SYSTEM_MALLOC=1
95     DEFINES += ENABLE_JIT=0
96     JAVASCRIPTCORE_JIT = no
97 }
98
99 # Disable dependency to a specific version of a Qt package for non-production builds
100 symbian:!CONFIG(production):default_deployment.pkg_prerules -= pkg_depends_qt
101
102 ##### Defaults for some mobile platforms
103 symbian|maemo5|maemo6 {
104     CONFIG += disable_uitools
105     CONFIG += enable_fast_mobile_scrolling
106     CONFIG += use_qt_mobile_theme
107     maemo6: CONFIG += include_webinspector
108 } else {
109     CONFIG += include_webinspector
110 }
111
112 ####
113
114 contains(QT_CONFIG, modular):!contains(QT_CONFIG, uitools)|disable_uitools: DEFINES *= QT_NO_UITOOLS
115
116 !contains(QT_CONFIG, modular) {
117     $$QT.phonon.includes = $QMAKE_INCDIR_QT/phonon
118     $$QT.phonon.libs = $$QMAKE_LIBDIR_QT
119 }
120
121 # Disable a few warnings on Windows. The warnings are also
122 # disabled in WebKitLibraries/win/tools/vsprops/common.vsprops
123 win32-msvc*|wince*: QMAKE_CXXFLAGS += -wd4291 -wd4344 -wd4396 -wd4503 -wd4800 -wd4819 -wd4996
124
125 CONFIG(qt_minimal) {
126     DEFINES *= QT_NO_ANIMATION
127     DEFINES *= QT_NO_BEARERMANAGEMENT
128     DEFINES *= QT_NO_CLIPBOARD
129     DEFINES *= QT_NO_COMBOBOX
130     DEFINES *= QT_NO_CONCURRENT
131     DEFINES *= QT_NO_CRASHHANDLER
132     DEFINES *= QT_NO_CURSOR
133     DEFINES *= QT_NO_DESKTOPSERVICES
134     DEFINES *= QT_NO_FILEDIALOG
135     DEFINES *= QT_NO_GRAPHICSEFFECT
136     DEFINES *= QT_NO_IM
137     DEFINES *= QT_NO_INPUTDIALOG
138     DEFINES *= QT_NO_LINEEDIT
139     DEFINES *= QT_NO_MESSAGEBOX
140     DEFINES *= QT_NO_OPENSSL
141     DEFINES *= QT_NO_PRINTER
142     DEFINES *= QT_NO_QUUID_STRING
143     DEFINES *= QT_NO_SHORTCUT
144     DEFINES *= QT_NO_STYLE_STYLESHEET
145     DEFINES *= QT_NO_SYSTEMTRAYICON
146     DEFINES *= QT_NO_TEMPORARYFILE
147     DEFINES *= QT_NO_TOOLTIP
148     DEFINES *= QT_NO_UITOOLS
149     DEFINES *= QT_NO_UNDOCOMMAND
150     DEFINES *= QT_NO_UNDOSTACK
151     DEFINES *= QT_NO_XRENDER
152 }
153
154 contains(DEFINES, QT_NO_UITOOLS): CONFIG -= uitools
155
156 # Needed by npapi.h.
157 unix:!mac:!symbian: DEFINES += XP_UNIX