aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmakeprojectmanager
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-03-20 14:55:49 +0100
committerhjk <hjk@qt.io>2020-03-23 07:42:15 +0000
commit80a766a2cbffdedc975f6ed3ebe225bfcfb433d9 (patch)
tree2b8e5162f1ccabfff7342de04fa004b3c800e4b1 /src/plugins/qmakeprojectmanager
parenta040bebe5d61837178ae0aebddd5f8a571ff2307 (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.cpp4
-rw-r--r--src/plugins/qmakeprojectmanager/qmakenodes.cpp6
-rw-r--r--src/plugins/qmakeprojectmanager/qmakenodes.h1
-rw-r--r--src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp2
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp18
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeparsernodes.h1
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp21
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.h1
-rw-r--r--src/plugins/qmakeprojectmanager/qmakestep.cpp2
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();