Fix the qtpath issue with lto enabled
Move qtconfManualPath pointer to the unnamed namespace, so it's never exported. Add the static setQtconfManualPath method that sets the pointer at runtime. Fixes: QTBUG-122739 Pick-to: 6.5 6.6 6.7 Change-Id: Icfc631f9680ad5f484920b0fdf3e408b7657c108 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
b42f174cd5
commit
bdb2f20154
@ -188,7 +188,7 @@ Option::parseCommandLine(QStringList &args, QMakeCmdLineParserState &state)
|
|||||||
return Option::QMAKE_CMDLINE_SHOW_USAGE | Option::QMAKE_CMDLINE_ERROR;
|
return Option::QMAKE_CMDLINE_SHOW_USAGE | Option::QMAKE_CMDLINE_ERROR;
|
||||||
}
|
}
|
||||||
if (!globals->qtconf.isEmpty())
|
if (!globals->qtconf.isEmpty())
|
||||||
QLibraryInfoPrivate::qtconfManualPath = &globals->qtconf;
|
QLibraryInfoPrivate::setQtconfManualPath(&globals->qtconf);
|
||||||
if (cmdRet == QMakeGlobals::ArgumentsOk)
|
if (cmdRet == QMakeGlobals::ArgumentsOk)
|
||||||
break;
|
break;
|
||||||
Q_ASSERT(cmdRet == QMakeGlobals::ArgumentUnknown);
|
Q_ASSERT(cmdRet == QMakeGlobals::ArgumentUnknown);
|
||||||
|
@ -87,10 +87,19 @@ void QLibrarySettings::load()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
const QString *qtconfManualPath = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QLibraryInfoPrivate::setQtconfManualPath(const QString *path)
|
||||||
|
{
|
||||||
|
qtconfManualPath = path;
|
||||||
|
}
|
||||||
|
|
||||||
static QSettings *findConfiguration()
|
static QSettings *findConfiguration()
|
||||||
{
|
{
|
||||||
if (QLibraryInfoPrivate::qtconfManualPath)
|
if (qtconfManualPath)
|
||||||
return new QSettings(*QLibraryInfoPrivate::qtconfManualPath, QSettings::IniFormat);
|
return new QSettings(*qtconfManualPath, QSettings::IniFormat);
|
||||||
|
|
||||||
QString qtconfig = QStringLiteral(":/qt/etc/qt.conf");
|
QString qtconfig = QStringLiteral(":/qt/etc/qt.conf");
|
||||||
if (QFile::exists(qtconfig))
|
if (QFile::exists(qtconfig))
|
||||||
@ -122,8 +131,6 @@ static QSettings *findConfiguration()
|
|||||||
return nullptr; //no luck
|
return nullptr; //no luck
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString *QLibraryInfoPrivate::qtconfManualPath = nullptr;
|
|
||||||
|
|
||||||
QSettings *QLibraryInfoPrivate::configuration()
|
QSettings *QLibraryInfoPrivate::configuration()
|
||||||
{
|
{
|
||||||
QLibrarySettings *ls = qt_library_settings();
|
QLibrarySettings *ls = qt_library_settings();
|
||||||
|
@ -32,7 +32,7 @@ public:
|
|||||||
#if QT_CONFIG(settings)
|
#if QT_CONFIG(settings)
|
||||||
static QSettings *configuration();
|
static QSettings *configuration();
|
||||||
static void reload();
|
static void reload();
|
||||||
static const QString *qtconfManualPath;
|
static void setQtconfManualPath(const QString *qtconfManualPath);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct LocationInfo
|
struct LocationInfo
|
||||||
|
@ -224,7 +224,7 @@ int main(int argc, char **argv)
|
|||||||
#if QT_CONFIG(settings)
|
#if QT_CONFIG(settings)
|
||||||
if (parser.isSet(qtconf)) {
|
if (parser.isSet(qtconf)) {
|
||||||
qtconfManualPath = parser.value(qtconf);
|
qtconfManualPath = parser.value(qtconf);
|
||||||
QLibraryInfoPrivate::qtconfManualPath = &qtconfManualPath;
|
QLibraryInfoPrivate::setQtconfManualPath(&qtconfManualPath);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user