From aeed8ce504b47985ef317f2cfcd6f715916303fb Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 20 Feb 2013 10:33:49 +0100 Subject: semi-automate adding submodules this way adding a module actually becomes a one-liner Change-Id: Ie31039d36e948094c3ec241758eaab330304b194 Reviewed-by: Simon Hausmann --- qt.pro | 159 +++++++++++++++++++++-------------------------------------------- 1 file changed, 50 insertions(+), 109 deletions(-) (limited to 'qt.pro') diff --git a/qt.pro b/qt.pro index 0d118de0..9614e433 100644 --- a/qt.pro +++ b/qt.pro @@ -5,121 +5,62 @@ TEMPLATE = subdirs CONFIG += prepare_docs qt_docs_targets testcase_targets -module_qtbase.subdir = qtbase -module_qtbase.target = module-qtbase - -module_qtsvg.subdir = qtsvg -module_qtsvg.target = module-qtsvg -module_qtsvg.depends = module_qtbase - -module_qtxmlpatterns.subdir = qtxmlpatterns -module_qtxmlpatterns.target = module-qtxmlpatterns -module_qtxmlpatterns.depends = module_qtbase - -module_qtscript.subdir = qtscript -module_qtscript.target = module-qtscript -module_qtscript.depends = module_qtbase - -module_qtjsbackend.subdir = qtjsbackend -module_qtjsbackend.target = module-qtjsbackend -module_qtjsbackend.depends = module_qtbase - -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 +defineReplace(moduleName) { + return(module_$$replace(1, -, _)) +} -module_qtmultimedia.subdir = qtmultimedia -module_qtmultimedia.target = module-qtmultimedia -module_qtmultimedia.depends = module_qtbase +# Arguments: module name, [mandatory deps], [optional deps], [project file] +defineTest(addModule) { + mod = $$moduleName($$1) + + 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_qtimageformats.subdir = qtimageformats -module_qtimageformats.target = module-qtimageformats -module_qtimageformats.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_qtquick1.subdir = qtquick1 -module_qtquick1.target = module-qtquick1 -module_qtquick1.depends = module_qtbase module_qtscript + $${mod}.target = module-$$1 + export($${mod}.target) -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) -- cgit v1.2.3