Qmake: Move some data accessors from QmakeProFile to QmakeProFileNode

These are not used during parsing but when operating on the items
in the project tree.

This loosens the ties between the qmake related parser and project
nodes.

Change-Id: I077356fcde240df56b466c71c902c821c4885f6d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2018-11-13 15:30:27 +01:00
parent b2cea9474c
commit 54efabd6e9
7 changed files with 48 additions and 39 deletions

View File

@@ -254,7 +254,8 @@ bool QmakeBuildConfiguration::isShadowBuild() const
QString QmakeBuildConfiguration::makefile() const
{
return static_cast<QmakeProject *>(target()->project())->rootProFile()->makefile();
auto rootNode = dynamic_cast<QmakeProFileNode *>(target()->project()->rootProjectNode());
return rootNode ? rootNode->makefile() : QString();
}
BaseQtVersion::QmakeBuildConfigs QmakeBuildConfiguration::qmakeBuildConfiguration() const

View File

@@ -99,8 +99,7 @@ bool QmakeMakeStep::init(QList<const BuildStep *> &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())

View File

@@ -228,6 +228,28 @@ QmakeProFile *QmakeProFileNode::proFile() const
return static_cast<QmakeProFile*>(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

View File

@@ -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;

View File

@@ -1029,23 +1029,6 @@ const QmakeProFile *QmakeProFile::findProFile(const FileName &fileName) const
return static_cast<const QmakeProFile *>(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 *> 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;

View File

@@ -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();

View File

@@ -191,7 +191,7 @@ bool QMakeStep::init(QList<const BuildStep *> &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