From 4f57130f3cf27a397d04a5f6fe468e8e1108034d Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Wed, 2 Apr 2008 15:38:23 +0000 Subject: [PATCH] Pimping the build system to not crap out when parallel makes are used. Kudos to bhughes and QtCentre for telling me about undocumented qmake options to specify inter-subdir deps. Minus points for the people who think that qmake documentation is not necessary and can be omitted :p --- build/quassel.pro | 61 ++++++++++------------ build/targets/{monolithic.pri => mono.pri} | 0 build/targets/{monolithic.pro => mono.pro} | 2 +- build/targets/target.pri | 2 +- src/client/client.pri | 1 + src/common/common.pri | 1 + src/core/core.pri | 1 + src/qtui/qtui.pri | 2 +- version.inc | 4 +- 9 files changed, 35 insertions(+), 39 deletions(-) rename build/targets/{monolithic.pri => mono.pri} (100%) rename build/targets/{monolithic.pro => mono.pro} (80%) diff --git a/build/quassel.pro b/build/quassel.pro index 33c25b2a..6dce1c0a 100644 --- a/build/quassel.pro +++ b/build/quassel.pro @@ -13,49 +13,42 @@ # # NOTE: To change the build configuration, you have to run 'make distclean' first! - -# Set project-wide config options - -#CONFIG = qt warn_on release - TEMPLATE = subdirs -# Check build configuration -isEmpty(BUILD) { - BUILD = all # build everything by default -} - -contains(BUILD, all) { - BUILD += qtclient core mono -} +TARGETS = qtclient core mono -contains(BUILD, mono) { - include(targets/monolithic.pri) - BUILD_MODS *= $${MODULES} - BUILD_TARGETS *= monolithic -} - -contains(BUILD, core) { - include(targets/core.pri) - BUILD_MODS *= $${MODULES} - BUILD_TARGETS *= core -} +# Check build configuration +isEmpty(BUILD): BUILD = all # build everything by default +contains(BUILD, all): BUILD = $${TARGETS} -contains(BUILD, qtclient) { - include(targets/qtclient.pri) +# Find modules and targets to build +for(target, TARGETS): contains(BUILD, $$target) { + include(targets/$${target}.pri) BUILD_MODS *= $${MODULES} - BUILD_TARGETS *= qtclient + BUILD_TARGETS *= $$target } -# First we build contrib stuff... -# SUBDIRS += contrib/libqxt.pro # no deps to libqxt at the moment - -# Then we build all needed modules... +# Now add modules and their deps for(mod, BUILD_MODS) { - SUBDIRS += modules/$${mod}.pro + include(../src/$${mod}/$${mod}.pri) + SUBDIRS += mod_$${mod} + eval(mod_$${mod}.file = modules/$${mod}.pro) + eval(mod_$${mod}.makefile = Makefile.mod_$${mod}) # This prevents distclean from removing our Makefile -_- + for(dep, DEPMOD): eval(mod_$${mod}.depends += mod_$${dep}) + export(mod_$${mod}.file) + export(mod_$${mod}.makefile) + export(mod_$${mod}.depends) } -# ... followed by the binaries. +# Same with targets for(target, BUILD_TARGETS) { - SUBDIRS += targets/$${target}.pro + include(targets/$${target}.pri) + SUBDIRS += $${target} + eval($${target}.file = targets/$${target}.pro) + eval($${target}.makefile = Makefile.target_$${target}) + for(mod, MODULES): eval($${target}.depends += mod_$${mod}) + export($${target}.file) + export($${target}.makefile) + export($${target}.depends) } + diff --git a/build/targets/monolithic.pri b/build/targets/mono.pri similarity index 100% rename from build/targets/monolithic.pri rename to build/targets/mono.pri diff --git a/build/targets/monolithic.pro b/build/targets/mono.pro similarity index 80% rename from build/targets/monolithic.pro rename to build/targets/mono.pro index 3c356681..10f86556 100644 --- a/build/targets/monolithic.pro +++ b/build/targets/mono.pro @@ -1,4 +1,4 @@ -include(monolithic.pri) +include(mono.pri) include(target.pri) RESOURCES *= ../../src/icons/icons.qrc diff --git a/build/targets/target.pri b/build/targets/target.pri index 48ed6e55..428daeff 100644 --- a/build/targets/target.pri +++ b/build/targets/target.pri @@ -19,7 +19,7 @@ linux-g++:static { for(mod, MODULES) { INCLUDEPATH *= $$SRCPATH/$$mod LIBS *= -L../modules/$$dirname(mod) -l$$basename(mod) - PRE_TARGETDEPS *= ../modules/$$mod + #PRE_TARGETDEPS *= ../modules/$$mod } PRE_TARGETDEPS *= ../../version.inc diff --git a/src/client/client.pri b/src/client/client.pri index 726690ca..d16cec37 100644 --- a/src/client/client.pri +++ b/src/client/client.pri @@ -1,5 +1,6 @@ DEPMOD = common QT_MOD = core network gui + SRCS += buffer.cpp buffersettings.cpp clientbacklogmanager.cpp treemodel.cpp networkmodel.cpp buffermodel.cpp client.cpp clientsettings.cpp clientsyncer.cpp \ mappedselectionmodel.cpp selectionmodelsynchronizer.cpp HDRS += buffer.h buffersettings.h clientbacklogmanager.h treemodel.h networkmodel.h buffermodel.h client.h clientsettings.h clientsyncer.h quasselui.h \ diff --git a/src/common/common.pri b/src/common/common.pri index 7326b76a..0942f1a3 100644 --- a/src/common/common.pri +++ b/src/common/common.pri @@ -1,5 +1,6 @@ DEPMOD = QT_MOD = network + SRCS += backlogmanager.cpp bufferinfo.cpp buffersyncer.cpp bufferviewconfig.cpp bufferviewmanager.cpp global.cpp identity.cpp \ logger.cpp message.cpp settings.cpp signalproxy.cpp syncableobject.cpp \ util.cpp network.cpp ircuser.cpp ircchannel.cpp diff --git a/src/core/core.pri b/src/core/core.pri index 78087d1a..d2025452 100644 --- a/src/core/core.pri +++ b/src/core/core.pri @@ -1,5 +1,6 @@ DEPMOD = common QT_MOD = core network sql script + SRCS = core.cpp corebacklogmanager.cpp corebufferviewconfig.cpp corebufferviewmanager.cpp coresession.cpp coresettings.cpp networkconnection.cpp sqlitestorage.cpp abstractsqlstorage.cpp storage.cpp basichandler.cpp \ ircserverhandler.cpp userinputhandler.cpp ctcphandler.cpp coreusersettings.cpp sessionthread.cpp sslserver.cpp HDRS = core.h corebacklogmanager.h corebufferviewconfig.h corebufferviewmanager.h coresession.h coresettings.h networkconnection.h sqlitestorage.h abstractsqlstorage.h storage.h basichandler.h \ diff --git a/src/qtui/qtui.pri b/src/qtui/qtui.pri index e410de45..abd785ea 100644 --- a/src/qtui/qtui.pri +++ b/src/qtui/qtui.pri @@ -1,4 +1,4 @@ -DEPMOD = uisupport common client +DEPMOD = client common uisupport QT_MOD = core gui network SRCS += aboutdlg.cpp bufferwidget.cpp chatitem.cpp chatline.cpp chatline-old.cpp chatscene.cpp chatview.cpp chatwidget.cpp \ diff --git a/version.inc b/version.inc index 5017273c..a5be41b0 100644 --- a/version.inc +++ b/version.inc @@ -4,8 +4,8 @@ { using namespace Global; quasselVersion = "0.2.0-alpha5-pre"; - quasselDate = "2008-04-01"; - quasselBuild = 685; + quasselDate = "2008-04-02"; + quasselBuild = 686; //! Minimum client build number the core needs clientBuildNeeded = 642; -- 2.20.1