summaryrefslogtreecommitdiffstats
path: root/qmake/qmakelibraryinfo.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2021-03-05 16:33:24 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2021-03-11 09:59:51 +0100
commitc651e7ba18e094a0cb7bd46ea5ec6cad49ca3220 (patch)
tree6026fb118ffa71ce7b95656987894df5e21b1892 /qmake/qmakelibraryinfo.cpp
parent504d0c37550931fe606f8b74ea2b5740f0c8539e (diff)
Do not write Sysroot and SysrootifyPrefix into qmakeconfig.cpp
Those have fixed values. Change-Id: I7f1ba8036f43413d3c805f4b419ae79e037343fb Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'qmake/qmakelibraryinfo.cpp')
-rw-r--r--qmake/qmakelibraryinfo.cpp65
1 files changed, 41 insertions, 24 deletions
diff --git a/qmake/qmakelibraryinfo.cpp b/qmake/qmakelibraryinfo.cpp
index b1d625b906..937f0811dd 100644
--- a/qmake/qmakelibraryinfo.cpp
+++ b/qmake/qmakelibraryinfo.cpp
@@ -143,7 +143,7 @@ QString QMakeLibraryInfo::path(int loc)
QString ret = rawLocation(loc, QMakeLibraryInfo::FinalPaths);
// Automatically prepend the sysroot to target paths
- if (loc < QMakeLibraryInfo::SysrootPath || loc > QMakeLibraryInfo::LastHostPath)
+ if (loc < QMakeLibraryInfo::FirstHostPath || loc > QMakeLibraryInfo::LastHostPath)
sysrootify(ret);
return ret;
@@ -158,7 +158,12 @@ struct LocationInfo
static LocationInfo defaultLocationInfo(int loc)
{
LocationInfo result;
- if (unsigned(loc) < sizeof(qtConfEntries) / sizeof(qtConfEntries[0])) {
+
+ if (loc == QMakeLibraryInfo::SysrootPath) {
+ result.key = QStringLiteral("Sysroot");
+ } else if (loc == QMakeLibraryInfo::SysrootifyPrefixPath) {
+ result.key = QStringLiteral("SysrootifyPrefix");
+ } else if (unsigned(loc) < sizeof(qtConfEntries) / sizeof(qtConfEntries[0])) {
result.key = QLatin1String(qtConfEntries[loc].key);
result.defaultValue = QLatin1String(qtConfEntries[loc].value);
}
@@ -171,6 +176,37 @@ static LocationInfo defaultLocationInfo(int loc)
return result;
}
+static QString storedPath(int loc)
+{
+ QString result;
+
+ // "volatile" here is a hack to prevent compilers from doing a
+ // compile-time strlen() on "path". The issue is that Qt installers
+ // will binary-patch the Qt installation paths -- in such scenarios, Qt
+ // will be built with a dummy path, thus the compile-time result of
+ // strlen is meaningless.
+ const char *volatile path = nullptr;
+ if (loc == QLibraryInfo::PrefixPath || loc == QMakeLibraryInfo::HostPrefixPath) {
+ result = QLibraryInfo::path(QLibraryInfo::PrefixPath);
+ } else if (loc == QMakeLibraryInfo::SysrootPath) {
+ // empty result
+ } else if (loc == QMakeLibraryInfo::SysrootifyPrefixPath) {
+ result = QStringLiteral("false");
+ } else if (unsigned(loc)
+ <= sizeof(qt_configure_str_offsets) / sizeof(qt_configure_str_offsets[0])) {
+ path = qt_configure_strs + qt_configure_str_offsets[loc - 1];
+#ifndef Q_OS_WIN // On Windows we use the registry
+ } else if (loc == QLibraryInfo::SettingsPath) {
+ path = QT_CONFIGURE_SETTINGS_PATH;
+#endif
+ }
+
+ if (path)
+ result = QString::fromLocal8Bit(path);
+
+ return result;
+}
+
QString QMakeLibraryInfo::rawLocation(int loc, QMakeLibraryInfo::PathGroup group)
{
QString ret;
@@ -241,27 +277,8 @@ QString QMakeLibraryInfo::rawLocation(int loc, QMakeLibraryInfo::PathGroup group
}
}
- if (!fromConf) {
- // "volatile" here is a hack to prevent compilers from doing a
- // compile-time strlen() on "path". The issue is that Qt installers
- // will binary-patch the Qt installation paths -- in such scenarios, Qt
- // will be built with a dummy path, thus the compile-time result of
- // strlen is meaningless.
- const char *volatile path = nullptr;
- if (loc == QLibraryInfo::PrefixPath || loc == HostPrefixPath) {
- ret = QLibraryInfo::path(QLibraryInfo::PrefixPath);
- } else if (unsigned(loc)
- <= sizeof(qt_configure_str_offsets) / sizeof(qt_configure_str_offsets[0])) {
- path = qt_configure_strs + qt_configure_str_offsets[loc - 1];
-#ifndef Q_OS_WIN // On Windows we use the registry
- } else if (loc == QLibraryInfo::SettingsPath) {
- path = QT_CONFIGURE_SETTINGS_PATH;
-#endif
- }
-
- if (path)
- ret = QString::fromLocal8Bit(path);
- }
+ if (!fromConf)
+ ret = storedPath(loc);
// These values aren't actually paths and thus need to be returned verbatim.
if (loc == TargetSpecPath || loc == HostSpecPath || loc == SysrootifyPrefixPath)
@@ -274,7 +291,7 @@ QString QMakeLibraryInfo::rawLocation(int loc, QMakeLibraryInfo::PathGroup group
// 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(libraryInfoFile()).absolutePath();
- } else if (loc > SysrootPath && loc <= LastHostPath) {
+ } else if (loc >= FirstHostPath && loc <= LastHostPath) {
// We make any other host path absolute to the host prefix directory.
baseDir = rawLocation(HostPrefixPath, group);
} else {