aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitattributes1
-rw-r--r--.gitmodules65
-rw-r--r--qt.pro133
3 files changed, 117 insertions, 82 deletions
diff --git a/.gitattributes b/.gitattributes
index df15048e..084cdfd6 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,7 +1,6 @@
.tag export-subst
.gitignore export-ignore
.gitattributes export-ignore
-.gitmodules export-ignore
.commit-template export-ignore
init-repository export-ignore
README.git export-ignore
diff --git a/.gitmodules b/.gitmodules
index 211c331c..49c27df9 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,193 +4,258 @@
branch = 5.6
initrepo = true
[submodule "qtsvg"]
+ depends = qtbase
path = qtsvg
url = ../qtsvg.git
branch = 5.6
initrepo = true
[submodule "qtdeclarative"]
+ depends = qtbase
+ recommends = qtsvg qtxmlpatterns
path = qtdeclarative
url = ../qtdeclarative.git
branch = 5.6
initrepo = true
[submodule "qtactiveqt"]
+ depends = qtbase
path = qtactiveqt
url = ../qtactiveqt.git
branch = 5.6
initrepo = true
[submodule "qtscript"]
+ depends = qtbase
+ recommends = qttools
path = qtscript
url = ../qtscript.git
branch = 5.6
initrepo = true
[submodule "qtmultimedia"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtmultimedia
url = ../qtmultimedia.git
branch = 5.6
initrepo = true
[submodule "qttools"]
+ depends = qtbase
+ recommends = qtdeclarative qtactiveqt qtwebkit
path = qttools
url = ../qttools.git
branch = 5.6
initrepo = true
[submodule "qtxmlpatterns"]
+ depends = qtbase
path = qtxmlpatterns
url = ../qtxmlpatterns.git
branch = 5.6
initrepo = true
[submodule "qttranslations"]
+ depends = qttools
path = qttranslations
url = ../qttranslations.git
branch = 5.6
initrepo = true
+ priority = 30
[submodule "qtdoc"]
+ depends = qtdeclarative
path = qtdoc
url = ../qtdoc.git
branch = 5.6
initrepo = true
+ priority = 40
[submodule "qtrepotools"]
path = qtrepotools
url = ../qtrepotools.git
branch = master
initrepo = true
+ qt = false
[submodule "qtwebkit"]
+ depends = qtbase
+ recommends = qtdeclarative qtlocation qtmultimedia qtsensors qtwebchannel qtxmlpatterns
path = qtwebkit
url = ../qtwebkit.git
branch = 5.6
+ project = WebKit.pro
+ priority = 20
[submodule "qtwebkit-examples"]
+ depends = qtwebkit qttools
path = qtwebkit-examples
url = ../qtwebkit-examples.git
branch = 5.6
[submodule "qtqa"]
+ depends = qtbase
path = qtqa
url = ../qtqa.git
branch = master
initrepo = true
+ priority = 50
[submodule "qtlocation"]
+ depends = qtbase
+ recommends = qtdeclarative qtquickcontrols qtserialport qtsystems
path = qtlocation
url = ../qtlocation.git
branch = 5.6
initrepo = true
[submodule "qtsensors"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtsensors
url = ../qtsensors.git
branch = 5.6
initrepo = true
[submodule "qtsystems"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtsystems
url = ../qtsystems.git
branch = dev
[submodule "qtfeedback"]
+ depends = qtdeclarative
+ recommends = qtmultimedia
path = qtfeedback
url = ../qtfeedback.git
branch = master
[submodule "qtdocgallery"]
+ depends = qtdeclarative
path = qtdocgallery
url = ../qtdocgallery.git
branch = master
[submodule "qtpim"]
+ depends = qtdeclarative
path = qtpim
url = ../qtpim.git
branch = dev
[submodule "qtconnectivity"]
+ depends = qtbase
+ recommends = qtdeclarative qtandroidextras
path = qtconnectivity
url = ../qtconnectivity.git
branch = 5.6
initrepo = true
[submodule "qtwayland"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtwayland
url = ../qtwayland.git
branch = 5.6
initrepo = true
[submodule "qt3d"]
+ depends = qtdeclarative qtimageformats
path = qt3d
url = ../qt3d.git
branch = 5.6
initrepo = true
[submodule "qtimageformats"]
+ depends = qtbase
path = qtimageformats
url = ../qtimageformats.git
branch = 5.6
initrepo = true
[submodule "qtquick1"]
+ depends = qtscript
+ recommends = qtsvg qtxmlpatterns
path = qtquick1
url = ../qtquick1.git
branch = 5.6
[submodule "qtgraphicaleffects"]
+ depends = qtdeclarative
path = qtgraphicaleffects
url = ../qtgraphicaleffects.git
branch = 5.6
initrepo = true
[submodule "qtquickcontrols"]
+ depends = qtdeclarative
+ recommends = qtgraphicaleffects
path = qtquickcontrols
url = ../qtquickcontrols.git
branch = 5.6
initrepo = true
[submodule "qtserialbus"]
+ depends = qtserialport
path = qtserialbus
url = ../qtserialbus.git
branch = 5.6
[submodule "qtserialport"]
+ depends = qtbase
path = qtserialport
url = ../qtserialport.git
branch = 5.6
initrepo = true
[submodule "qtx11extras"]
+ depends = qtbase
path = qtx11extras
url = ../qtx11extras.git
branch = 5.6
initrepo = true
[submodule "qtmacextras"]
+ depends = qtbase
path = qtmacextras
url = ../qtmacextras.git
branch = 5.6
initrepo = true
[submodule "qtwinextras"]
+ depends = qtbase
+ recommends = qtdeclarative qtmultimedia
path = qtwinextras
url = ../qtwinextras.git
branch = 5.6
initrepo = true
[submodule "qtandroidextras"]
+ depends = qtbase
path = qtandroidextras
url = ../qtandroidextras.git
branch = 5.6
initrepo = true
[submodule "qtenginio"]
+ depends = qtdeclarative
path = qtenginio
url = ../qtenginio.git
branch = 5.6
initrepo = true
[submodule "qtwebsockets"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtwebsockets
url = ../qtwebsockets.git
branch = 5.6
initrepo = true
[submodule "qtwebchannel"]
+ depends = qtbase
+ recommends = qtdeclarative qtwebsockets
path = qtwebchannel
url = ../qtwebchannel.git
branch = 5.6
initrepo = true
[submodule "qtwebengine"]
+ depends = qtquickcontrols qtwebchannel
+ recommends = qtlocation
path = qtwebengine
url = ../qtwebengine.git
branch = 5.6
initrepo = true
+ priority = 10
[submodule "qtcanvas3d"]
+ depends = qtdeclarative
path = qtcanvas3d
url = ../qtcanvas3d.git
branch = 5.6
initrepo = true
[submodule "qtwebview"]
+ depends = qtdeclarative
+ recommends = qtwebengine
path = qtwebview
url = ../qtwebview.git
branch = 5.6
initrepo = true
[submodule "qtquickcontrols2"]
+ depends = qtquickcontrols
path = qtquickcontrols2
url = ../qtquickcontrols2.git
branch = 5.6
initrepo = true
[submodule "qtpurchasing"]
+ depends = qtbase
+ recommends = qtdeclarative
path = qtpurchasing
url = ../qtpurchasing.git
branch = 5.6
diff --git a/qt.pro b/qt.pro
index 5e168fae..f8d3d4d3 100644
--- a/qt.pro
+++ b/qt.pro
@@ -7,97 +7,68 @@ CONFIG -= build_pass # unhack, as it confuses Qt Creator
TEMPLATE = subdirs
-defineReplace(moduleName) {
- return(module_$$replace(1, -, _))
+# Extract submodules from .gitmodules.
+lines = $$cat(.gitmodules, lines)
+for (line, lines) {
+ mod = $$replace(line, "^\\[submodule \"([^\"]+)\"\\]$", \\1)
+ !equals(mod, $$line) {
+ module = $$mod
+ modules += $$mod
+ } else {
+ prop = $$replace(line, "^$$escape_expand(\\t)([^ =]+) *=.*$", \\1)
+ !equals(prop, $$line) {
+ val = $$replace(line, "^[^=]+= *", )
+ module.$${module}.$$prop = $$split(val)
+ } else {
+ error("Malformed line in .gitmodules: $$line")
+ }
+ }
}
+QMAKE_INTERNAL_INCLUDED_FILES += $$PWD/.gitmodules
+
+modules = $$sort_depends(modules, module., .depends .recommends)
+modules = $$reverse(modules)
+for (mod, modules) {
+ equals(module.$${mod}.qt, false): \
+ next()
-# Arguments: module name, [mandatory deps], [optional deps], [project file]
-defineTest(addModule) {
- for(d, $$list($$2 $$3)): \
- !contains(MODULES, $$d): \
- error("'$$1' depends on not (yet) declared '$$d'.")
- MODULES += $$1
- export(MODULES)
+ deps = $$eval(module.$${mod}.depends)
+ recs = $$eval(module.$${mod}.recommends)
+ for (d, $$list($$deps $$recs)): \
+ !contains(modules, $$d): \
+ error("'$$mod' depends on undeclared '$$d'.")
- contains(QT_SKIP_MODULES, $$1): return(false)
- !isEmpty(QT_BUILD_MODULES):!contains(QT_BUILD_MODULES, $$1): return(false)
- mod = $$moduleName($$1)
+ contains(QT_SKIP_MODULES, $$mod): \
+ next()
+ !isEmpty(QT_BUILD_MODULES):!contains(QT_BUILD_MODULES, $$mod): \
+ next()
- isEmpty(4) {
- !exists($$1/$${1}.pro): return(false)
- $${mod}.subdir = $$1
- export($${mod}.subdir)
+ project = $$eval(module.$${mod}.project)
+ isEmpty(project) {
+ !exists($$mod/$${mod}.pro): \
+ next()
+ $${mod}.subdir = $$mod
} else {
- !exists($$1/$${4}): return(false)
- $${mod}.file = $$1/$$4
+ !exists($$mod/$$project): \
+ next()
+ $${mod}.file = $$mod/$$project
$${mod}.makefile = Makefile
- export($${mod}.file)
- export($${mod}.makefile)
}
+ $${mod}.target = module-$$mod
- for(d, 2) {
- dn = $$moduleName($$d)
- !contains(SUBDIRS, $$dn): \
- return(false)
- $${mod}.depends += $$dn
+ for (d, deps) {
+ !contains(SUBDIRS, $$d) {
+ $${mod}.target =
+ break()
+ }
+ $${mod}.depends += $$d
}
- for(d, 3) {
- dn = $$moduleName($$d)
- contains(SUBDIRS, $$dn): \
- $${mod}.depends += $$dn
+ isEmpty($${mod}.target): \
+ next()
+ for (d, recs) {
+ contains(SUBDIRS, $$d): \
+ $${mod}.depends += $$d
}
- !isEmpty($${mod}.depends): \
- export($${mod}.depends)
-
- $${mod}.target = module-$$1
- export($${mod}.target)
SUBDIRS += $$mod
- export(SUBDIRS)
- return(true)
}
-
-# only qtbase is required to exist. The others may not - but it is the
-# users responsibility to ensure that all needed dependencies exist, or
-# it may not build.
-
-addModule(qtbase)
-addModule(qtandroidextras, qtbase)
-addModule(qtmacextras, qtbase)
-addModule(qtx11extras, qtbase)
-addModule(qtsvg, qtbase)
-addModule(qtxmlpatterns, qtbase)
-addModule(qtdeclarative, qtbase, qtsvg qtxmlpatterns)
-addModule(qtgraphicaleffects, qtdeclarative)
-addModule(qtquickcontrols, qtdeclarative, qtgraphicaleffects)
-addModule(qtquickcontrols2, qtquickcontrols)
-addModule(qtmultimedia, qtbase, qtdeclarative)
-addModule(qtwinextras, qtbase, qtdeclarative qtmultimedia)
-addModule(qtactiveqt, qtbase)
-addModule(qtsystems, qtbase, qtdeclarative)
-addModule(qtsensors, qtbase, qtdeclarative)
-addModule(qtconnectivity, qtbase, qtdeclarative qtandroidextras)
-addModule(qtfeedback, qtdeclarative, qtmultimedia)
-addModule(qtpim, qtdeclarative)
-addModule(qtwebsockets, qtbase, qtdeclarative)
-addModule(qtwebchannel, qtbase, qtdeclarative qtwebsockets)
-addModule(qtserialport, qtbase)
-addModule(qtlocation, qtbase, qtdeclarative qtquickcontrols qtserialport qtsystems)
-addModule(qtwebkit, qtbase, qtdeclarative qtlocation qtmultimedia qtsensors qtwebchannel qtxmlpatterns, WebKit.pro)
-addModule(qttools, qtbase, qtdeclarative qtactiveqt qtwebkit)
-addModule(qtwebkit-examples, qtwebkit qttools)
-addModule(qtimageformats, qtbase)
-addModule(qt3d, qtdeclarative qtimageformats)
-addModule(qtcanvas3d, qtdeclarative)
-addModule(qtscript, qtbase, qttools)
-addModule(qtquick1, qtscript, qtsvg qtxmlpatterns)
-addModule(qtdocgallery, qtdeclarative)
-addModule(qtwayland, qtbase, qtdeclarative)
-addModule(qtserialbus, qtserialport)
-addModule(qtenginio, qtdeclarative)
-addModule(qtwebengine, qtquickcontrols qtwebchannel, qtlocation)
-addModule(qtwebview, qtdeclarative, qtwebengine)
-addModule(qtpurchasing, qtbase, qtdeclarative)
-addModule(qttranslations, qttools)
-addModule(qtdoc, qtdeclarative)
-addModule(qtqa, qtbase)