Merge remote-tracking branch 'origin/3.3'

Change-Id: I0ab4982e229d475b8e3575414b4bebbfea07498d
This commit is contained in:
Eike Ziller
2014-11-12 12:55:00 +01:00
217 changed files with 2087 additions and 1620 deletions

View File

@@ -33,6 +33,7 @@
#include "qbsbuildconfiguration.h"
#include "qbslogsink.h"
#include "qbsprojectfile.h"
#include "qbsprojectmanager.h"
#include "qbsprojectparser.h"
#include "qbsprojectmanagerconstants.h"
#include "qbsnodes.h"
@@ -47,6 +48,7 @@
#include <coreplugin/progressmanager/progressmanager.h>
#include <coreplugin/mimedatabase.h>
#include <cpptools/cppmodelmanager.h>
#include <extensionsystem/pluginmanager.h>
#include <projectexplorer/buildenvironmentwidget.h>
#include <projectexplorer/buildmanager.h>
#include <projectexplorer/buildtargetinfo.h>
@@ -559,6 +561,7 @@ void QbsProject::updateAfterBuild()
QTC_ASSERT(m_qbsProject.isValid(), return);
m_projectData = m_qbsProject.projectData();
updateBuildTargetData();
updateCppCompilerCallData();
}
void QbsProject::registerQbsProjectParser(QbsProjectParser *p)
@@ -624,6 +627,9 @@ void QbsProject::parse(const QVariantMap &config, const Environment &env, const
registerQbsProjectParser(new QbsProjectParser(this, m_qbsUpdateFutureInterface));
QbsManager * const qbsManager = ExtensionSystem::PluginManager::getObject<QbsManager>();
QTC_ASSERT(qbsManager, return);
qbsManager->updateProfileIfNecessary(activeTarget()->kit());
m_qbsProjectParser->parse(config, env, dir);
emit projectParsingStarted();
}
@@ -682,9 +688,7 @@ void QbsProject::updateCppCodeModel()
QtSupport::BaseQtVersion *qtVersion =
QtSupport::QtKitInformation::qtVersion(activeTarget()->kit());
CppTools::CppModelManager *modelmanager =
CppTools::CppModelManager::instance();
CppTools::CppModelManager *modelmanager = CppTools::CppModelManager::instance();
if (!modelmanager)
return;
@@ -780,8 +784,51 @@ void QbsProject::updateCppCodeModel()
QtSupport::UiCodeModelManager::update(this, uiFiles);
// Register update the code model:
// Update the code model
m_codeModelFuture.cancel();
m_codeModelFuture = modelmanager->updateProjectInfo(pinfo);
m_codeModelProjectInfo = modelmanager->projectInfo(this);
}
void QbsProject::updateCppCompilerCallData()
{
CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance();
QTC_ASSERT(m_codeModelProjectInfo == modelManager->projectInfo(this), return);
CppTools::ProjectInfo::CompilerCallData data;
foreach (const qbs::ProductData &product, m_projectData.allProducts()) {
if (!product.isEnabled())
continue;
foreach (const qbs::GroupData &group, product.groups()) {
if (!group.isEnabled())
continue;
foreach (const QString &file, group.allFilePaths()) {
if (!CppTools::ProjectFile::isSource(CppTools::ProjectFile::classify(file)))
continue;
qbs::ErrorInfo errorInfo;
const qbs::RuleCommandList ruleCommands
= m_qbsProject.ruleCommands(product, file, QLatin1String("obj"), &errorInfo);
if (errorInfo.hasError())
continue;
QList<QStringList> calls;
foreach (const qbs::RuleCommand &ruleCommand, ruleCommands) {
if (ruleCommand.type() == qbs::RuleCommand::ProcessCommandType)
calls << ruleCommand.arguments();
}
if (!calls.isEmpty())
data.insert(file, calls);
}
}
}
m_codeModelProjectInfo.setCompilerCallData(data);
const QFuture<void> future = modelManager->updateProjectInfo(m_codeModelProjectInfo);
QTC_CHECK(future.isFinished()); // No reparse of files expected
}
void QbsProject::updateQmlJsCodeModel()