summaryrefslogtreecommitdiffstats
path: root/qmake/generators/makefile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/generators/makefile.cpp')
-rw-r--r--qmake/generators/makefile.cpp127
1 files changed, 62 insertions, 65 deletions
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index f126da3280..c4e0a4face 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -300,6 +300,12 @@ MakefileGenerator::setProjectFile(QMakeProject *p)
if(project)
return;
project = p;
+ if (project->isActiveConfig("win32"))
+ target_mode = TARG_WIN_MODE;
+ else if (project->isActiveConfig("macx"))
+ target_mode = TARG_MACX_MODE;
+ else
+ target_mode = TARG_UNIX_MODE;
init();
findLibraries();
if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE &&
@@ -311,7 +317,7 @@ QStringList
MakefileGenerator::findFilesInVPATH(QStringList l, uchar flags, const QString &vpath_var)
{
QStringList vpath;
- QHash<QString, QStringList> &v = project->variables();
+ const QHash<QString, QStringList> &v = project->variables();
for(int val_it = 0; val_it < l.count(); ) {
bool remove_file = false;
QString &val = l[val_it];
@@ -442,14 +448,14 @@ MakefileGenerator::init()
continue_compiler_chain:
if(jump_count > quc.size()) //just to avoid an infinite loop here
break;
- if(project->variables().contains(quc.at(comp_out) + ".variable_out")) {
- const QStringList &outputs = project->variables().value(quc.at(comp_out) + ".variable_out");
+ if (v.contains(quc.at(comp_out) + ".variable_out")) {
+ const QStringList &outputs = v.value(quc.at(comp_out) + ".variable_out");
for(int out = 0; out < outputs.size(); ++out) {
for(int comp_in = 0; comp_in < quc.size(); ++comp_in) {
if(comp_in == comp_out)
continue;
- if(project->variables().contains(quc.at(comp_in) + ".input")) {
- const QStringList &inputs = project->variables().value(quc.at(comp_in) + ".input");
+ if (v.contains(quc.at(comp_in) + ".input")) {
+ const QStringList &inputs = v.value(quc.at(comp_in) + ".input");
for(int in = 0; in < inputs.size(); ++in) {
if(inputs.at(in) == outputs.at(out) && comp_out > comp_in) {
++jump_count;
@@ -665,7 +671,7 @@ MakefileGenerator::init()
if(tmp_out.isEmpty())
continue;
if(project->values((*it) + ".CONFIG").indexOf("combine") != -1) {
- QStringList &compilerInputs = project->values((*it) + ".input");
+ const QStringList &compilerInputs = project->values((*it) + ".input");
// Don't generate compiler output if it doesn't have input.
if (compilerInputs.isEmpty() || project->values(compilerInputs.first()).isEmpty())
continue;
@@ -674,8 +680,8 @@ MakefileGenerator::init()
continue;
QString out = fileFixify(tmp_out, Option::output_dir, Option::output_dir);
bool pre_dep = (project->values((*it) + ".CONFIG").indexOf("target_predeps") != -1);
- if(project->variables().contains((*it) + ".variable_out")) {
- const QStringList &var_out = project->variables().value((*it) + ".variable_out");
+ if (v.contains((*it) + ".variable_out")) {
+ const QStringList &var_out = v.value((*it) + ".variable_out");
for(int i = 0; i < var_out.size(); ++i) {
QString v = var_out.at(i);
if(v == QLatin1String("SOURCES"))
@@ -697,14 +703,14 @@ MakefileGenerator::init()
list.append(out);
}
if(pre_dep) {
- QStringList &list = project->variables()["PRE_TARGETDEPS"];
+ QStringList &list = project->values("PRE_TARGETDEPS");
if(!list.contains(out))
list.append(out);
}
}
} else {
- QStringList &tmp = project->values((*it) + ".input");
- for(QStringList::Iterator it2 = tmp.begin(); it2 != tmp.end(); ++it2) {
+ const QStringList &tmp = project->values((*it) + ".input");
+ for (QStringList::ConstIterator it2 = tmp.begin(); it2 != tmp.end(); ++it2) {
const QStringList inputs = project->values((*it2));
for(QStringList::ConstIterator input = inputs.constBegin(); input != inputs.constEnd(); ++input) {
if((*input).isEmpty())
@@ -715,8 +721,8 @@ MakefileGenerator::init()
QString out = replaceExtraCompilerVariables(tmp_out, (*input), QString());
out = fileFixify(out, Option::output_dir, Option::output_dir);
bool pre_dep = (project->values((*it) + ".CONFIG").indexOf("target_predeps") != -1);
- if(project->variables().contains((*it) + ".variable_out")) {
- const QStringList &var_out = project->variables().value((*it) + ".variable_out");
+ if (v.contains((*it) + ".variable_out")) {
+ const QStringList &var_out = project->values(*it + ".variable_out");
for(int i = 0; i < var_out.size(); ++i) {
QString v = var_out.at(i);
if(v == QLatin1String("SOURCES"))
@@ -738,7 +744,7 @@ MakefileGenerator::init()
list.append(out);
}
if(pre_dep) {
- QStringList &list = project->variables()["PRE_TARGETDEPS"];
+ QStringList &list = project->values("PRE_TARGETDEPS");
if(!list.contains(out))
list.append(out);
}
@@ -1151,11 +1157,11 @@ MakefileGenerator::writePrlFile()
void
MakefileGenerator::writeObj(QTextStream &t, const QString &src)
{
- QStringList &srcl = project->values(src);
- QStringList objl = createObjectList(srcl);
+ const QStringList &srcl = project->values(src);
+ const QStringList objl = createObjectList(srcl);
- QStringList::Iterator oit = objl.begin();
- QStringList::Iterator sit = srcl.begin();
+ QStringList::ConstIterator oit = objl.begin();
+ QStringList::ConstIterator sit = srcl.begin();
QString stringSrc("$src");
QString stringObj("$obj");
for(;sit != srcl.end() && oit != objl.end(); ++oit, ++sit) {
@@ -1216,8 +1222,8 @@ MakefileGenerator::writeInstalls(QTextStream &t, const QString &installs, bool n
rm_dir_contents = "-$(DEL_FILE) -r";
QString all_installs, all_uninstalls;
- QStringList &l = project->values(installs);
- for(QStringList::Iterator it = l.begin(); it != l.end(); ++it) {
+ const QStringList &l = project->values(installs);
+ for (QStringList::ConstIterator it = l.begin(); it != l.end(); ++it) {
QString pvar = (*it) + ".path";
if(project->values((*it) + ".CONFIG").indexOf("no_path") == -1 &&
project->values((*it) + ".CONFIG").indexOf("dummy_install") == -1 &&
@@ -1683,10 +1689,10 @@ MakefileGenerator::verifyExtraCompiler(const QString &comp, const QString &file_
if(!pass)
return false;
} else {
- QStringList &tmp = project->values(comp + ".input");
- for(QStringList::Iterator it = tmp.begin(); it != tmp.end(); ++it) {
- QStringList &inputs = project->values((*it));
- for(QStringList::Iterator input = inputs.begin(); input != inputs.end(); ++input) {
+ const QStringList &tmp = project->values(comp + ".input");
+ for (QStringList::ConstIterator it = tmp.begin(); it != tmp.end(); ++it) {
+ const QStringList &inputs = project->values((*it));
+ for (QStringList::ConstIterator input = inputs.begin(); input != inputs.end(); ++input) {
if((*input).isEmpty())
continue;
QString in = fileFixify(Option::fixPathToTargetOS((*input), false));
@@ -1729,10 +1735,10 @@ MakefileGenerator::verifyExtraCompiler(const QString &comp, const QString &file_
if(system(cmd.toLatin1().constData()))
return false;
} else {
- QStringList &tmp = project->values(comp + ".input");
- for(QStringList::Iterator it = tmp.begin(); it != tmp.end(); ++it) {
- QStringList &inputs = project->values((*it));
- for(QStringList::Iterator input = inputs.begin(); input != inputs.end(); ++input) {
+ const QStringList &tmp = project->values(comp + ".input");
+ for (QStringList::ConstIterator it = tmp.begin(); it != tmp.end(); ++it) {
+ const QStringList &inputs = project->values((*it));
+ for (QStringList::ConstIterator input = inputs.begin(); input != inputs.end(); ++input) {
if((*input).isEmpty())
continue;
QString in = fileFixify(Option::fixPathToTargetOS((*input), false));
@@ -1753,14 +1759,14 @@ MakefileGenerator::verifyExtraCompiler(const QString &comp, const QString &file_
void
MakefileGenerator::writeExtraTargets(QTextStream &t)
{
- QStringList &qut = project->values("QMAKE_EXTRA_TARGETS");
- for(QStringList::Iterator it = qut.begin(); it != qut.end(); ++it) {
+ const QStringList &qut = project->values("QMAKE_EXTRA_TARGETS");
+ for (QStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) {
QString targ = var((*it) + ".target"),
cmd = var((*it) + ".commands"), deps;
if(targ.isEmpty())
targ = (*it);
- QStringList &deplist = project->values((*it) + ".depends");
- for(QStringList::Iterator dep_it = deplist.begin(); dep_it != deplist.end(); ++dep_it) {
+ const QStringList &deplist = project->values((*it) + ".depends");
+ for (QStringList::ConstIterator dep_it = deplist.begin(); dep_it != deplist.end(); ++dep_it) {
QString dep = var((*dep_it) + ".target");
if(dep.isEmpty())
dep = (*dep_it);
@@ -1822,7 +1828,7 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
+ escapeFilePath(Option::fixPathToLocalOS(Option::output_dir, false))
+ QLatin1String(" && ");
}
- QStringList &vars = project->values((*it) + ".variables");
+ const QStringList &vars = project->values((*it) + ".variables");
if(tmp_out.isEmpty() || tmp_cmd.isEmpty())
continue;
QStringList tmp_inputs;
@@ -2114,10 +2120,10 @@ MakefileGenerator::writeExtraVariables(QTextStream &t)
t << endl;
QStringList outlist;
- QHash<QString, QStringList> &vars = project->variables();
- QStringList &exports = project->values("QMAKE_EXTRA_VARIABLES");
- for (QHash<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) {
- for (QStringList::Iterator exp_it = exports.begin(); exp_it != exports.end(); ++exp_it) {
+ const QHash<QString, QStringList> &vars = project->variables();
+ const QStringList &exports = project->values("QMAKE_EXTRA_VARIABLES");
+ for (QHash<QString, QStringList>::ConstIterator it = vars.begin(); it != vars.end(); ++it) {
+ for (QStringList::ConstIterator exp_it = exports.begin(); exp_it != exports.end(); ++exp_it) {
QRegExp rx((*exp_it), Qt::CaseInsensitive, QRegExp::Wildcard);
if (rx.exactMatch(it.key()))
outlist << ("EXPORT_" + it.key() + " = " + it.value().join(" "));
@@ -2133,7 +2139,7 @@ bool
MakefileGenerator::writeStubMakefile(QTextStream &t)
{
t << "QMAKE = " << var("QMAKE_QMAKE") << endl;
- QStringList &qut = project->values("QMAKE_EXTRA_TARGETS");
+ const QStringList &qut = project->values("QMAKE_EXTRA_TARGETS");
for(QStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it)
t << *it << " ";
//const QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName()));
@@ -2196,14 +2202,6 @@ QString MakefileGenerator::buildArgs(const QString &outdir)
ret += " -spec " + fixifySpecdir(Option::mkfile::qmakespec, outdir);
if (!Option::mkfile::xqmakespec_commandline.isEmpty())
ret += " -xspec " + fixifySpecdir(Option::mkfile::xqmakespec, outdir);
- if (Option::target_mode_overridden) {
- if (Option::target_mode == Option::TARG_MACX_MODE)
- ret += " -macx";
- else if (Option::target_mode == Option::TARG_UNIX_MODE)
- ret += " -unix";
- else if (Option::target_mode == Option::TARG_WIN_MODE)
- ret += " -win32";
- }
//arguments
for(QStringList::Iterator it = Option::before_user_vars.begin();
@@ -2398,8 +2396,8 @@ void
MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubTarget*> targets, int flags)
{
// blasted includes
- QStringList &qeui = project->values("QMAKE_EXTRA_INCLUDES");
- for(QStringList::Iterator qeui_it = qeui.begin(); qeui_it != qeui.end(); ++qeui_it)
+ const QStringList &qeui = project->values("QMAKE_EXTRA_INCLUDES");
+ for (QStringList::ConstIterator qeui_it = qeui.begin(); qeui_it != qeui.end(); ++qeui_it)
t << "include " << (*qeui_it) << endl;
if (!(flags & SubTargetSkipDefaultVariables)) {
@@ -2609,16 +2607,16 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
}
// user defined targets
- QStringList &qut = project->values("QMAKE_EXTRA_TARGETS");
- for(QStringList::Iterator qut_it = qut.begin(); qut_it != qut.end(); ++qut_it) {
+ const QStringList &qut = project->values("QMAKE_EXTRA_TARGETS");
+ for (QStringList::ConstIterator qut_it = qut.begin(); qut_it != qut.end(); ++qut_it) {
QString targ = var((*qut_it) + ".target"),
cmd = var((*qut_it) + ".commands"), deps;
if(targ.isEmpty())
targ = (*qut_it);
t << endl;
- QStringList &deplist = project->values((*qut_it) + ".depends");
- for(QStringList::Iterator dep_it = deplist.begin(); dep_it != deplist.end(); ++dep_it) {
+ const QStringList &deplist = project->values((*qut_it) + ".depends");
+ for (QStringList::ConstIterator dep_it = deplist.begin(); dep_it != deplist.end(); ++dep_it) {
QString dep = var((*dep_it) + ".target");
if(dep.isEmpty())
dep = Option::fixPathToTargetOS(*dep_it, false);
@@ -2933,8 +2931,8 @@ MakefileGenerator::checkMultipleDefinition(const QString &f, const QString &w)
int slsh = f.lastIndexOf(Option::dir_sep);
if(slsh != -1)
file.remove(0, slsh + 1);
- QStringList &l = project->values(w);
- for(QStringList::Iterator val_it = l.begin(); val_it != l.end(); ++val_it) {
+ const QStringList &l = project->values(w);
+ for (QStringList::ConstIterator val_it = l.begin(); val_it != l.end(); ++val_it) {
QString file2((*val_it));
slsh = file2.lastIndexOf(Option::dir_sep);
if(slsh != -1)
@@ -2967,8 +2965,8 @@ MakefileGenerator::findFileForDep(const QMakeLocalFileName &dep, const QMakeLoca
QMakeLocalFileName ret;
if(!project->isEmpty("SKIP_DEPENDS")) {
bool found = false;
- QStringList &nodeplist = project->values("SKIP_DEPENDS");
- for(QStringList::Iterator it = nodeplist.begin();
+ const QStringList &nodeplist = project->values("SKIP_DEPENDS");
+ for (QStringList::ConstIterator it = nodeplist.begin();
it != nodeplist.end(); ++it) {
QRegExp regx((*it));
if(regx.indexIn(dep.local()) != -1) {
@@ -3016,8 +3014,8 @@ MakefileGenerator::findFileForDep(const QMakeLocalFileName &dep, const QMakeLoca
}
{ //is it from an EXTRA_TARGET
const QString dep_basename = dep.local().section(Option::dir_sep, -1);
- QStringList &qut = project->values("QMAKE_EXTRA_TARGETS");
- for(QStringList::Iterator it = qut.begin(); it != qut.end(); ++it) {
+ const QStringList &qut = project->values("QMAKE_EXTRA_TARGETS");
+ for (QStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) {
QString targ = var((*it) + ".target");
if(targ.isEmpty())
targ = (*it);
@@ -3035,10 +3033,10 @@ MakefileGenerator::findFileForDep(const QMakeLocalFileName &dep, const QMakeLoca
QString tmp_out = project->values((*it) + ".output").first();
if(tmp_out.isEmpty())
continue;
- QStringList &tmp = project->values((*it) + ".input");
- for(QStringList::Iterator it2 = tmp.begin(); it2 != tmp.end(); ++it2) {
- QStringList &inputs = project->values((*it2));
- for(QStringList::Iterator input = inputs.begin(); input != inputs.end(); ++input) {
+ const QStringList &tmp = project->values((*it) + ".input");
+ for (QStringList::ConstIterator it2 = tmp.begin(); it2 != tmp.end(); ++it2) {
+ const QStringList &inputs = project->values((*it2));
+ for (QStringList::ConstIterator input = inputs.begin(); input != inputs.end(); ++input) {
QString out = Option::fixPathToTargetOS(unescapeFilePath(replaceExtraCompilerVariables(tmp_out, (*input), QString())));
if(out == dep.real() || out.section(Option::dir_sep, -1) == dep_basename) {
ret = QMakeLocalFileName(fileFixify(out, qmake_getpwd(), Option::output_dir));
@@ -3075,8 +3073,7 @@ QString
MakefileGenerator::specdir()
{
if (spec.isEmpty())
- spec = fileFixify(project->isHostBuild()
- ? Option::mkfile::qmakespec : Option::mkfile::xqmakespec);
+ spec = fileFixify(project->specDir());
return spec;
}
@@ -3261,7 +3258,7 @@ MakefileGenerator::writePkgConfigFile()
t << "Libs: ";
QString pkgConfiglibDir;
QString pkgConfiglibName;
- if (Option::target_mode == Option::TARG_MACX_MODE && project->isActiveConfig("lib_bundle")) {
+ if (target_mode == TARG_MACX_MODE && project->isActiveConfig("lib_bundle")) {
pkgConfiglibDir = "-F${libdir}";
QString bundle;
if (!project->isEmpty("QMAKE_FRAMEWORK_BUNDLE_NAME"))