d647f2a1d5a9e49fdc59e5b7e62cc4e47c38202b
[WebKit-https.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 # FIXME: In this case we probably want to exit early so that we
11 # don't load all of the custom build tweaks needlessly.
12 pro_file = $$_PRO_FILE_ # Checking the variable directly does not work
13 isEmpty(pro_file): CONFIG += recursive_include
14
15 # We default to release builds
16 !build_pass {
17     CONFIG += release
18     CONFIG -= debug
19 }
20
21 # Resolve root directories for source and build
22 ROOT_WEBKIT_DIR = $$replace(IN_PWD, /Tools/qmake/mkspecs/features,)
23 WEBKIT_SUBDIR = $$replace(_PRO_FILE_PWD_, $${ROOT_WEBKIT_DIR},)
24 ROOT_BUILD_DIR = $$replace(OUT_PWD, $$SOURCE_SUBDIR,)
25
26 # Fix up root build dir in case of running qmake on a subtarget
27 subdir_parts = $$split(WEBKIT_SUBDIR, $${QMAKE_DIR_SEP})
28 root_build_dir_candidate = $$ROOT_BUILD_DIR
29
30 for(ever) {
31     part = $$last(subdir_parts)
32
33     root_build_dir_candidate = $$replace(ROOT_BUILD_DIR, $${QMAKE_DIR_SEP}$${part}$,)
34     !equals(ROOT_BUILD_DIR, $$root_build_dir_candidate) {
35         ROOT_BUILD_DIR = $$root_build_dir_candidate
36     } else {
37         BUILD_SUBDIR = $$subdir_parts
38         break()
39     }
40
41     subdir_parts = $$member(subdir_parts, 0, -2)
42     isEmpty(subdir_parts): break()
43 }
44
45 BUILD_SUBDIR = $$join(BUILD_SUBDIR, $${QMAKE_DIR_SEP})
46
47 # We want the QtWebKit API forwarding includes to live in the root build dir,
48 # except when we are running the config.tests in Tools/qmake.
49 pro_file_name = $$basename(_PRO_FILE_)
50 !equals(pro_file_name, configure.pro): QMAKE_SYNCQT_OUTDIR = $$ROOT_BUILD_DIR
51
52 load(default_pre) # Load Qt's defaults after we've resolved the build directory
53
54 equals(OUT_PWD, $${ROOT_BUILD_DIR}) {
55     !recursive_include:CONFIG += root_project_file
56     BUILD_ROOT_RELATIVE_TO_OUT_PWD = .
57 } else {
58     subdir_parts = $$replace(OUT_PWD, ^$${ROOT_BUILD_DIR}$${QMAKE_DIR_SEP},)
59     subdir_parts = $$split(subdir_parts, $${QMAKE_DIR_SEP})
60     for(subdir, subdir_parts) {
61         BUILD_ROOT_RELATIVE_TO_OUT_PWD += ..
62     }
63     BUILD_ROOT_RELATIVE_TO_OUT_PWD = $$join(BUILD_ROOT_RELATIVE_TO_OUT_PWD, $${QMAKE_DIR_SEP})
64 }
65
66 # Make sure QMAKEPATH is set for recursive targets
67 win32-msvc*: QMAKE_QMAKE = \(set QMAKEPATH=$$(QMAKEPATH)\) && $$QMAKE_QMAKE
68 else: QMAKE_QMAKE = QMAKEPATH=$$(QMAKEPATH) $$QMAKE_QMAKE
69
70 # Default location of generated sources
71 GENERATED_SOURCES_DESTDIR = generated
72
73 QUOTE = ""
74 DOUBLE_ESCAPED_QUOTE = ""
75 ESCAPE = ""
76 win32-msvc* {
77     ESCAPE = "^"
78 } else:win32-g++*:isEmpty(QMAKE_SH) {
79     # MinGW's make will run makefile commands using sh, even if make
80     # was run from the Windows shell, if it finds sh in the path.
81     ESCAPE = "^"
82 } else {
83     QUOTE = "\'"
84     DOUBLE_ESCAPED_QUOTE = "\\\'"
85 }
86
87 MAKEFILE_NOOP_COMMAND = @echo -n
88 win32-msvc*: MAKEFILE_NOOP_COMMAND = @echo >NUL
89
90 # Set up a default python version
91 scratchbox: PYTHON = python2.6
92 else: PYTHON = python
93
94 !haveQt(4, 8):!haveQt(5):!recursive_include: error("Building WebKit with Qt versions older than 4.8 is not supported.")
95
96 !haveQt(5):!no_webkit2 {
97     root_project_file {
98         message("Building WebKit2 with Qt versions older than 5.0 is not supported. Disabling WebKit2.")
99         message("Read http://www.mail-archive.com/webkit-qt@lists.webkit.org/msg01674.html for more information.")
100     }
101     CONFIG += no_webkit2
102 }
103
104 haveQt(5): {
105     isEmpty(QT.widgets.name)|isEmpty(QT.printsupport.name) {
106         root_project_file: error("Building WebKit against Qt 5.0 requires the QtWidgets and QtPrintSupport modules.")
107     }
108 }
109
110 QT.webkit.modulefile = $${ROOT_WEBKIT_DIR}/Tools/qmake/mkspecs/modules/qt_webkit.pri
111 include($$QT.webkit.modulefile)
112 VERSION = $${QT.webkit.VERSION}
113
114 # Set some defaults for specific platforms
115 CONFIG += include_webinspector