summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-05-18 16:59:22 +0200
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-06-19 16:46:05 +0200
commit2bbd50c6e4b33b342f4d69c587c07afc964a9cb2 (patch)
treead37a88ff04abea2d3d8719fcd4446b4cd4b4b6f /qmake
parent76ed07168d059c16c6610a83be52dbb7a8ea3b28 (diff)
make 'qmake_all' target of SUBDIRS projects properly recursive
so far it would rebuild the makefiles one level down only, which is somewhat arbitrary and not really helpful. Change-Id: I5fe01f379ecc4b210610a674d7df7dfc18131eef Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'qmake')
-rw-r--r--qmake/generators/makefile.cpp26
-rw-r--r--qmake/generators/makefile.h2
2 files changed, 21 insertions, 7 deletions
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index 2b63a14906..131bbb5303 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -2413,6 +2413,8 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
<< QString((flags & SubTargetInstalls) ? "uninstall_subtargets" : "uninstall");
}
+ bool dont_recurse = project->isActiveConfig("dont_recurse");
+
// generate target rules
for(int target = 0; target < targets.size(); ++target) {
SubTarget *subtarget = targets.at(target);
@@ -2453,6 +2455,8 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
MAKE_CD_IN_AND_OUT(in_directory);
MAKE_CD_IN_AND_OUT(out_directory);
+ QString makefilein = " -f " + subtarget->makefile;
+
//qmake it
if(!subtarget->profile.isEmpty()) {
QString out = subtarget->makefile;
@@ -2476,14 +2480,16 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
t << mkdir_p_asstring(out_directory)
<< out_directory_cdin
<< "$(QMAKE) " << in << buildArgs(in_directory) << " -o " << out
- << in_directory_cdout << endl;
+ << in_directory_cdout;
} else {
- t << "$(QMAKE) " << in << buildArgs(in_directory) << " -o " << out << endl;
+ t << "$(QMAKE) " << in << buildArgs(in_directory) << " -o " << out;
}
+ if (!dont_recurse)
+ writeSubMakeCall(t, out_directory_cdin, makefilein + " qmake_all", out_directory_cdout);
+ else
+ t << endl;
}
- QString makefilein = " -f " + subtarget->makefile;
-
{ //actually compile
t << subtarget->target << ": " << mkfile;
if(!subtarget->depends.isEmpty())
@@ -2522,7 +2528,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
t << endl;
if (!(flags & SubTargetSkipDefaultTargets)) {
- writeMakeQmake(t);
+ writeMakeQmake(t, true);
t << "qmake_all:";
if(!targets.isEmpty()) {
@@ -2674,7 +2680,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
}
void
-MakefileGenerator::writeMakeQmake(QTextStream &t)
+MakefileGenerator::writeMakeQmake(QTextStream &t, bool noDummyQmakeAll)
{
QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName()));
if(project->isEmpty("QMAKE_FAILED_REQUIREMENTS") && !project->isEmpty("QMAKE_INTERNAL_PRL_FILE")) {
@@ -2712,6 +2718,14 @@ MakefileGenerator::writeMakeQmake(QTextStream &t)
if(project->isEmpty("QMAKE_NOFORCE"))
t << " FORCE";
t << "\n\t" << "@" << qmake << endl << endl;
+ if (!noDummyQmakeAll) {
+ t << "qmake_all:";
+ if (project->isEmpty("QMAKE_NOFORCE"))
+ t << " FORCE";
+ if (project->isActiveConfig("no_empty_targets"))
+ t << "\n\t" << "@cd .";
+ t << endl << endl;
+ }
}
}
}
diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h
index a4ec259bb0..64ed2dd30a 100644
--- a/qmake/generators/makefile.h
+++ b/qmake/generators/makefile.h
@@ -97,7 +97,7 @@ protected:
void writeInstalls(QTextStream &t, const QString &installs, bool noBuild=false);
void writeHeader(QTextStream &t);
void writeSubDirs(QTextStream &t);
- void writeMakeQmake(QTextStream &t);
+ void writeMakeQmake(QTextStream &t, bool noDummyQmakeAll = false);
void writeExtraVariables(QTextStream &t);
void writeExtraTargets(QTextStream &t);
void writeExtraCompilerTargets(QTextStream &t);