642c95d70effa5154fe5010b1452479009fbc66e
[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) {
7     CONFIG += standalone_package
8     # Make sure we compile both debug and release on mac when inside Qt.
9     # This line was extracted from qbase.pri instead of including the whole file
10     win32|mac:!macx-xcode:CONFIG += debug_and_release
11 } else {
12     !CONFIG(release, debug|release) {
13         OBJECTS_DIR = obj/debug
14     } else { # Release
15         OBJECTS_DIR = obj/release
16         DEFINES *= NDEBUG
17     }
18     exists($$PWD/WebCore/generated):CONFIG += standalone_package
19     # Make sure that build_all follows the build_all config in WebCore
20     mac:contains(QT_CONFIG, qt_framework):!CONFIG(webkit_no_framework):!build_pass:CONFIG += build_all
21 }
22
23 CONFIG(standalone_package): DEFINES *= NDEBUG
24
25 CONFIG += depend_includepath
26 DEPENDPATH += $$OUT_PWD
27
28 DEFINES += BUILDING_QT__=1
29 building-libs {
30     win32-msvc*|win32-icc: INCLUDEPATH += $$PWD/JavaScriptCore/os-win32
31 } else {
32     CONFIG(QTDIR_build) {
33         QT += webkit
34     } else {
35         QMAKE_LIBDIR = $$OUTPUT_DIR/lib $$QMAKE_LIBDIR
36         QTWEBKITLIBNAME = QtWebKit
37         mac:!static:contains(QT_CONFIG, qt_framework):!CONFIG(webkit_no_framework) {
38             LIBS += -framework $$QTWEBKITLIBNAME
39             QMAKE_FRAMEWORKPATH = $$OUTPUT_DIR/lib $$QMAKE_FRAMEWORKPATH
40         } else {
41             build_pass: win32-*|wince* {
42                 !CONFIG(release, debug|release): QTWEBKITLIBNAME = $${QTWEBKITLIBNAME}d
43                 QTWEBKITLIBNAME = $${QTWEBKITLIBNAME}$${QT_MAJOR_VERSION}
44                 win32-g++*: LIBS += -l$$QTWEBKITLIBNAME
45                 else: LIBS += $${QTWEBKITLIBNAME}.lib
46             } else {
47                 LIBS += -lQtWebKit
48                 symbian {
49                     TARGET.EPOCSTACKSIZE = 0x14000 // 80 kB
50                     # For EXEs only: set heap to usable value
51                     TARGET.EPOCHEAPSIZE =
52                     heapSizeRule = \
53                     "$${LITERAL_HASH}ifdef WINSCW" \
54                         "EPOCHEAPSIZE  0x40000 0x2000000 // Min 256kB, Max 32MB" \
55                     "$${LITERAL_HASH}else" \
56                         "EPOCHEAPSIZE  0x40000 0x10000000 // Min 256kB, Max 256MB" \
57                     "$${LITERAL_HASH}endif"
58                     MMP_RULES += heapSizeRule
59                 }
60             }
61         }
62     }
63     DEPENDPATH += $$PWD/WebKit/qt/Api
64 }
65
66 CONFIG(release, debug|release) {
67     DEFINES += NDEBUG
68 }
69
70 INCLUDEPATH += \
71     $$PWD \
72     $$OUTPUT_DIR/include/QtWebKit \
73     $$OUTPUT_DIR/include \
74     $$QT.script.includes
75
76 DEFINES += QT_ASCII_CAST_WARNINGS
77
78 webkit2:INCLUDEPATH *= $$OUTPUT_DIR/include/WebKit2
79
80 # Pick up 3rdparty libraries from INCLUDE/LIB just like with MSVC
81 win32-g++* {
82     TMPPATH            = $$quote($$(INCLUDE))
83     QMAKE_INCDIR_POST += $$split(TMPPATH,";")
84     TMPPATH            = $$quote($$(LIB))
85     QMAKE_LIBDIR_POST += $$split(TMPPATH,";")
86 }
87
88 CONFIG -= warn_on
89 *-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
90
91 # Treat warnings as errors on x86/Linux/GCC
92 linux-g++* {
93     isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386): QMAKE_CXXFLAGS += -Werror
94 }
95
96 symbian|*-armcc {
97     # Enable GNU compiler extensions to the ARM compiler for all Qt ports using RVCT
98     RVCT_COMMON_CFLAGS = --gnu --diag_suppress 68,111,177,368,830,1293 --signed_bitfields
99     RVCT_COMMON_CXXFLAGS = $$RVCT_COMMON_CFLAGS --no_parse_templates
100     # Make debug symbols leaner in RVCT4.x. Ignored by compiler for release builds
101     QMAKE_CXXFLAGS.ARMCC_4_0 += --remove_unneeded_entities
102 }
103
104 *-armcc {
105     QMAKE_CFLAGS += $$RVCT_COMMON_CFLAGS
106     QMAKE_CXXFLAGS += $$RVCT_COMMON_CXXFLAGS
107 }
108
109 symbian {
110     QMAKE_CXXFLAGS.ARMCC += $$RVCT_COMMON_CXXFLAGS
111 }
112
113 valgrind {
114     contains(JAVASCRIPTCORE_JIT,yes): error("'JAVASCRIPTCORE_JIT=yes' not supported with valgrind")
115     QMAKE_CXXFLAGS += -g
116     QMAKE_LFLAGS += -g
117     DEFINES += USE_SYSTEM_MALLOC=1
118     DEFINES += ENABLE_JIT=0
119     JAVASCRIPTCORE_JIT = no
120 }
121
122 # Disable dependency to a specific version of a Qt package for non-production builds
123 symbian:!CONFIG(production):default_deployment.pkg_prerules -= pkg_depends_qt
124
125 ##### Defaults for some mobile platforms
126 symbian|maemo5|maemo6 {
127     CONFIG += disable_uitools
128     CONFIG += enable_fast_mobile_scrolling
129     CONFIG += use_qt_mobile_theme
130     maemo6: CONFIG += include_webinspector
131 } else {
132     CONFIG += include_webinspector
133 }
134
135 ####
136
137 contains(QT_CONFIG, modular):!contains(QT_CONFIG, uitools)|disable_uitools: DEFINES *= QT_NO_UITOOLS
138
139 !contains(QT_CONFIG, modular) {
140      QT.phonon.includes = $$QMAKE_INCDIR_QT/phonon
141     QT.phonon.includes = $$QMAKE_INCDIR_QT/phonon
142     QT.phonon.libs = $$QMAKE_LIBDIR_QT
143 }
144
145 # Disable a few warnings on Windows. The warnings are also
146 # disabled in WebKitLibraries/win/tools/vsprops/common.vsprops
147 win32-msvc*|wince*: QMAKE_CXXFLAGS += -wd4291 -wd4344 -wd4396 -wd4503 -wd4800 -wd4819 -wd4996
148
149 CONFIG(qt_minimal) {
150     DEFINES *= QT_NO_ANIMATION
151     DEFINES *= QT_NO_BEARERMANAGEMENT
152     DEFINES *= QT_NO_CLIPBOARD
153     DEFINES *= QT_NO_COMBOBOX
154     DEFINES *= QT_NO_CONCURRENT
155     DEFINES *= QT_NO_CRASHHANDLER
156     DEFINES *= QT_NO_CURSOR
157     DEFINES *= QT_NO_DESKTOPSERVICES
158     DEFINES *= QT_NO_FILEDIALOG
159     DEFINES *= QT_NO_GRAPHICSEFFECT
160     DEFINES *= QT_NO_IM
161     DEFINES *= QT_NO_INPUTDIALOG
162     DEFINES *= QT_NO_LINEEDIT
163     DEFINES *= QT_NO_MESSAGEBOX
164     DEFINES *= QT_NO_OPENSSL
165     DEFINES *= QT_NO_PRINTER
166     DEFINES *= QT_NO_QUUID_STRING
167     DEFINES *= QT_NO_SHORTCUT
168     DEFINES *= QT_NO_STYLE_STYLESHEET
169     DEFINES *= QT_NO_SYSTEMTRAYICON
170     DEFINES *= QT_NO_TEMPORARYFILE
171     DEFINES *= QT_NO_TOOLTIP
172     DEFINES *= QT_NO_UITOOLS
173     DEFINES *= QT_NO_UNDOCOMMAND
174     DEFINES *= QT_NO_UNDOSTACK
175     DEFINES *= QT_NO_XRENDER
176 }
177
178 contains(DEFINES, QT_NO_UITOOLS): CONFIG -= uitools