BuildSystem: Clean up use of BuildSystem::(kit|target|project)

Change-Id: I4852689cb54d02bb278f9cd596f1de506a43fc04
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Tobias Hunger
2020-03-19 18:24:23 +01:00
parent 9e0a1b3621
commit a596421ffc
4 changed files with 71 additions and 71 deletions

View File

@@ -107,11 +107,11 @@ CMakeBuildSystem::CMakeBuildSystem(CMakeBuildConfiguration *bc)
// BuildDirManager:
connect(&m_buildDirManager, &BuildDirManager::requestReparse, this, [this] {
if (m_buildConfiguration->isActive())
if (cmakeBuildConfiguration()->isActive())
requestParse();
});
connect(&m_buildDirManager, &BuildDirManager::requestDelayedReparse, this, [this] {
if (m_buildConfiguration->isActive())
if (cmakeBuildConfiguration()->isActive())
requestDelayedParse();
});
@@ -122,17 +122,17 @@ CMakeBuildSystem::CMakeBuildSystem(CMakeBuildConfiguration *bc)
this, &CMakeBuildSystem::handleParsingFailed);
connect(&m_buildDirManager, &BuildDirManager::parsingStarted, this, [this]() {
m_buildConfiguration->clearError(CMakeBuildConfiguration::ForceEnabledChanged::True);
cmakeBuildConfiguration()->clearError(CMakeBuildConfiguration::ForceEnabledChanged::True);
});
// Kit changed:
connect(KitManager::instance(), &KitManager::kitUpdated, this, [this](Kit *k) {
if (k != target()->kit())
if (k != kit())
return; // not for us...
// Build configuration has not changed, but Kit settings might have:
// reparse and check the configuration, independent of whether the reader has changed
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to kit being updated";
m_buildDirManager.setParametersAndRequestParse(BuildDirParameters(m_buildConfiguration),
m_buildDirManager.setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
BuildDirManager::REPARSE_CHECK_CONFIGURATION);
});
@@ -144,22 +144,22 @@ CMakeBuildSystem::CMakeBuildSystem(CMakeBuildConfiguration *bc)
// * run cmake without configuration arguments if the reader stays
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to active target changed";
m_buildDirManager
.setParametersAndRequestParse(BuildDirParameters(m_buildConfiguration),
.setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
BuildDirManager::REPARSE_CHECK_CONFIGURATION);
} else {
m_buildDirManager.stopParsingAndClearState();
}
});
connect(target(), &Target::activeBuildConfigurationChanged, this, [this](BuildConfiguration *bc) {
if (m_buildConfiguration->isActive()) {
if (m_buildConfiguration == bc) {
if (cmakeBuildConfiguration()->isActive()) {
if (cmakeBuildConfiguration() == bc) {
// Build configuration has switched:
// * Check configuration if reader changes due to it not existing yet:-)
// * run cmake without configuration arguments if the reader stays
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to active BC changed";
m_buildDirManager
.setParametersAndRequestParse(BuildDirParameters(m_buildConfiguration),
BuildDirManager::REPARSE_CHECK_CONFIGURATION);
.setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
BuildDirManager::REPARSE_CHECK_CONFIGURATION);
} else {
m_buildDirManager.stopParsingAndClearState();
}
@@ -167,19 +167,19 @@ CMakeBuildSystem::CMakeBuildSystem(CMakeBuildConfiguration *bc)
});
// BuildConfiguration changed:
connect(m_buildConfiguration, &CMakeBuildConfiguration::environmentChanged, this, [this]() {
if (m_buildConfiguration->isActive()) {
connect(cmakeBuildConfiguration(), &CMakeBuildConfiguration::environmentChanged, this, [this]() {
if (cmakeBuildConfiguration()->isActive()) {
// The environment on our BC has changed:
// * Error out if the reader updates, cannot happen since all BCs share a target/kit.
// * run cmake without configuration arguments if the reader stays
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to environment change";
m_buildDirManager
.setParametersAndRequestParse(BuildDirParameters(m_buildConfiguration),
.setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
BuildDirManager::REPARSE_CHECK_CONFIGURATION);
}
});
connect(m_buildConfiguration, &CMakeBuildConfiguration::buildDirectoryChanged, this, [this]() {
if (m_buildConfiguration->isActive()) {
connect(cmakeBuildConfiguration(), &CMakeBuildConfiguration::buildDirectoryChanged, this, [this]() {
if (cmakeBuildConfiguration()->isActive()) {
// The build directory of our BC has changed:
// * Error out if the reader updates, cannot happen since all BCs share a target/kit.
// * run cmake without configuration arguments if the reader stays
@@ -187,36 +187,36 @@ CMakeBuildSystem::CMakeBuildSystem(CMakeBuildConfiguration *bc)
// the reader.
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to build directory change";
m_buildDirManager
.setParametersAndRequestParse(BuildDirParameters(m_buildConfiguration),
.setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
BuildDirManager::REPARSE_CHECK_CONFIGURATION);
}
});
connect(m_buildConfiguration, &CMakeBuildConfiguration::configurationForCMakeChanged, this, [this]() {
if (m_buildConfiguration->isActive()) {
connect(cmakeBuildConfiguration(), &CMakeBuildConfiguration::configurationForCMakeChanged, this, [this]() {
if (cmakeBuildConfiguration()->isActive()) {
// The CMake configuration has changed on our BC:
// * Error out if the reader updates, cannot happen since all BCs share a target/kit.
// * run cmake with configuration arguments if the reader stays
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to cmake configuration change";
m_buildDirManager
.setParametersAndRequestParse(BuildDirParameters(m_buildConfiguration),
.setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
BuildDirManager::REPARSE_FORCE_CONFIGURATION);
}
});
connect(project(), &Project::projectFileIsDirty, this, [this]() {
if (m_buildConfiguration->isActive() && !isParsing()) {
const auto cmake = CMakeKitAspect::cmakeTool(m_buildConfiguration->target()->kit());
if (cmakeBuildConfiguration()->isActive() && !isParsing()) {
const auto cmake = CMakeKitAspect::cmakeTool(cmakeBuildConfiguration()->target()->kit());
if (cmake && cmake->isAutoRun()) {
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to dirty project file";
m_buildDirManager.setParametersAndRequestParse(BuildDirParameters(
m_buildConfiguration),
cmakeBuildConfiguration()),
BuildDirManager::REPARSE_DEFAULT);
}
}
});
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to initial CMake BuildSystem setup";
m_buildDirManager.setParametersAndRequestParse(BuildDirParameters(m_buildConfiguration),
m_buildDirManager.setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()),
BuildDirManager::REPARSE_CHECK_CONFIGURATION);
}
@@ -284,7 +284,7 @@ QStringList CMakeBuildSystem::filesGeneratedFrom(const QString &sourceFile) cons
QDir srcDirRoot = QDir(project.toString());
QString relativePath = srcDirRoot.relativeFilePath(baseDirectory.toString());
QDir buildDir = QDir(buildConfiguration()->buildDirectory().toString());
QDir buildDir = QDir(cmakeBuildConfiguration()->buildDirectory().toString());
QString generatedFilePath = buildDir.absoluteFilePath(relativePath);
if (fi.suffix() == "ui") {
@@ -305,7 +305,7 @@ QStringList CMakeBuildSystem::filesGeneratedFrom(const QString &sourceFile) cons
void CMakeBuildSystem::runCMake()
{
BuildDirParameters parameters(m_buildConfiguration);
BuildDirParameters parameters(cmakeBuildConfiguration());
qCDebug(cmakeBuildSystemLog) << "Requesting parse due \"Run CMake\" command";
m_buildDirManager.setParametersAndRequestParse(parameters,
BuildDirManager::REPARSE_CHECK_CONFIGURATION
@@ -315,7 +315,7 @@ void CMakeBuildSystem::runCMake()
void CMakeBuildSystem::runCMakeAndScanProjectTree()
{
BuildDirParameters parameters(m_buildConfiguration);
BuildDirParameters parameters(cmakeBuildConfiguration());
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to \"Rescan Project\" command";
m_buildDirManager.setParametersAndRequestParse(parameters,
BuildDirManager::REPARSE_CHECK_CONFIGURATION
@@ -325,7 +325,7 @@ void CMakeBuildSystem::runCMakeAndScanProjectTree()
void CMakeBuildSystem::buildCMakeTarget(const QString &buildTarget)
{
QTC_ASSERT(!buildTarget.isEmpty(), return);
m_buildConfiguration->buildTarget(buildTarget);
cmakeBuildConfiguration()->buildTarget(buildTarget);
}
void CMakeBuildSystem::handleTreeScanningFinished()
@@ -380,7 +380,7 @@ std::unique_ptr<CMakeProjectNode>
void CMakeBuildSystem::combineScanAndParse()
{
if (m_buildConfiguration->isActive()) {
if (cmakeBuildConfiguration()->isActive()) {
if (m_waitingForParse || m_waitingForScan)
return;
@@ -398,7 +398,7 @@ void CMakeBuildSystem::combineScanAndParse()
void CMakeBuildSystem::checkAndReportError(QString &errorMessage)
{
if (!errorMessage.isEmpty()) {
m_buildConfiguration->setError(errorMessage);
cmakeBuildConfiguration()->setError(errorMessage);
errorMessage.clear();
}
}
@@ -409,13 +409,15 @@ void CMakeBuildSystem::updateProjectData()
QTC_ASSERT(m_treeScanner.isFinished() && !m_buildDirManager.isParsing(), return);
m_buildConfiguration->project()->setExtraProjectFiles(m_buildDirManager.projectFilesToWatch());
cmakeBuildConfiguration()->project()->setExtraProjectFiles(
m_buildDirManager.projectFilesToWatch());
CMakeConfig patchedConfig = m_buildConfiguration->configurationFromCMake();
CMakeConfig patchedConfig = cmakeBuildConfiguration()->configurationFromCMake();
{
CMakeConfigItem settingFileItem;
settingFileItem.key = "ANDROID_DEPLOYMENT_SETTINGS_FILE";
settingFileItem.value = m_buildConfiguration->buildDirectory()
settingFileItem.value = cmakeBuildConfiguration()
->buildDirectory()
.pathAppended("android_deployment_settings.json")
.toString()
.toUtf8();
@@ -479,7 +481,7 @@ void CMakeBuildSystem::updateProjectData()
QString errorMessage;
RawProjectParts rpps = m_buildDirManager.createRawProjectParts(errorMessage);
if (!errorMessage.isEmpty())
m_buildConfiguration->setError(errorMessage);
cmakeBuildConfiguration()->setError(errorMessage);
qCDebug(cmakeBuildSystemLog) << "Raw project parts created." << errorMessage;
for (RawProjectPart &rpp : rpps) {
@@ -491,13 +493,13 @@ void CMakeBuildSystem::updateProjectData()
rpp.setFlagsForC({kitInfo.cToolChain, rpp.flagsForC.commandLineFlags});
}
m_cppCodeModelUpdater->update({p, kitInfo, m_buildConfiguration->environment(), rpps});
m_cppCodeModelUpdater->update({p, kitInfo, cmakeBuildConfiguration()->environment(), rpps});
}
{
updateQmlJSCodeModel();
}
emit m_buildConfiguration->buildTypeChanged();
emit cmakeBuildConfiguration()->buildTypeChanged();
m_buildDirManager.resetData();
@@ -506,12 +508,12 @@ void CMakeBuildSystem::updateProjectData()
void CMakeBuildSystem::handleParsingSucceeded()
{
if (!m_buildConfiguration->isActive()) {
if (!cmakeBuildConfiguration()->isActive()) {
m_buildDirManager.stopParsingAndClearState();
return;
}
m_buildConfiguration->clearError();
cmakeBuildConfiguration()->clearError();
QString errorMessage;
{
@@ -522,7 +524,7 @@ void CMakeBuildSystem::handleParsingSucceeded()
{
const CMakeConfig cmakeConfig = m_buildDirManager.takeCMakeConfiguration(errorMessage);
checkAndReportError(errorMessage);
m_buildConfiguration->setConfigurationFromCMake(cmakeConfig);
cmakeBuildConfiguration()->setConfigurationFromCMake(cmakeConfig);
}
setApplicationTargets(appTargets());
@@ -533,10 +535,11 @@ void CMakeBuildSystem::handleParsingSucceeded()
void CMakeBuildSystem::handleParsingFailed(const QString &msg)
{
m_buildConfiguration->setError(msg);
cmakeBuildConfiguration()->setError(msg);
QString errorMessage;
m_buildConfiguration->setConfigurationFromCMake(m_buildDirManager.takeCMakeConfiguration(errorMessage));
cmakeBuildConfiguration()->setConfigurationFromCMake(
m_buildDirManager.takeCMakeConfiguration(errorMessage));
// ignore errorMessage here, we already got one.
handleParsingError();
@@ -563,8 +566,8 @@ static Utils::FilePaths librarySearchPaths(const CMakeBuildSystem *bs, const QSt
const QList<BuildTargetInfo> CMakeBuildSystem::appTargets() const
{
QList<BuildTargetInfo> appTargetList;
const bool forAndroid = DeviceTypeKitAspect::deviceTypeId(target()->kit())
== Android::Constants::ANDROID_DEVICE_TYPE;
const bool forAndroid = DeviceTypeKitAspect::deviceTypeId(kit())
== Android::Constants::ANDROID_DEVICE_TYPE;
for (const CMakeBuildTarget &ct : m_buildTargets) {
if (ct.targetType == UtilityType)
continue;
@@ -609,8 +612,8 @@ DeploymentData CMakeBuildSystem::deploymentData() const
{
DeploymentData result;
QDir sourceDir = target()->project()->projectDirectory().toString();
QDir buildDir = buildConfiguration()->buildDirectory().toString();
QDir sourceDir = project()->projectDirectory().toString();
QDir buildDir = cmakeBuildConfiguration()->buildDirectory().toString();
QString deploymentPrefix;
QString deploymentFilePath = sourceDir.filePath("QtCreatorDeployment.txt");
@@ -709,7 +712,7 @@ void CMakeBuildSystem::updateQmlJSCodeModel()
projectInfo.importPaths.clear();
const CMakeConfig &cm = m_buildConfiguration->configurationFromCMake();
const CMakeConfig &cm = cmakeBuildConfiguration()->configurationFromCMake();
const QString cmakeImports = QString::fromUtf8(CMakeConfigItem::valueOf("QML_IMPORT_PATH", cm));
foreach (const QString &cmakeImport, CMakeConfigItem::cmakeSplitValue(cmakeImports))

View File

@@ -369,8 +369,8 @@ void CompilationDatabaseBuildSystem::triggerParsing()
void CompilationDatabaseBuildSystem::buildTreeAndProjectParts()
{
Kit *kit = target()->kit();
ProjectExplorer::KitInfo kitInfo(kit);
Kit *k = kit();
ProjectExplorer::KitInfo kitInfo(k);
QTC_ASSERT(kitInfo.isValid(), return);
// Reset toolchains to pick them based on the database entries.
kitInfo.cToolChain = nullptr;
@@ -389,7 +389,7 @@ void CompilationDatabaseBuildSystem::buildTreeAndProjectParts()
prevEntry = &entry;
RawProjectPart rpp = makeRawProjectPart(projectFilePath(),
kit,
k,
kitInfo,
entry.workingDir,
entry.fileName,

View File

@@ -239,8 +239,7 @@ static void createTree(QmakeBuildSystem *buildSystem,
std::unique_ptr<QmakeProFileNode> QmakeNodeTreeBuilder::buildTree(QmakeBuildSystem *buildSystem)
{
// Remove qmake implementation details that litter up the project data:
Target *t = buildSystem->target();
BaseQtVersion *qt = QtKitAspect::qtVersion(t->kit());
BaseQtVersion *qt = QtKitAspect::qtVersion(buildSystem->kit());
const FilePaths toExclude = qt ? qt->directoriesToIgnoreInProjectTree() : FilePaths();

View File

@@ -577,12 +577,13 @@ void QmakeBuildSystem::asyncUpdate()
m_asyncUpdateFutureInterface.reportStarted();
const Kit * const kit = target()->kit();
QtSupport::BaseQtVersion * const qtVersion = QtSupport::QtKitAspect::qtVersion(kit);
const Kit *const k = kit();
QtSupport::BaseQtVersion *const qtVersion = QtSupport::QtKitAspect::qtVersion(k);
if (!qtVersion || !qtVersion->isValid()) {
const QString errorMessage = kit
? tr("Cannot parse project \"%1\": The currently selected kit \"%2\" does not "
"have a valid Qt.").arg(project()->displayName(), kit->displayName())
const QString errorMessage
= k ? tr("Cannot parse project \"%1\": The currently selected kit \"%2\" does not "
"have a valid Qt.")
.arg(project()->displayName(), k->displayName())
: tr("Cannot parse project \"%1\": No kit selected.").arg(project()->displayName());
proFileParseError(errorMessage);
m_asyncUpdateFutureInterface.reportCanceled();
@@ -668,13 +669,14 @@ QtSupport::ProFileReader *QmakeBuildSystem::createProFileReader(const QmakeProFi
QStringList qmakeArgs;
Target *t = target();
Kit *k = t->kit();
Environment env = m_buildConfiguration->environment();
if (QMakeStep *qs = m_buildConfiguration->qmakeStep())
Kit *k = kit();
QmakeBuildConfiguration *bc = m_buildConfiguration;
Environment env = bc->environment();
if (QMakeStep *qs = bc->qmakeStep())
qmakeArgs = qs->parserArguments();
else
qmakeArgs = m_buildConfiguration->configCommandLineArguments();
qmakeArgs = bc->configCommandLineArguments();
QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(k);
m_qmakeSysroot = SysRootKitAspect::sysRoot(k).toString();
@@ -757,7 +759,7 @@ void QmakeBuildSystem::deregisterFromCacheManager()
void QmakeBuildSystem::activeTargetWasChanged(Target *t)
{
// We are only interested in our own target.
if (t != m_buildConfiguration->target())
if (t != target())
return;
m_invalidateQmakeVfsContents = true;
@@ -1052,7 +1054,7 @@ void QmakeBuildSystem::updateBuildSystemData()
libraryPaths.append(dir);
}
}
QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(target()->kit());
QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(kit());
if (qtVersion)
libraryPaths.append(qtVersion->librarySearchPath().toString());
@@ -1126,8 +1128,7 @@ void QmakeBuildSystem::collectLibraryData(const QmakeProFile *file, DeploymentDa
const QString targetPath = file->installsList().targetPath;
if (targetPath.isEmpty())
return;
const Kit * const kit = target()->kit();
const ToolChain * const toolchain = ToolChainKitAspect::cxxToolChain(kit);
const ToolChain *const toolchain = ToolChainKitAspect::cxxToolChain(kit());
if (!toolchain)
return;
@@ -1270,21 +1271,18 @@ void QmakeBuildSystem::testToolChain(ToolChain *tc, const FilePath &path) const
void QmakeBuildSystem::warnOnToolChainMismatch(const QmakeProFile *pro) const
{
const Target *t = target();
const BuildConfiguration *bc = t ? t->activeBuildConfiguration() : nullptr;
const BuildConfiguration *bc = m_buildConfiguration;
if (!bc)
return;
testToolChain(ToolChainKitAspect::cToolChain(t->kit()),
getFullPathOf(pro, Variable::QmakeCc, bc));
testToolChain(ToolChainKitAspect::cxxToolChain(t->kit()),
testToolChain(ToolChainKitAspect::cToolChain(kit()), getFullPathOf(pro, Variable::QmakeCc, bc));
testToolChain(ToolChainKitAspect::cxxToolChain(kit()),
getFullPathOf(pro, Variable::QmakeCxx, bc));
}
QString QmakeBuildSystem::executableFor(const QmakeProFile *file)
{
const Kit *const kit = target()->kit();
const ToolChain *const tc = ToolChainKitAspect::cxxToolChain(kit);
const ToolChain *const tc = ToolChainKitAspect::cxxToolChain(kit());
if (!tc)
return QString();