serialize build of qtwebkit and qtwebengine
[mirror/qt/qt5.git] / qt.pro
1 # Create the super cache so modules will add themselves to it.
2 cache(, super)
3
4 CONFIG += build_pass   # hack to disable the .qmake.super auto-add
5 load(qt_build_config)
6 CONFIG -= build_pass   # unhack, as it confuses Qt Creator
7
8 TEMPLATE      = subdirs
9
10 # Extract submodules from .gitmodules.
11 lines = $$cat(.gitmodules, lines)
12 for (line, lines) {
13     mod = $$replace(line, "^\\[submodule \"([^\"]+)\"\\]$", \\1)
14     !equals(mod, $$line) {
15         module = $$mod
16         modules += $$mod
17     } else {
18         prop = $$replace(line, "^$$escape_expand(\\t)([^ =]+) *=.*$", \\1)
19         !equals(prop, $$line) {
20             val = $$replace(line, "^[^=]+= *", )
21             module.$${module}.$$prop = $$split(val)
22         } else {
23             error("Malformed line in .gitmodules: $$line")
24         }
25     }
26 }
27 QMAKE_INTERNAL_INCLUDED_FILES += $$PWD/.gitmodules
28
29 modules = $$sort_depends(modules, module., .depends .recommends .serialize)
30 modules = $$reverse(modules)
31 for (mod, modules) {
32     equals(module.$${mod}.qt, false): \
33         next()
34
35     deps = $$eval(module.$${mod}.depends)
36     recs = $$eval(module.$${mod}.recommends) $$eval(module.$${mod}.serialize)
37     for (d, $$list($$deps $$recs)): \
38         !contains(modules, $$d): \
39             error("'$$mod' depends on undeclared '$$d'.")
40
41     contains(QT_SKIP_MODULES, $$mod): \
42         next()
43     !isEmpty(QT_BUILD_MODULES):!contains(QT_BUILD_MODULES, $$mod): \
44         next()
45
46     project = $$eval(module.$${mod}.project)
47     isEmpty(project) {
48         !exists($$mod/$${mod}.pro): \
49             next()
50         $${mod}.subdir = $$mod
51     } else {
52         !exists($$mod/$$project): \
53             next()
54         $${mod}.file = $$mod/$$project
55         $${mod}.makefile = Makefile
56     }
57     $${mod}.target = module-$$mod
58
59     for (d, deps) {
60         !contains(SUBDIRS, $$d) {
61             $${mod}.target =
62             break()
63         }
64         $${mod}.depends += $$d
65     }
66     isEmpty($${mod}.target): \
67         next()
68     for (d, recs) {
69         contains(SUBDIRS, $$d): \
70             $${mod}.depends += $$d
71     }
72
73     SUBDIRS += $$mod
74 }