diff options
author | hjk <hjk@qt.io> | 2020-03-20 14:55:49 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-03-23 07:42:15 +0000 |
commit | 80a766a2cbffdedc975f6ed3ebe225bfcfb433d9 (patch) | |
tree | 2b8e5162f1ccabfff7342de04fa004b3c800e4b1 /src/plugins/qmakeprojectmanager | |
parent | a040bebe5d61837178ae0aebddd5f8a571ff2307 (diff) |
Qmake: Move buildDir() from ProFileNode to QmakeBuildSystem
More a buildsystem than a node thing in general and removes
one use of activeBuildSystem and one use of the ProFileNode
-> ProFile back pointers.
Change-Id: Ie007fcd0db9e9294a08b3a1cd68f825c7d3dc9b8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/qmakeprojectmanager')
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakemakestep.cpp | 4 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakenodes.cpp | 6 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakenodes.h | 1 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp | 18 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeparsernodes.h | 1 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeproject.cpp | 21 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeproject.h | 1 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakestep.cpp | 2 |
9 files changed, 23 insertions, 33 deletions
diff --git a/src/plugins/qmakeprojectmanager/qmakemakestep.cpp b/src/plugins/qmakeprojectmanager/qmakemakestep.cpp index dbf1ed2569..118df07c11 100644 --- a/src/plugins/qmakeprojectmanager/qmakemakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakemakestep.cpp @@ -84,7 +84,7 @@ bool QmakeMakeStep::init() Utils::FilePath workingDirectory; if (bc->subNodeBuild()) - workingDirectory = bc->subNodeBuild()->buildDir(bc); + workingDirectory = bc->qmakeBuildSystem()->buildDir(bc->subNodeBuild()->filePath()); else workingDirectory = bc->buildDirectory(); pp->setWorkingDirectory(workingDirectory); @@ -130,7 +130,7 @@ bool QmakeMakeStep::init() if (bc->fileNodeBuild() && subProFile) { QString objectsDir = subProFile->objectsDirectory(); if (objectsDir.isEmpty()) { - objectsDir = subProFile->buildDir(bc).toString(); + objectsDir = bc->qmakeBuildSystem()->buildDir(subProFile->filePath()).toString(); if (subProFile->isDebugAndRelease()) { if (bc->buildType() == QmakeBuildConfiguration::Debug) objectsDir += "/debug"; diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index a944edc8bd..1c2434a79c 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -505,12 +505,6 @@ QString QmakeProFileNode::singleVariableValue(const Variable var) const return values.isEmpty() ? QString() : values.first(); } -FilePath QmakeProFileNode::buildDir(BuildConfiguration *bc) const -{ - const QmakeProFile *pro = proFile(); - return pro ? pro->buildDir(bc) : FilePath(); -} - QString QmakeProFileNode::objectExtension() const { QStringList exts = variableValue(Variable::ObjectExt); diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index cf92bd950c..c6793dea0d 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -98,7 +98,6 @@ public: bool setData(Core::Id role, const QVariant &value) const override; QmakeProjectManager::ProjectType projectType() const; - Utils::FilePath buildDir(ProjectExplorer::BuildConfiguration *bc) const; QStringList variableValue(const Variable var) const; QString singleVariableValue(const Variable var) const; diff --git a/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp b/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp index 03d9570f2b..05a5f1fac5 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp @@ -211,7 +211,7 @@ static void createTree(QmakeBuildSystem *buildSystem, if (!generatedFiles.empty()) { QTC_CHECK(proFile); const FilePath baseDir = generatedFiles.size() == 1 ? generatedFiles.first().parentDir() - : proFile->buildDir(); + : buildSystem->buildDir(proFile->filePath()); auto genFolder = std::make_unique<VirtualFolderNode>(baseDir); genFolder->setDisplayName(QCoreApplication::translate("QmakeProjectManager::QmakePriFile", "Generated Files")); diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp index 068fb5d703..502f9e34e2 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp @@ -1336,7 +1336,7 @@ QmakeEvalInput QmakeProFile::evalInput() const QmakeEvalInput input; input.projectDir = directoryPath().toString(); input.projectFilePath = filePath(); - input.buildDirectory = buildDir(); + input.buildDirectory = m_buildSystem->buildDir(m_filePath); input.sysroot = FilePath::fromString(m_buildSystem->qmakeSysroot()); input.readerExact = m_readerExact; input.readerCumulative = m_readerCumulative; @@ -1726,7 +1726,7 @@ void QmakeProFile::applyEvaluate(QmakeEvalResult *evalResult) // // Add/Remove pri files, sub projects // - FilePath buildDirectory = buildDir(); + FilePath buildDirectory = m_buildSystem->buildDir(m_filePath); makeEmpty(); for (QmakePriFile * const toAdd : qAsConst(result->directChildren)) addChild(toAdd); @@ -2069,20 +2069,6 @@ FilePath QmakeProFile::sourceDir() const return directoryPath(); } -FilePath QmakeProFile::buildDir(BuildConfiguration *bc) const -{ - if (!bc) - bc = m_buildSystem->target()->activeBuildConfiguration(); - - const QDir srcDirRoot = QDir(m_buildSystem->projectDirectory().toString()); - const QString relativeDir = srcDirRoot.relativeFilePath(directoryPath().toString()); - const QString buildConfigBuildDir = bc ? bc->buildDirectory().toString() : QString(); - const QString buildDir = buildConfigBuildDir.isEmpty() - ? m_buildSystem->projectDirectory().toString() - : buildConfigBuildDir; - return FilePath::fromString(QDir::cleanPath(QDir(buildDir).absoluteFilePath(relativeDir))); -} - FilePaths QmakeProFile::generatedFiles(const FilePath &buildDir, const FilePath &sourceFile, const FileType &sourceFileType) const diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h index b30aafd6af..54331a82d7 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h @@ -321,7 +321,6 @@ public: } Utils::FilePath sourceDir() const; - Utils::FilePath buildDir(ProjectExplorer::BuildConfiguration *bc = nullptr) const; Utils::FilePaths generatedFiles(const Utils::FilePath &buildDirectory, const Utils::FilePath &sourceFile, diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index c3de314e71..66c49ab5cf 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -656,6 +656,17 @@ static FileNode *fileNodeOf(FolderNode *in, const FilePath &fileName) return nullptr; } +FilePath QmakeBuildSystem::buildDir(const FilePath &proFilePath) const +{ + const QDir srcDirRoot = QDir(projectDirectory().toString()); + const QString relativeDir = srcDirRoot.relativeFilePath(proFilePath.parentDir().toString()); + const QString buildConfigBuildDir = m_buildConfiguration->buildDirectory().toString(); + const QString buildDir = buildConfigBuildDir.isEmpty() + ? projectDirectory().toString() + : buildConfigBuildDir; + return FilePath::fromString(QDir::cleanPath(QDir(buildDir).absoluteFilePath(relativeDir))); +} + void QmakeBuildSystem::proFileParseError(const QString &errorMessage) { Core::MessageManager::write(errorMessage); @@ -686,13 +697,13 @@ QtSupport::ProFileReader *QmakeBuildSystem::createProFileReader(const QmakeProFi qtVersion->applyProperties(m_qmakeGlobals.get()); } m_qmakeGlobals->setDirectories(rootProFile()->sourceDir().toString(), - rootProFile()->buildDir().toString()); + buildDir(rootProFile()->filePath()).toString()); Environment::const_iterator eit = env.constBegin(), eend = env.constEnd(); for (; eit != eend; ++eit) m_qmakeGlobals->environment.insert(env.key(eit), env.expandedValueForKey(env.key(eit))); - m_qmakeGlobals->setCommandLineArguments(rootProFile()->buildDir().toString(), qmakeArgs); + m_qmakeGlobals->setCommandLineArguments(buildDir(rootProFile()->filePath()).toString(), qmakeArgs); QtSupport::ProFileCacheManager::instance()->incRefCount(); @@ -714,7 +725,7 @@ QtSupport::ProFileReader *QmakeBuildSystem::createProFileReader(const QmakeProFi auto reader = new QtSupport::ProFileReader(m_qmakeGlobals.get(), m_qmakeVfs); - reader->setOutputDir(qmakeProFile->buildDir().toString()); + reader->setOutputDir(buildDir(qmakeProFile->filePath()).toString()); return reader; } @@ -1045,7 +1056,7 @@ void QmakeBuildSystem::updateBuildSystemData() if (!libDirectories.isEmpty()) { QmakeProFile *proFile = node->proFile(); QTC_ASSERT(proFile, return); - const QString proDirectory = proFile->buildDir().toString(); + const QString proDirectory = buildDir(proFile->filePath()).toString(); foreach (QString dir, libDirectories) { // Fix up relative entries like "LIBS+=-L.." const QFileInfo fi(dir); @@ -1335,7 +1346,7 @@ QStringList QmakeBuildSystem::filesGeneratedFrom(const QString &input) const const QmakeProFileNode *pro = dynamic_cast<QmakeProFileNode *>(file->parentFolderNode()); QTC_ASSERT(pro, return {}); if (const QmakeProFile *proFile = pro->proFile()) - return Utils::transform(proFile->generatedFiles(pro->buildDir(nullptr), + return Utils::transform(proFile->generatedFiles(buildDir(pro->filePath()), file->filePath(), file->fileType()), &FilePath::toString); } diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index c25dfcc32d..1165a603e1 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -170,6 +170,7 @@ public: void scheduleUpdateAll(QmakeProFile::AsyncUpdateDelay delay); void scheduleUpdateAllLater() { scheduleUpdateAll(QmakeProFile::ParseLater); } void scheduleUpdateAllNowOrLater(); + Utils::FilePath buildDir(const Utils::FilePath &proFilePath) const; mutable QSet<const QPair<Utils::FilePath, Utils::FilePath>> m_toolChainWarnings; diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index 7bee09695f..2851b114a6 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -178,7 +178,7 @@ bool QMakeStep::init() FilePath workingDirectory; if (qmakeBc->subNodeBuild()) - workingDirectory = qmakeBc->subNodeBuild()->buildDir(qmakeBc); + workingDirectory = qmakeBc->qmakeBuildSystem()->buildDir(qmakeBc->subNodeBuild()->filePath()); else workingDirectory = qmakeBc->buildDirectory(); |