Skip to content

Commit

Permalink
Fix compilation issues after upstream update
Browse files Browse the repository at this point in the history
  • Loading branch information
h4tr3d committed Mar 5, 2016
1 parent 595a182 commit 38139d6
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 19 deletions.
17 changes: 13 additions & 4 deletions builddirmanager.cpp
Expand Up @@ -93,7 +93,6 @@ static QStringList toArguments(const CMakeConfig &config) {

BuildDirManager::BuildDirManager(const CMakeBuildConfiguration *bc) :
m_buildConfiguration(bc),
m_inputToolchainInfo(inputToolchainInfo),
m_watcher(new QFileSystemWatcher(this))
{
QTC_ASSERT(bc, return);
Expand Down Expand Up @@ -145,6 +144,11 @@ const CMakeConfig BuildDirManager::cmakeConfiguration() const
return m_buildConfiguration->cmakeConfiguration();
}

const CMakeToolchainInfo &BuildDirManager::cmakeToolchainInfo() const
{
return m_buildConfiguration->cmakeToolchainInfo();
}

bool BuildDirManager::isParsing() const
{
if (m_cmakeProcess)
Expand Down Expand Up @@ -190,8 +194,8 @@ void BuildDirManager::forceReparse(bool clearCache)
const QString generator = CMakeGeneratorKitInformation::generator(kit());

if (clearCache) {
QString cmakeCache(m_buildDir.toString() + QLatin1String("/CMakeCache.txt"));
QString cmakeFiles(m_buildDir.toString() + QLatin1String("/CMakeFiles"));
QString cmakeCache(buildDirectory().toString() + QLatin1String("/CMakeCache.txt"));
QString cmakeFiles(buildDirectory().toString() + QLatin1String("/CMakeFiles"));

if (QFileInfo::exists(cmakeCache)) {
removePath(cmakeCache);
Expand Down Expand Up @@ -302,6 +306,11 @@ CMakeConfig BuildDirManager::configuration() const
return parseConfiguration();
}

void BuildDirManager::forceReparseHandle()
{
forceReparse(false);
}

void BuildDirManager::stopProcess()
{
if (!m_cmakeProcess)
Expand Down Expand Up @@ -443,7 +452,7 @@ void BuildDirManager::startCMake(CMakeTool *tool, const QString &generator,
if (!generator.isEmpty())
Utils::QtcProcess::addArg(&args, QString::fromLatin1("-G%1").arg(generator));
Utils::QtcProcess::addArgs(&args, toArguments(config));
Utils::QtcProcess::addArgs(&args, toolchain.arguments(toArguments(config), buildDirStr));
Utils::QtcProcess::addArgs(&args, toolchain.arguments(toArguments(config), workDirectory().toString()));

ProjectExplorer::TaskHub::clearTasks(ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM);

Expand Down
4 changes: 3 additions & 1 deletion builddirmanager.h
Expand Up @@ -73,10 +73,13 @@ class BuildDirManager : public QObject
const Utils::FileName workDirectory() const;
const Utils::FileName sourceDirectory() const;
const CMakeConfig cmakeConfiguration() const;
const CMakeToolchainInfo& cmakeToolchainInfo() const;

bool isParsing() const;

void parse();
void forceReparse(bool clearCache = false);
void forceReparseHandle();
void resetData();
bool persistCMakeState();

Expand Down Expand Up @@ -106,7 +109,6 @@ class BuildDirManager : public QObject
CMakeConfig parseConfiguration() const;

bool m_hasData = false;
CMakeToolchainInfo m_inputToolchainInfo;

const CMakeBuildConfiguration *m_buildConfiguration = nullptr;
Utils::QtcProcess *m_cmakeProcess = nullptr;
Expand Down
24 changes: 18 additions & 6 deletions cmakebuildconfiguration.cpp
Expand Up @@ -94,10 +94,10 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(ProjectExplorer::Target *parent
this, [this]() { m_completeConfigurationCache.clear(); emit parsingStarted(); });

connect(this, &CMakeBuildConfiguration::environmentChanged,
m_buildDirManager, &BuildDirManager::forceReparse);
m_buildDirManager, &BuildDirManager::forceReparseHandle);
connect(this, &CMakeBuildConfiguration::buildDirectoryChanged,
m_buildDirManager, &BuildDirManager::forceReparse);
connect(target(), &Target::kitChanged, m_buildDirManager, &BuildDirManager::forceReparse);
m_buildDirManager, &BuildDirManager::forceReparseHandle);
connect(target(), &Target::kitChanged, m_buildDirManager, &BuildDirManager::forceReparseHandle);

connect(this, &CMakeBuildConfiguration::parsingStarted, project, &CMakeProject::handleParsingStarted);
connect(this, &CMakeBuildConfiguration::dataAvailable, project, &CMakeProject::parseCMakeOutput);
Expand Down Expand Up @@ -239,7 +239,7 @@ QList<ConfigModel::DataItem> CMakeBuildConfiguration::completeCMakeConfiguration
});
}

void CMakeBuildConfiguration::setCurrentCMakeConfiguration(const QList<ConfigModel::DataItem> &items)
void CMakeBuildConfiguration::setCurrentCMakeConfiguration(const QList<ConfigModel::DataItem> &items, const CMakeToolchainInfo &info, bool clearCache)
{
if (m_buildDirManager->isParsing())
return;
Expand Down Expand Up @@ -272,10 +272,22 @@ void CMakeBuildConfiguration::setCurrentCMakeConfiguration(const QList<ConfigMod
});

// There is a buildDirManager, so there must also be an active BC:
const CMakeConfig config = cmakeConfiguration() + newConfig;
CMakeConfig config;
auto kitConfig = CMakeConfigurationKitInformation::configuration(target()->kit());

if (info.toolchainOverride != CMakeToolchainOverrideType::Disabled) {
config = removeDuplicates(cmakeConfiguration() + newConfig);
config = removeSubList(config, kitConfig);
} else {
config = removeDuplicates(kitConfig + cmakeConfiguration() + newConfig);
}

clearCache = (m_cmakeToolchainInfo != info) || clearCache;

setCMakeConfiguration(config);
setCMakeToolchainInfo(info);

m_buildDirManager->forceReparse();
m_buildDirManager->forceReparse(clearCache);
}

const CMakeToolchainInfo &CMakeBuildConfiguration::cmakeToolchainInfo() const
Expand Down
2 changes: 1 addition & 1 deletion cmakebuildconfiguration.h
Expand Up @@ -94,7 +94,7 @@ class CMakeBuildConfiguration : public ProjectExplorer::BuildConfiguration

private:
QList<ConfigModel::DataItem> completeCMakeConfiguration() const;
void setCurrentCMakeConfiguration(const QList<ConfigModel::DataItem> &items);
void setCurrentCMakeConfiguration(const QList<ConfigModel::DataItem> &items, const CMakeToolchainInfo &info, bool clearCache = false);

void setError(const QString &message);

Expand Down
28 changes: 21 additions & 7 deletions cmakeproject.cpp
Expand Up @@ -26,7 +26,6 @@
#include "cmakeproject.h"

#include "builddirmanager.h"
#include "cmakebuildconfiguration.h"
#include "cmakebuildstep.h"
#include "cmakekitinformation.h"
#include "cmakeprojectconstants.h"
Expand Down Expand Up @@ -390,6 +389,24 @@ void CMakeProject::parseCMakeOutput()
updateRunConfigurations();
}

BuildDirManager *CMakeProject::buildDirManager()
{
BuildDirManager *bdm = nullptr;
if (activeTarget() && activeTarget()->activeBuildConfiguration())
bdm = static_cast<CMakeBuildConfiguration *>(activeTarget()->activeBuildConfiguration())->buildDirManager();
return bdm;
}

bool CMakeProject::cmakeForceReparse()
{
auto bdm = buildDirManager();
if (bdm) {
bdm->forceReparse();
return true;
}
return false;
}

bool CMakeProject::needsConfiguration() const
{
return targets().isEmpty();
Expand Down Expand Up @@ -811,25 +828,22 @@ bool CMakeProject::addFiles(const QStringList &filePaths)
{
Q_UNUSED(filePaths);
// If globbing is used, watched does not know about new files, so force rebuilding
m_buildDirManager->forceReparse();
return true;
return cmakeForceReparse();
}

bool CMakeProject::eraseFiles(const QStringList &filePaths)
{
Q_UNUSED(filePaths);
// FIXME force only when really needed
m_buildDirManager->forceReparse();
return true;
return cmakeForceReparse();
}

bool CMakeProject::renameFile(const QString &filePath, const QString &newFilePath)
{
Q_UNUSED(filePath);
Q_UNUSED(newFilePath);
// FIXME force only when really needed
m_buildDirManager->forceReparse();
return true;
return cmakeForceReparse();
}

} // namespace CMakeProjectManager
4 changes: 4 additions & 0 deletions cmakeproject.h
Expand Up @@ -28,6 +28,7 @@
#include "cmake_global.h"
#include "cmakeprojectnodes.h"
#include "cmaketoolchaininfo.h"
#include "cmakebuildconfiguration.h"

#include <projectexplorer/extracompiler.h>
#include <projectexplorer/project.h>
Expand Down Expand Up @@ -131,6 +132,9 @@ class CMAKE_EXPORT CMakeProject : public ProjectExplorer::Project
void handleParsingStarted();
void parseCMakeOutput();

Internal::BuildDirManager *buildDirManager();
bool cmakeForceReparse();

void updateRunConfigurations();

void buildTree(Internal::CMakeProjectNode *rootNode, QList<ProjectExplorer::FileNode *> list);
Expand Down

0 comments on commit 38139d6

Please sign in to comment.