From 5f17c280ec2f077670b82cfd9d255449ceedee7e Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 25 Oct 2016 21:25:25 +0200 Subject: 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 --- src/shared/proparser/profileevaluator.cpp | 35 +++++++++++++++---------------- src/shared/proparser/profileevaluator.h | 4 ++-- 2 files changed, 19 insertions(+), 20 deletions(-) (limited to 'src/shared/proparser') diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp index 3124b273319..f60c6afa2c8 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::fixifiedValues( const QString &variable, const QString &baseDirectory, const QString &buildDirectory) const { - QStringList result; - foreach (const QString &el, values(variable)) { + QVector 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 &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 a356dadaf7a..d001c9d7b0d 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 fixifiedValues( const QString &variable, const QString &baseDirectory, const QString &buildDirectory) const; QStringList absolutePathValues(const QString &variable, const QString &baseDirectory) const; QVector absoluteFileValues( const QString &variable, const QString &baseDirectory, const QStringList &searchDirs, QHash *handled) const; QString propertyValue(const QString &val) const; + static QStringList sourcesToFiles(const QVector &sources); private: QMakeEvaluator *d; -- cgit v1.2.3