semi-automate adding submodules

this way adding a module actually becomes a one-liner

Change-Id: Ie31039d36e948094c3ec241758eaab330304b194
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
This commit is contained in:
Oswald Buddenhagen
2013-02-20 10:33:49 +01:00
committed by The Qt Project
parent 0089431326
commit aeed8ce504

157
qt.pro
View File

@@ -5,121 +5,62 @@ TEMPLATE = subdirs
CONFIG += prepare_docs qt_docs_targets testcase_targets
module_qtbase.subdir = qtbase
module_qtbase.target = module-qtbase
defineReplace(moduleName) {
return(module_$$replace(1, -, _))
}
module_qtsvg.subdir = qtsvg
module_qtsvg.target = module-qtsvg
module_qtsvg.depends = module_qtbase
# Arguments: module name, [mandatory deps], [optional deps], [project file]
defineTest(addModule) {
mod = $$moduleName($$1)
module_qtxmlpatterns.subdir = qtxmlpatterns
module_qtxmlpatterns.target = module-qtxmlpatterns
module_qtxmlpatterns.depends = module_qtbase
isEmpty(4) {
!exists($$1/$${1}.pro): return(false)
$${mod}.subdir = $$1
export($${mod}.subdir)
} else {
!exists($$1/$${4}): return(false)
$${mod}.file = $$1/$$4
$${mod}.makefile = Makefile
export($${mod}.file)
export($${mod}.makefile)
}
module_qtscript.subdir = qtscript
module_qtscript.target = module-qtscript
module_qtscript.depends = module_qtbase
for(d, 2): \
$${mod}.depends += $$moduleName($$d)
for(d, 3) {
dn = $$moduleName($$d)
contains(SUBDIRS, $$dn): \
$${mod}.depends += $$dn
}
!isEmpty($${mod}.depends): \
export($${mod}.depends)
module_qtjsbackend.subdir = qtjsbackend
module_qtjsbackend.target = module-qtjsbackend
module_qtjsbackend.depends = module_qtbase
$${mod}.target = module-$$1
export($${mod}.target)
module_qtdeclarative.subdir = qtdeclarative
module_qtdeclarative.target = module-qtdeclarative
module_qtdeclarative.depends = module_qtbase module_qtjsbackend
module_qtwebkit.file = qtwebkit/WebKit.pro
module_qtwebkit.makefile = Makefile
module_qtwebkit.depends = module_qtbase module_qtdeclarative
module_qtwebkit.target = module-qtwebkit
module_qtwebkit_examples_and_demos.subdir = qtwebkit-examples-and-demos
module_qtwebkit_examples_and_demos.target = module-qtwebkit-examples-and-demos
module_qtwebkit_examples_and_demos.depends = module_qtwebkit module_qttools
module_qttools.subdir = qttools
module_qttools.target = module-qttools
module_qttools.depends = module_qtbase
module_qttranslations.subdir = qttranslations
module_qttranslations.target = module-qttranslations
module_qttranslations.depends = module_qttools
module_qtdoc.subdir = qtdoc
module_qtdoc.target = module-qtdoc
module_qtdoc.depends = module_qtbase module_qtdeclarative
module_qtactiveqt.subdir = qtactiveqt
module_qtactiveqt.target = module-qtactiveqt
module_qtactiveqt.depends = module_qtbase
module_qtqa.subdir = qtqa
module_qtqa.target = module-qtqa
module_qtqa.depends = module_qtbase
module_qtmultimedia.subdir = qtmultimedia
module_qtmultimedia.target = module-qtmultimedia
module_qtmultimedia.depends = module_qtbase
module_qtimageformats.subdir = qtimageformats
module_qtimageformats.target = module-qtimageformats
module_qtimageformats.depends = module_qtbase
module_qtquick1.subdir = qtquick1
module_qtquick1.target = module-qtquick1
module_qtquick1.depends = module_qtbase module_qtscript
module_qtgraphicaleffects.subdir = qtgraphicaleffects
module_qtgraphicaleffects.target = module-qtgraphicaleffects
module_qtgraphicaleffects.depends = module_qtbase module_qtdeclarative
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.
SUBDIRS = module_qtbase
exists(qtsvg/qtsvg.pro) {
SUBDIRS += module_qtsvg
# These modules do not require qtsvg, but can use it if it is available
module_qtdeclarative.depends += module_qtsvg
module_qtquick1.depends += module_qtsvg
}
exists(qtxmlpatterns/qtxmlpatterns.pro) {
SUBDIRS += module_qtxmlpatterns
# These modules do not require qtxmlpatterns, but can use it if it is available
module_qtdeclarative.depends += module_qtxmlpatterns
module_qtquick1.depends += module_qtxmlpatterns
}
exists(qtjsbackend/qtjsbackend.pro): SUBDIRS += module_qtjsbackend
exists(qtdeclarative/qtdeclarative.pro) {
SUBDIRS += module_qtdeclarative
# These modules do not require qtdeclarative, but can use it if it is available
module_qttools.depends += module_qtdeclarative
module_qtmultimedia.depends += module_qtdeclarative
}
exists(qtscript/qtscript.pro): SUBDIRS += module_qtscript
exists(qtmultimedia/qtmultimedia.pro): SUBDIRS += module_qtmultimedia
exists(qtactiveqt/qtactiveqt.pro) {
SUBDIRS += module_qtactiveqt
module_qttools.depends += module_qtactiveqt
}
exists(qtwebkit/WebKit.pro) {
SUBDIRS += module_qtwebkit
module_qttools.depends += module_qtwebkit
module_qtquick1.depends += module_qtwebkit
exists(qtwebkit-examples-and-demos/qtwebkit-examples-and-demos.pro) {
SUBDIRS += module_qtwebkit_examples_and_demos
}
}
exists(qttools/qttools.pro) {
SUBDIRS += module_qttools
module_qtquick1.depends += module_qttools
}
exists(qtquick1/qtquick1.pro): SUBDIRS += module_qtquick1
exists(qtimageformats/qtimageformats.pro): SUBDIRS += module_qtimageformats
exists(qtgraphicaleffects/qtgraphicaleffects.pro): SUBDIRS += module_qtgraphicaleffects
exists(qttranslations/qttranslations.pro): SUBDIRS += module_qttranslations
exists(qtdoc/qtdoc.pro): SUBDIRS += module_qtdoc
exists(qtqa/qtqa.pro): SUBDIRS += module_qtqa
addModule(qtbase)
addModule(qtsvg, qtbase)
addModule(qtxmlpatterns, qtbase)
addModule(qtjsbackend, qtbase)
addModule(qtdeclarative, qtjsbackend, qtsvg qtxmlpatterns)
addModule(qtmultimedia, qtbase, qtdeclarative)
addModule(qtactiveqt, qtbase)
addModule(qtwebkit, qtdeclarative, , WebKit.pro)
addModule(qttools, qtbase, qtdeclarative qtactiveqt qtwebkit)
addModule(qtwebkit-examples-and-demos, qtwebkit qttools)
addModule(qtimageformats, qtbase)
addModule(qtgraphicaleffects, qtdeclarative)
addModule(qtscript, qtbase)
addModule(qtquick1, qtscript, qtsvg qtxmlpatterns qtwebkit qttools)
addModule(qttranslations, qttools)
addModule(qtdoc, qtdeclarative)
addModule(qtqa, qtbase)