01cc41a7cdf9315b3d86f5b7624909359169a647
[WebKit.git] / Tools / qmake / mkspecs / features / default_pre.prf
1 # -------------------------------------------------------------------
2 # QtWebKit defaults for qmake. These rules are parsed before the
3 # actual project file.
4 #
5 # See 'Tools/qmake/README' for an overview of the build system
6 # -------------------------------------------------------------------
7
8 load(functions)
9
10 # Derived sources often need QMAKE_MOC
11 load(qt_functions)
12 load(moc)
13
14 # FIXME: In this case we probably want to exit early so that we
15 # don't load all of the custom build tweaks needlessly.
16 pro_file = $$_PRO_FILE_ # Checking the variable directly does not work
17 isEmpty(pro_file): CONFIG += recursive_include
18
19 # We default to release builds
20 !build_pass {
21     CONFIG += release
22     CONFIG -= debug
23 }
24
25 # Resolve root directories for source and build
26 ROOT_WEBKIT_DIR = $$replace(PWD, /Tools/qmake/mkspecs/features$,)
27 WEBKIT_SUBDIR = $$replace(_PRO_FILE_PWD_, $${ROOT_WEBKIT_DIR},)
28 ROOT_BUILD_DIR = $$replace(OUT_PWD, $${WEBKIT_SUBDIR}$,)
29
30 # Detect if we're running the initial configure step
31 pro_file_name = $$basename(_PRO_FILE_)
32 equals(pro_file_name, configure.pro): CONFIG += configure_pass
33
34 # We want the QtWebKit API forwarding includes to live in the root build dir,
35 # except when we are running the config.tests in Tools/qmake.
36 !configure_pass: QMAKE_SYNCQT_OUTDIR = $$ROOT_BUILD_DIR
37
38 # Load Qt's defaults after we've resolved the build directory. This will also
39 # run syncqt if there is a sync.profile in the $$_PRO_FILE_PWD_. We never want
40 # to enable Qt's concept of a developer-build, since we take care of installing
41 # our own module file. See api.pri for details about how we utilize this.
42 old_qtdir=$$QTDIR
43 QTDIR=no-developer-build-please
44 load(default_pre)
45 QTDIR=$$old_qtdir
46
47 unix:config_gccdepends {
48     # We have a compiler that supports the -MD option (and neither
49     # teambuilder nor icecream is messing up the .d file output).
50     CONFIG += GNUmake gcc_MD_depends
51 }
52
53 equals(OUT_PWD, $${ROOT_BUILD_DIR}) {
54     !recursive_include:CONFIG += root_project_file
55     BUILD_ROOT_RELATIVE_TO_OUT_PWD = .
56 } else {
57     subdir_parts = $$replace(OUT_PWD, ^$${ROOT_BUILD_DIR}$${QMAKE_DIR_SEP},)
58     subdir_parts = $$split(subdir_parts, $${QMAKE_DIR_SEP})
59     for(subdir, subdir_parts) {
60         BUILD_ROOT_RELATIVE_TO_OUT_PWD += ..
61     }
62     BUILD_ROOT_RELATIVE_TO_OUT_PWD = $$join(BUILD_ROOT_RELATIVE_TO_OUT_PWD, $${QMAKE_DIR_SEP})
63 }
64
65 # Try to detect if we're running under Windows cmd.exe or not
66 win32* {
67     pwd = $$(PWD) # Normally empty for cmd.exe
68     pwd_starts_with_slash = $$find(pwd, ^/)
69     isEmpty(pwd_starts_with_slash): CONFIG += win_cmd_shell
70 }
71
72 haveQt(4) {
73     # Make sure QMAKEPATH is set for recursive targets
74     win_cmd_shell: QMAKE_QMAKE = \(set QMAKEPATH=$$(QMAKEPATH)\) && $$QMAKE_QMAKE
75     else: QMAKE_QMAKE = QMAKEPATH=$$(QMAKEPATH) $$QMAKE_QMAKE
76 }
77
78 # Default location of generated sources
79 GENERATED_SOURCES_DESTDIR = generated
80
81 QUOTE = ""
82 DOUBLE_ESCAPED_QUOTE = ""
83 ESCAPE = ""
84 win_cmd_shell {
85     ESCAPE = "^"
86 } else {
87     QUOTE = "\'"
88     DOUBLE_ESCAPED_QUOTE = "\\\'"
89 }
90
91 MAKEFILE_NOOP_COMMAND = @echo -n
92 win32-msvc*: MAKEFILE_NOOP_COMMAND = @echo >NUL
93
94 # Set up a default python version
95 scratchbox: PYTHON = python2.6
96 else: PYTHON = python
97
98 !haveQt(4, 8):!haveQt(5):!recursive_include: error("Building WebKit with Qt versions older than 4.8 is not supported.")
99
100 !haveQt(5):!no_webkit2 {
101     root_project_file {
102         message("Building WebKit2 with Qt versions older than 5.0 is not supported. Disabling WebKit2.")
103         message("Read http://www.mail-archive.com/webkit-qt@lists.webkit.org/msg01674.html for more information.")
104     }
105     CONFIG += no_webkit2
106 }
107
108 haveQt(5): {
109     !haveQtModule(widgets)|!haveQtModule(printsupport) {
110         root_project_file: message("WebKit1 requires the QtWidgets and QtPrintSupport modules. Disabling WebKit1.")
111         CONFIG += no_webkit1
112     }
113 }
114
115 # We use private_tests to detect developer build, since the destdir will
116 # always be our webkit build dir. This might change as configure changes.
117 contains(QT_CONFIG, private_tests): CONFIG += qt_developer_build
118
119 haveQt(4) {
120     # Qt5 will automatically load the module files for us, but for Qt4
121     # we have to do it manually so that the various QT.webkit.foo names
122     # are available.
123     include($${ROOT_WEBKIT_DIR}/Tools/qmake/qt_webkit.pri)
124 }
125
126 # Set some defaults for specific platforms
127 CONFIG += include_webinspector
128
129 # Try to locate sqlite3 source (for WebCore)
130 SQLITE3SRCDIR = $$(SQLITE3SRCDIR)
131 isEmpty(SQLITE3SRCDIR) {
132     haveQt(5): SQLITE3SRCDIR = $$QT.core.sources/../3rdparty/sqlite/
133     else: SQLITE3SRCDIR = $$[QT_INSTALL_PREFIX]/src/3rdparty/sqlite/
134 }
135
136 # --------- Make features available to JSC ------------
137
138 ## Forward enabled feature macros to JavaScript enabled features macros
139 FEATURE_DEFINES_JAVASCRIPT = LANGUAGE_JAVASCRIPT=1
140 v8: FEATURE_DEFINES_JAVASCRIPT += V8_BINDING=1
141
142 for(define, DEFINES) {
143     enabled_feature_define = $$find(define, ^ENABLE_.+=1$)
144     isEmpty(enabled_feature_define): next()
145
146     FEATURE_DEFINES_JAVASCRIPT += $$enabled_feature_define
147 }
148
149 configure_pass {
150     # Save the base config and defines so we can compute the delta between
151     # what features.prf introduced and what was already there.
152     BASE_CONFIG = $$CONFIG
153     BASE_DEFINES = $$DEFINES
154 }