summaryrefslogtreecommitdiffstats
path: root/qmake/qmakelibraryinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/qmakelibraryinfo.cpp')
-rw-r--r--qmake/qmakelibraryinfo.cpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/qmake/qmakelibraryinfo.cpp b/qmake/qmakelibraryinfo.cpp
index ac8d191248..e8bb70071e 100644
--- a/qmake/qmakelibraryinfo.cpp
+++ b/qmake/qmakelibraryinfo.cpp
@@ -51,9 +51,8 @@
QT_BEGIN_NAMESPACE
-// qmake_libraryInfoFile and qmake_abslocation are defined in option.cpp
-QString qmake_libraryInfoFile();
-QString qmake_abslocation();
+QString QMakeLibraryInfo::binaryAbsLocation;
+QString QMakeLibraryInfo::qtconfManualPath;
struct QMakeLibrarySettings
{
@@ -72,7 +71,7 @@ Q_GLOBAL_STATIC(QMakeLibrarySettings, qmake_library_settings)
QSettings *QMakeLibraryInfo::findConfiguration()
{
- QString qtconfig = qmake_libraryInfoFile();
+ QString qtconfig = libraryInfoFile();
if (!qtconfig.isEmpty())
return new QSettings(qtconfig, QSettings::IniFormat);
return nullptr; // no luck
@@ -139,9 +138,9 @@ void QMakeLibraryInfo::sysrootify(QString &path)
}
}
-static QString getPrefix()
+QString QMakeLibraryInfo::getPrefix()
{
- const QString canonicalQMakePath = QFileInfo(qmake_abslocation()).canonicalPath();
+ const QString canonicalQMakePath = QFileInfo(binaryAbsLocation).canonicalPath();
return QDir::cleanPath(canonicalQMakePath + QLatin1Char('/')
+ QLatin1String(QT_CONFIGURE_RELATIVE_PREFIX_PATH));
}
@@ -274,7 +273,7 @@ QString QMakeLibraryInfo::rawLocation(int loc, QMakeLibraryInfo::PathGroup group
// We make the prefix/sysroot path absolute to the executable's directory.
// loc == PrefixPath while a sysroot is set would make no sense here.
// loc == SysrootPath only makes sense if qmake lives inside the sysroot itself.
- baseDir = QFileInfo(qmake_libraryInfoFile()).absolutePath();
+ baseDir = QFileInfo(libraryInfoFile()).absolutePath();
} else if (loc > SysrootPath && loc <= LastHostPath) {
// We make any other host path absolute to the host prefix directory.
baseDir = rawLocation(HostPrefixPath, group);
@@ -289,4 +288,20 @@ QString QMakeLibraryInfo::rawLocation(int loc, QMakeLibraryInfo::PathGroup group
return ret;
}
+QString QMakeLibraryInfo::libraryInfoFile()
+{
+ if (!qtconfManualPath.isEmpty())
+ return qtconfManualPath;
+ if (!binaryAbsLocation.isEmpty()) {
+ QDir dir(QFileInfo(binaryAbsLocation).absolutePath());
+ QString qtconfig = dir.filePath("qt" QT_STRINGIFY(QT_VERSION_MAJOR) ".conf");
+ if (QFile::exists(qtconfig))
+ return qtconfig;
+ qtconfig = dir.filePath("qt.conf");
+ if (QFile::exists(qtconfig))
+ return qtconfig;
+ }
+ return QString();
+}
+
QT_END_NAMESPACE