aboutsummaryrefslogtreecommitdiffstats
path: root/src/shared/proparser
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2016-10-25 21:25:25 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2016-11-01 17:37:17 +0000
commit5f17c280ec2f077670b82cfd9d255449ceedee7e (patch)
treecf1e993681284c6c690d6a3b73b9ff5cf1de37e0 /src/shared/proparser
parent4a59a7d714bdfdf54e279d6dc8de11383fff7ccd (diff)
de-duplicate INSTALLS resolution
don't resolve the source files once for deployment and once for the project tree. Change-Id: Ifddf8fc7883bf025d3640de0d6676b5930991088 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/shared/proparser')
-rw-r--r--src/shared/proparser/profileevaluator.cpp35
-rw-r--r--src/shared/proparser/profileevaluator.h4
2 files changed, 19 insertions, 20 deletions
diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp
index 3124b27331..f60c6afa2c 100644
--- a/src/shared/proparser/profileevaluator.cpp
+++ b/src/shared/proparser/profileevaluator.cpp
@@ -76,36 +76,35 @@ QStringList ProFileEvaluator::values(const QString &variableName) const
return ret;
}
-QStringList ProFileEvaluator::values(const QString &variableName, const ProFile *pro) const
-{
- // It makes no sense to put any kind of magic into expanding these
- const ProStringList &values = d->m_valuemapStack.first().value(ProKey(variableName));
- QStringList ret;
- ret.reserve(values.size());
- foreach (const ProString &str, values)
- if (str.sourceFile() == pro)
- ret << d->m_option->expandEnvVars(str.toQString());
- return ret;
-}
-
-QStringList ProFileEvaluator::fixifiedValues(
+QVector<ProFileEvaluator::SourceFile> ProFileEvaluator::fixifiedValues(
const QString &variable, const QString &baseDirectory, const QString &buildDirectory) const
{
- QStringList result;
- foreach (const QString &el, values(variable)) {
+ QVector<SourceFile> result;
+ foreach (const ProString &str, d->values(ProKey(variable))) {
+ const QString &el = d->m_option->expandEnvVars(str.toQString());
if (IoUtils::isAbsolutePath(el)) {
- result << el;
+ result << SourceFile{ el, str.sourceFile() };
} else {
QString fn = QDir::cleanPath(baseDirectory + QLatin1Char('/') + el);
if (IoUtils::exists(fn))
- result << fn;
+ result << SourceFile{ fn, str.sourceFile() };
else
- result << QDir::cleanPath(buildDirectory + QLatin1Char('/') + el);
+ result << SourceFile{ QDir::cleanPath(buildDirectory + QLatin1Char('/') + el),
+ str.sourceFile() };
}
}
return result;
}
+QStringList ProFileEvaluator::sourcesToFiles(const QVector<ProFileEvaluator::SourceFile> &sources)
+{
+ QStringList result;
+ result.reserve(sources.size());
+ for (const auto &src : sources)
+ result << src.fileName;
+ return result;
+}
+
// VFS note: all search paths are assumed to be real.
QStringList ProFileEvaluator::absolutePathValues(
const QString &variable, const QString &baseDirectory) const
diff --git a/src/shared/proparser/profileevaluator.h b/src/shared/proparser/profileevaluator.h
index a356dadaf7..d001c9d7b0 100644
--- a/src/shared/proparser/profileevaluator.h
+++ b/src/shared/proparser/profileevaluator.h
@@ -80,14 +80,14 @@ public:
bool contains(const QString &variableName) const;
QString value(const QString &variableName) const;
QStringList values(const QString &variableName) const;
- QStringList values(const QString &variableName, const ProFile *pro) const;
- QStringList fixifiedValues(
+ QVector<SourceFile> fixifiedValues(
const QString &variable, const QString &baseDirectory, const QString &buildDirectory) const;
QStringList absolutePathValues(const QString &variable, const QString &baseDirectory) const;
QVector<SourceFile> absoluteFileValues(
const QString &variable, const QString &baseDirectory, const QStringList &searchDirs,
QHash<ProString, bool> *handled) const;
QString propertyValue(const QString &val) const;
+ static QStringList sourcesToFiles(const QVector<SourceFile> &sources);
private:
QMakeEvaluator *d;