error-check dependency declarations
[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 defineReplace(moduleName) {
11     return(module_$$replace(1, -, _))
12 }
13
14 # Arguments: module name, [mandatory deps], [optional deps], [project file]
15 defineTest(addModule) {
16     for(d, $$list($$2 $$3)): \
17         !contains(MODULES, $$d): \
18             error("'$$1' depends on not (yet) declared '$$d'.")
19     MODULES += $$1
20     export(MODULES)
21
22     contains(QT_SKIP_MODULES, $$1): return(false)
23     !isEmpty(QT_BUILD_MODULES):!contains(QT_BUILD_MODULES, $$1): return(false)
24     mod = $$moduleName($$1)
25
26     isEmpty(4) {
27         !exists($$1/$${1}.pro): return(false)
28         $${mod}.subdir = $$1
29         export($${mod}.subdir)
30     } else {
31         !exists($$1/$${4}): return(false)
32         $${mod}.file = $$1/$$4
33         $${mod}.makefile = Makefile
34         export($${mod}.file)
35         export($${mod}.makefile)
36     }
37
38     for(d, 2) {
39         dn = $$moduleName($$d)
40         !contains(SUBDIRS, $$dn): \
41             return(false)
42         $${mod}.depends += $$dn
43     }
44     for(d, 3) {
45         dn = $$moduleName($$d)
46         contains(SUBDIRS, $$dn): \
47             $${mod}.depends += $$dn
48     }
49     !isEmpty($${mod}.depends): \
50         export($${mod}.depends)
51
52     $${mod}.target = module-$$1
53     export($${mod}.target)
54
55     SUBDIRS += $$mod
56     export(SUBDIRS)
57     return(true)
58 }
59
60 # only qtbase is required to exist. The others may not - but it is the
61 # users responsibility to ensure that all needed dependencies exist, or
62 # it may not build.
63
64 ANDROID_EXTRAS =
65 android: ANDROID_EXTRAS = qtandroidextras
66
67 addModule(qtbase)
68 addModule(qtandroidextras, qtbase)
69 addModule(qtmacextras, qtbase)
70 addModule(qtx11extras, qtbase)
71 addModule(qtsvg, qtbase)
72 addModule(qtxmlpatterns, qtbase)
73 addModule(qtdeclarative, qtbase, qtsvg qtxmlpatterns)
74 addModule(qtgraphicaleffects, qtdeclarative)
75 addModule(qtquickcontrols, qtdeclarative, qtgraphicaleffects)
76 addModule(qtquickcontrols2, qtquickcontrols)
77 addModule(qtmultimedia, qtbase, qtdeclarative)
78 addModule(qtwinextras, qtbase, qtdeclarative qtmultimedia)
79 addModule(qtactiveqt, qtbase)
80 addModule(qtsystems, qtbase, qtdeclarative)
81 addModule(qtsensors, qtbase, qtdeclarative)
82 addModule(qtconnectivity, qtbase $$ANDROID_EXTRAS, qtdeclarative)
83 addModule(qtfeedback, qtdeclarative, qtmultimedia)
84 addModule(qtpim, qtdeclarative)
85 addModule(qtwebsockets, qtbase, qtdeclarative)
86 addModule(qtwebchannel, qtbase, qtdeclarative qtwebsockets)
87 addModule(qtserialport, qtbase)
88 addModule(qtlocation, qtbase, qtdeclarative qtquickcontrols qtserialport qtsystems)
89 addModule(qtwebkit, qtbase, qtdeclarative qtlocation qtmultimedia qtsensors qtwebchannel qtxmlpatterns, WebKit.pro)
90 addModule(qttools, qtbase, qtdeclarative qtactiveqt qtwebkit)
91 addModule(qtwebkit-examples, qtwebkit qttools)
92 addModule(qtimageformats, qtbase)
93 addModule(qt3d, qtdeclarative qtimageformats)
94 addModule(qtcanvas3d, qtdeclarative)
95 addModule(qtscript, qtbase, qttools)
96 addModule(qtquick1, qtscript, qtsvg qtxmlpatterns)
97 addModule(qtdocgallery, qtdeclarative)
98 addModule(qtwayland, qtbase, qtdeclarative)
99 addModule(qtserialbus, qtserialport)
100 addModule(qtenginio, qtdeclarative)
101 addModule(qtwebengine, qtquickcontrols qtwebchannel, qtlocation)
102 addModule(qtwebview, qtdeclarative, qtwebengine)
103 addModule(qtpurchasing, qtbase, qtdeclarative)
104 addModule(qttranslations, qttools)
105 addModule(qtdoc, qtdeclarative)
106 addModule(qtqa, qtbase)