summaryrefslogtreecommitdiffstats
path: root/qmake/generators
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-08-09 18:54:40 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-14 23:12:23 +0200
commit4350054ab86b03b2a4e6641238b762fd80a3c5dd (patch)
treea0a77728895ebbb046782558a721fc7019d00c29 /qmake/generators
parent1447b6c55b55ca7bd6474524c12948c3e5589d2e (diff)
revamp preparation of command line for qmake calls in makefiles
instead of re-assembling a list from the variables, take the original command line minus some explicitly stripped out options. this is way less code and poses no synchronization problem between the two parts. as a "side effect", variables obtained from $QMAKEFLAGS won't multiply with each makefile nesting level, as the generated command line won't replicate data obtained from the environment. Change-Id: I5d1ce0f11efb338f60405529f9818910103b1b0e Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Diffstat (limited to 'qmake/generators')
-rw-r--r--qmake/generators/makefile.cpp52
-rw-r--r--qmake/generators/makefile.h2
2 files changed, 8 insertions, 46 deletions
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index 1bdf10c131..d109ae053b 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -2147,50 +2147,12 @@ QString MakefileGenerator::fixifySpecdir(const QString &spec, const QString &out
return spec;
}
-QString MakefileGenerator::buildArgs(const QString &outdir)
+QString MakefileGenerator::buildArgs()
{
QString ret;
- //special variables
- if(!project->isEmpty("QMAKE_ABSOLUTE_SOURCE_PATH"))
- ret += " QMAKE_ABSOLUTE_SOURCE_PATH=" + escapeFilePath(project->first("QMAKE_ABSOLUTE_SOURCE_PATH"));
-
- //warnings
- else if(Option::warn_level == WarnNone)
- ret += " -Wnone";
- else if(Option::warn_level == WarnAll)
- ret += " -Wall";
- else if(Option::warn_level & WarnParser)
- ret += " -Wparser";
- //other options
- if(!Option::user_template.isEmpty())
- ret += " -t " + Option::user_template;
- if(!Option::user_template_prefix.isEmpty())
- ret += " -tp " + Option::user_template_prefix;
- if(!Option::mkfile::do_cache)
- ret += " -nocache";
- if(!Option::mkfile::do_deps)
- ret += " -nodepend";
- if(!Option::mkfile::do_dep_heuristics)
- ret += " -nodependheuristics";
- if(!Option::mkfile::qmakespec_commandline.isEmpty())
- ret += " -spec " + fixifySpecdir(Option::mkfile::qmakespec, outdir);
- if (!Option::mkfile::xqmakespec_commandline.isEmpty())
- ret += " -xspec " + fixifySpecdir(Option::mkfile::xqmakespec, outdir);
-
- //arguments
- for(QStringList::Iterator it = Option::before_user_vars.begin();
- it != Option::before_user_vars.end(); ++it) {
- if((*it).left(qstrlen("QMAKE_ABSOLUTE_SOURCE_PATH")) != "QMAKE_ABSOLUTE_SOURCE_PATH")
- ret += " " + escapeFilePath((*it));
- }
- if(Option::after_user_vars.count()) {
- ret += " -after ";
- for(QStringList::Iterator it = Option::after_user_vars.begin();
- it != Option::after_user_vars.end(); ++it) {
- if((*it).left(qstrlen("QMAKE_ABSOLUTE_SOURCE_PATH")) != "QMAKE_ABSOLUTE_SOURCE_PATH")
- ret += " " + escapeFilePath((*it));
- }
- }
+
+ foreach (const QString &arg, Option::qmake_args)
+ ret += " " + escapeFilePath(arg);
return ret;
}
@@ -2201,7 +2163,7 @@ QString MakefileGenerator::build_args(const QString &outdir)
QString ret = "$(QMAKE)";
// general options and arguments
- ret += buildArgs(outdir);
+ ret += buildArgs();
//output
QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName()));
@@ -2358,7 +2320,7 @@ MakefileGenerator::writeSubTargetCall(QTextStream &t,
if (!in_directory.isEmpty())
t << "\n\t" << mkdir_p_asstring(out_directory);
pfx = "( " + chkfile + " " + out + " " + chkglue
- + "$(QMAKE) " + in + buildArgs(in_directory) + " -o " + out
+ + "$(QMAKE) " + in + buildArgs() + " -o " + out
+ " ) && ";
}
writeSubMakeCall(t, out_directory_cdin + pfx, makefilein);
@@ -2447,7 +2409,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
t << mkdir_p_asstring(out_directory)
<< out_directory_cdin;
}
- t << "$(QMAKE) " << in << buildArgs(in_directory) << " -o " << out;
+ t << "$(QMAKE) " << in << buildArgs() << " -o " << out;
if (!dont_recurse)
writeSubMakeCall(t, out_directory_cdin, makefilein + " qmake_all");
else
diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h
index 10b54224a6..47d04b0a12 100644
--- a/qmake/generators/makefile.h
+++ b/qmake/generators/makefile.h
@@ -194,7 +194,7 @@ protected:
QString specdir();
//subclasses can use these to query information about how the generator was "run"
- QString buildArgs(const QString &outdir=QString());
+ QString buildArgs();
QString fixifySpecdir(const QString &spec, const QString &outdir);
virtual QStringList &findDependencies(const QString &file);