Merge remote-tracking branch 'origin/3.1'

Conflicts:
	qtcreator.pri
	qtcreator.qbs
	src/libs/qmljs/qmljsmodelmanagerinterface.cpp
	src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp

Change-Id: Ie216b715d6f87a6d72d3b8fe3d4e777e561579f9
This commit is contained in:
Eike Ziller
2014-05-02 10:00:20 +02:00
64 changed files with 442 additions and 245 deletions

View File

@@ -1990,13 +1990,46 @@ void QmakeProFileNode::applyEvaluate(EvalResult evalResult, bool async)
m_validParse = (evalResult == EvalOk);
if (m_validParse) {
// create build_pass reader
QtSupport::ProFileReader *readerBuildPass = 0;
QStringList builds = m_readerExact->values(QLatin1String("BUILDS"));
if (builds.isEmpty()) {
readerBuildPass = m_readerExact;
} else {
QString build = builds.first();
QHash<QString, QStringList> basevars;
QStringList basecfgs = m_readerExact->values(build + QLatin1String(".CONFIG"));
basecfgs += build;
basecfgs += QLatin1String("build_pass");
basevars[QLatin1String("BUILD_PASS")] = QStringList(build);
QStringList buildname = m_readerExact->values(build + QLatin1String(".name"));
basevars[QLatin1String("BUILD_NAME")] = (buildname.isEmpty() ? QStringList(build) : buildname);
readerBuildPass = m_project->createProFileReader(this);
readerBuildPass->setExtraVars(basevars);
readerBuildPass->setExtraConfigs(basecfgs);
EvalResult evalResult = EvalOk;
if (ProFile *pro = readerBuildPass->parsedProFile(m_projectFilePath)) {
if (!readerBuildPass->accept(pro, QMakeEvaluator::LoadAll))
evalResult = EvalPartial;
pro->deref();
} else {
evalResult = EvalFail;
}
if (evalResult != EvalOk) {
m_project->destroyProFileReader(readerBuildPass);
readerBuildPass = 0;
}
}
// update TargetInformation
m_qmakeTargetInformation = targetInformation(m_readerExact);
m_qmakeTargetInformation = targetInformation(m_readerExact, readerBuildPass);
m_resolvedMkspecPath = m_readerExact->resolvedMkSpec();
m_subProjectsNotToDeploy = subProjectsNotToDeploy;
setupInstallsList(m_readerExact);
setupInstallsList(readerBuildPass);
QString buildDirectory = buildDir();
// update other variables
@@ -2056,6 +2089,9 @@ void QmakeProFileNode::applyEvaluate(EvalResult evalResult, bool async)
}
}
if (readerBuildPass && readerBuildPass != m_readerExact)
m_project->destroyProFileReader(readerBuildPass);
if (m_varValues != newVarValues) {
QmakeVariablesHash oldValues = m_varValues;
m_varValues = newVarValues;
@@ -2200,61 +2236,31 @@ QStringList QmakeProFileNode::subDirsPaths(QtSupport::ProFileReader *reader, QSt
return subProjectPaths;
}
TargetInformation QmakeProFileNode::targetInformation(QtSupport::ProFileReader *reader) const
TargetInformation QmakeProFileNode::targetInformation(QtSupport::ProFileReader *reader, QtSupport::ProFileReader *readerBuildPass) const
{
TargetInformation result;
if (!reader)
if (!reader || !readerBuildPass)
return result;
QtSupport::ProFileReader *readerBP = 0;
QStringList builds = reader->values(QLatin1String("BUILDS"));
if (!builds.isEmpty()) {
QString build = builds.first();
result.buildTarget = reader->value(build + QLatin1String(".target"));
QHash<QString, QStringList> basevars;
QStringList basecfgs = reader->values(build + QLatin1String(".CONFIG"));
basecfgs += build;
basecfgs += QLatin1String("build_pass");
basevars[QLatin1String("BUILD_PASS")] = QStringList(build);
QStringList buildname = reader->values(build + QLatin1String(".name"));
basevars[QLatin1String("BUILD_NAME")] = (buildname.isEmpty() ? QStringList(build) : buildname);
readerBP = m_project->createProFileReader(this);
readerBP->setExtraVars(basevars);
readerBP->setExtraConfigs(basecfgs);
EvalResult evalResult = EvalOk;
if (ProFile *pro = readerBP->parsedProFile(m_projectFilePath)) {
if (!readerBP->accept(pro, QMakeEvaluator::LoadAll))
evalResult = EvalPartial;
pro->deref();
} else {
evalResult = EvalFail;
}
if (evalResult != EvalOk)
return result;
reader = readerBP;
}
// BUILD DIR
result.buildDir = buildDir();
if (reader->contains(QLatin1String("DESTDIR")))
result.destDir = reader->value(QLatin1String("DESTDIR"));
if (readerBuildPass->contains(QLatin1String("DESTDIR")))
result.destDir = readerBuildPass->value(QLatin1String("DESTDIR"));
// Target
result.target = reader->value(QLatin1String("TARGET"));
result.target = readerBuildPass->value(QLatin1String("TARGET"));
if (result.target.isEmpty())
result.target = QFileInfo(m_projectFilePath).baseName();
result.valid = true;
if (readerBP)
m_project->destroyProFileReader(readerBP);
return result;
}