qmake nmake generator: pass MAKEFLAGS to sub-make calls

Unlike other make tools nmake doesn't do this automatically.

Reviewed-by: ossi
This commit is contained in:
Joerg Bornemann 2011-05-03 09:52:30 +02:00
parent 1287361f64
commit c04b7a55d1
4 changed files with 27 additions and 14 deletions

View File

@ -2376,6 +2376,14 @@ MakefileGenerator::writeSubDirs(QTextStream &t)
qDeleteAll(targets);
}
void MakefileGenerator::writeSubMakeCall(QTextStream &t, const QString &callPrefix,
const QString &makeArguments, const QString &callPostfix)
{
t << callPrefix
<< "$(MAKE)" << makeArguments
<< callPostfix << endl;
}
void
MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubTarget*> targets, int flags)
{
@ -2499,9 +2507,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
t << " " << valList(subtarget->depends);
if(project->isEmpty("QMAKE_NOFORCE"))
t << " FORCE";
t << out_directory_cdin
<< "$(MAKE)" << makefilein
<< out_directory_cdout << endl;
writeSubMakeCall(t, out_directory_cdin, makefilein, out_directory_cdout);
}
for(int suffix = 0; suffix < targetSuffixes.size(); ++suffix) {
@ -2521,9 +2527,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
t << " " << targets.at(target-1)->target << "-" << targetSuffixes.at(suffix) << "-ordered ";
if(project->isEmpty("QMAKE_NOFORCE"))
t << " FORCE";
t << out_directory_cdin
<< "$(MAKE)" << makefilein << " " << s
<< out_directory_cdout << endl;
writeSubMakeCall(t, out_directory_cdin, makefilein, out_directory_cdout);
}
t << subtarget->target << "-" << targetSuffixes.at(suffix) << ": " << mkfile;
if(!subtarget->depends.isEmpty())
@ -2531,9 +2535,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
"-"+targetSuffixes.at(suffix));
if(project->isEmpty("QMAKE_NOFORCE"))
t << " FORCE";
t << out_directory_cdin
<< "$(MAKE)" << makefilein << " " << s
<< out_directory_cdout << endl;
writeSubMakeCall(t, out_directory_cdin, makefilein, out_directory_cdout);
}
}
t << endl;
@ -2671,12 +2673,10 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
//write the commands
if(!out_directory.isEmpty()) {
t << out_directory_cdin
<< "$(MAKE)" << makefilein << " " << sub_targ
<< out_directory_cdout << endl;
writeSubMakeCall(t, out_directory_cdin, makefilein + " " + sub_targ,
out_directory_cdout);
} else {
t << "\n\t"
<< "$(MAKE)" << makefilein << " " << sub_targ << endl;
writeSubMakeCall(t, "\n\t", makefilein + " " + sub_targ, QString());
}
}
}

View File

@ -127,6 +127,8 @@ protected:
SubTargetsNoFlags=0x00
};
QList<MakefileGenerator::SubTarget*> findSubDirsSubTargets() const;
virtual void writeSubMakeCall(QTextStream &t, const QString &outDirectory_cdin,
const QString &makeFileIn, const QString &outDirectory_cdout);
void writeSubTargets(QTextStream &t, QList<SubTarget*> subtargets, int flags);
//extra compiler interface

View File

@ -85,6 +85,15 @@ NmakeMakefileGenerator::writeMakefile(QTextStream &t)
return false;
}
void NmakeMakefileGenerator::writeSubMakeCall(QTextStream &t, const QString &callPrefix,
const QString &makeArguments, const QString &callPostfix)
{
// Pass MAKEFLAGS as environment variable to sub-make calls.
// Unlike other make tools nmake doesn't do this automatically.
t << "\n\t@set MAKEFLAGS=$(MAKEFLAGS)";
Win32MakefileGenerator::writeSubMakeCall(t, callPrefix, makeArguments, callPostfix);
}
QString NmakeMakefileGenerator::getPdbTarget()
{
return QString(project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".pdb");

View File

@ -57,6 +57,8 @@ class NmakeMakefileGenerator : public Win32MakefileGenerator
void init();
protected:
virtual void writeSubMakeCall(QTextStream &t, const QString &callPrefix,
const QString &makeArguments, const QString &callPostfix);
virtual QString getPdbTarget();
virtual QString defaultInstall(const QString &t);
virtual QStringList &findDependencies(const QString &file);