diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index e4eeaa4f428..6dcb96a8817 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -254,7 +254,8 @@ bool QmakeBuildConfiguration::isShadowBuild() const QString QmakeBuildConfiguration::makefile() const { - return static_cast(target()->project())->rootProFile()->makefile(); + auto rootNode = dynamic_cast(target()->project()->rootProjectNode()); + return rootNode ? rootNode->makefile() : QString(); } BaseQtVersion::QmakeBuildConfigs QmakeBuildConfiguration::qmakeBuildConfiguration() const diff --git a/src/plugins/qmakeprojectmanager/qmakemakestep.cpp b/src/plugins/qmakeprojectmanager/qmakemakestep.cpp index 3fad755f80b..d4ca924dbe1 100644 --- a/src/plugins/qmakeprojectmanager/qmakemakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakemakestep.cpp @@ -99,8 +99,7 @@ bool QmakeMakeStep::init(QList &earlierSteps) QString args; - QmakeProjectManager::QmakeProFileNode *subNode = bc->subNodeBuild(); - QmakeProjectManager::QmakeProFile *subProFile = subNode ? subNode->proFile() : nullptr; + QmakeProjectManager::QmakeProFileNode *subProFile = bc->subNodeBuild(); if (subProFile) { QString makefile = subProFile->makefile(); if (makefile.isEmpty()) diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 002c39cae44..1e145fbec52 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -228,6 +228,28 @@ QmakeProFile *QmakeProFileNode::proFile() const return static_cast(QmakePriFileNode::priFile()); } +QString QmakeProFileNode::makefile() const +{ + return singleVariableValue(Variable::Makefile); +} + +QString QmakeProFileNode::objectsDirectory() const +{ + return singleVariableValue(Variable::ObjectsDir); +} + +bool QmakeProFileNode::isDebugAndRelease() const +{ + const QStringList configValues = variableValue(Variable::Config); + return configValues.contains(QLatin1String("debug_and_release")); +} + +bool QmakeProFileNode::isQtcRunnable() const +{ + const QStringList configValues = variableValue(Variable::Config); + return configValues.contains(QLatin1String("qtc_runnable")); +} + FolderNode::AddNewInformation QmakeProFileNode::addNewInformation(const QStringList &files, Node *context) const { Q_UNUSED(files) @@ -271,4 +293,18 @@ QString QmakeProFileNode::buildDir() const return QString(); } +FileName QmakeProFileNode::buildDir(QmakeBuildConfiguration *bc) const +{ + const QmakeProFile *pro = proFile(); + return pro ? pro->buildDir(bc) : FileName(); +} + +QString QmakeProFileNode::objectExtension() const +{ + QStringList exts = variableValue(Variable::ObjectExt); + if (exts.isEmpty()) + return HostOsInfo::isWindowsHost() ? QLatin1String(".obj") : QLatin1String(".o"); + return exts.first(); +} + } // namespace QmakeProjectManager diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index 8c1cddbaeb3..5b69e1fae99 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -82,12 +82,20 @@ public: QmakeProFile *proFile() const; + QString makefile() const; + QString objectsDirectory() const; + QString objectExtension() const; + + bool isDebugAndRelease() const; + bool isQtcRunnable() const; + bool showInSimpleTree() const override; AddNewInformation addNewInformation(const QStringList &files, Node *context) const override; QmakeProjectManager::ProjectType projectType() const; QString buildDir() const; + Utils::FileName buildDir(QmakeBuildConfiguration *bc) const; QStringList variableValue(const Variable var) const; QString singleVariableValue(const Variable var) const; diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp index 53cb741e7ee..246cd05a78a 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp @@ -1029,23 +1029,6 @@ const QmakeProFile *QmakeProFile::findProFile(const FileName &fileName) const return static_cast(findPriFile(fileName)); } -QString QmakeProFile::makefile() const -{ - return singleVariableValue(Variable::Makefile); -} - -QString QmakeProFile::objectExtension() const -{ - if (m_varValues[Variable::ObjectExt].isEmpty()) - return HostOsInfo::isWindowsHost() ? QLatin1String(".obj") : QLatin1String(".o"); - return m_varValues[Variable::ObjectExt].first(); -} - -QString QmakeProFile::objectsDirectory() const -{ - return singleVariableValue(Variable::ObjectsDir); -} - QByteArray QmakeProFile::cxxDefines() const { QByteArray result; @@ -1125,18 +1108,6 @@ QList QmakeProFile::allProFiles() return result; } -bool QmakeProFile::isDebugAndRelease() const -{ - const QStringList configValues = m_varValues.value(Variable::Config); - return configValues.contains(QLatin1String("debug_and_release")); -} - -bool QmakeProFile::isQtcRunnable() const -{ - const QStringList configValues = m_varValues.value(Variable::Config); - return configValues.contains(QLatin1String("qtc_runnable")); -} - ProjectType QmakeProFile::projectType() const { return m_projectType; diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h index 0889d23022a..7b09fbc7024 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h @@ -303,9 +303,6 @@ public: TargetInformation targetInformation() const; InstallsList installsList() const; - QString makefile() const; - QString objectExtension() const; - QString objectsDirectory() const; QByteArray cxxDefines() const; enum AsyncUpdateDelay { ParseNow, ParseLater }; @@ -315,9 +312,6 @@ public: bool validParse() const; bool parseInProgress() const; - bool isDebugAndRelease() const; - bool isQtcRunnable() const; - void setParseInProgressRecursive(bool b); void asyncUpdate(); diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index 8ff396e0224..43b0a9a6534 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -191,7 +191,7 @@ bool QMakeStep::init(QList &earlierSteps) QString makefile = workingDirectory + '/'; if (qmakeBc->subNodeBuild()) { - QmakeProFile *pro = qmakeBc->subNodeBuild()->proFile(); + QmakeProFileNode *pro = qmakeBc->subNodeBuild(); if (pro && !pro->makefile().isEmpty()) makefile.append(pro->makefile()); else