diff options
-rw-r--r-- | src/shared/proparser/qmakebuiltins.cpp | 12 | ||||
-rw-r--r-- | src/shared/proparser/qmakeglobals.cpp | 12 | ||||
-rw-r--r-- | src/shared/proparser/qmakeglobals.h | 1 |
3 files changed, 15 insertions, 10 deletions
diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp index 568cbbc35a4..2b7b1cd434c 100644 --- a/src/shared/proparser/qmakebuiltins.cpp +++ b/src/shared/proparser/qmakebuiltins.cpp @@ -945,17 +945,9 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand( if (args.count() != 1) { evalError(fL1S("shadowed(path) requires one argument.")); } else { - QString val = resolvePath(args.at(0).toQString(m_tmp1)); - QString rstr; - if (m_option->source_root.isEmpty()) { - rstr = val; - } else if (val.startsWith(m_option->source_root) - && (val.length() == m_option->source_root.length() - || val.at(m_option->source_root.length()) == QLatin1Char('/'))) { - rstr = m_option->build_root + val.mid(m_option->source_root.length()); - } else { + QString rstr = m_option->shadowedPath(resolvePath(args.at(0).toQString(m_tmp1))); + if (rstr.isEmpty()) break; - } ret << (rstr.isSharedWith(m_tmp1) ? args.at(0) : ProString(rstr).setSource(args.at(0))); } break; diff --git a/src/shared/proparser/qmakeglobals.cpp b/src/shared/proparser/qmakeglobals.cpp index 104f963d7ad..3a948655295 100644 --- a/src/shared/proparser/qmakeglobals.cpp +++ b/src/shared/proparser/qmakeglobals.cpp @@ -248,6 +248,18 @@ void QMakeGlobals::setDirectories(const QString &input_dir, const QString &outpu } } +QString QMakeGlobals::shadowedPath(const QString &fileName) const +{ + if (source_root.isEmpty()) + return fileName; + if (fileName.startsWith(source_root) + && (fileName.length() == source_root.length() + || fileName.at(source_root.length()) == QLatin1Char('/'))) { + return build_root + fileName.mid(source_root.length()); + } + return QString(); +} + QString QMakeGlobals::getEnv(const QString &var) const { #ifdef PROEVALUATOR_SETENV diff --git a/src/shared/proparser/qmakeglobals.h b/src/shared/proparser/qmakeglobals.h index 3e6bad5bab8..94c366be6db 100644 --- a/src/shared/proparser/qmakeglobals.h +++ b/src/shared/proparser/qmakeglobals.h @@ -133,6 +133,7 @@ public: #endif QString expandEnvVars(const QString &str) const; + QString shadowedPath(const QString &fileName) const; private: QString getEnv(const QString &) const; |