Commit c0e9041b authored by Oswald Buddenhagen's avatar Oswald Buddenhagen Committed by Qt by Nokia
Browse files

optimize QMakeProperty


make it table-driven and have it cache the immutable values from
QLibraryInfo.

Change-Id: I07ed89152aa964bc9edf4436ee7c42f99cc6bcd3
Reviewed-by: default avatarJoerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: default avatarMarius Storm-Olsen <marius.storm-olsen@nokia.com>
parent 6663b5eb
dev 5.10 5.11 5.12 5.12.1 5.12.10 5.12.11 5.12.12 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13 5.13.0 5.13.1 5.13.2 5.14 5.14.0 5.14.1 5.14.2 5.15 5.15.0 5.15.1 5.15.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.9.8 6.0 6.0.0 6.1 6.1.0 6.1.1 6.1.2 6.1.3 6.2 6.2.0 6.2.1 6.2.2 old/5.0 old/5.1 old/5.2 wip/cmake wip/highdpi wip/lite wip/mir wip/nacl wip/network-test-server wip/remac wip/tizen wip/webassembly v5.15.0-alpha1 v5.14.1 v5.14.0 v5.14.0-rc2 v5.14.0-rc1 v5.14.0-beta3 v5.14.0-beta2 v5.14.0-beta1 v5.14.0-alpha1 v5.13.2 v5.13.1 v5.13.0 v5.13.0-rc3 v5.13.0-rc2 v5.13.0-rc1 v5.13.0-beta4 v5.13.0-beta3 v5.13.0-beta2 v5.13.0-beta1 v5.13.0-alpha1 v5.12.7 v5.12.6 v5.12.5 v5.12.4 v5.12.3 v5.12.2 v5.12.1 v5.12.0 v5.12.0-rc2 v5.12.0-rc1 v5.12.0-beta4 v5.12.0-beta3 v5.12.0-beta2 v5.12.0-beta1 v5.12.0-alpha1 v5.11.3 v5.11.2 v5.11.1 v5.11.0 v5.11.0-rc2 v5.11.0-rc1 v5.11.0-beta4 v5.11.0-beta3 v5.11.0-beta2 v5.11.0-beta1 v5.11.0-alpha1 v5.10.1 v5.10.0 v5.10.0-rc3 v5.10.0-rc2 v5.10.0-rc1 v5.10.0-beta4 v5.10.0-beta3 v5.10.0-beta2 v5.10.0-beta1 v5.10.0-alpha1 v5.9.9 v5.9.8 v5.9.7 v5.9.6 v5.9.5 v5.9.4 v5.9.3 v5.9.2 v5.9.1 v5.9.0 v5.9.0-rc2 v5.9.0-rc1 v5.9.0-beta4 v5.9.0-beta3 v5.9.0-beta2 v5.9.0-beta1 v5.9.0-alpha1 v5.8.0 v5.8.0-rc1 v5.8.0-beta1 v5.8.0-alpha1 v5.7.1 v5.7.0 v5.7.0-rc1 v5.7.0-beta1 v5.7.0-alpha1 v5.6.3 v5.6.2 v5.6.1 v5.6.1-1 v5.6.0 v5.6.0-rc1 v5.6.0-beta1 v5.6.0-alpha1 v5.5.1 v5.5.0 v5.5.0-rc1 v5.5.0-beta1 v5.5.0-alpha1 v5.4.2 v5.4.1 v5.4.0 v5.4.0-rc1 v5.4.0-beta1 v5.4.0-alpha1 v5.3.2 v5.3.1 v5.3.0 v5.3.0-rc1 v5.3.0-beta1 v5.3.0-alpha1 v5.2.1 v5.2.0 v5.2.0-rc1 v5.2.0-beta1 v5.2.0-alpha1 v5.1.1 v5.1.0 v5.1.0-rc2 v5.1.0-rc1 v5.1.0-beta1 v5.1.0-alpha1 v5.0.2 v5.0.1 v5.0.0 v5.0.0-rc2 v5.0.0-rc1 v5.0.0-beta2 v5.0.0-beta1 qt-v5.0.0-alpha1
No related merge requests found
Showing with 31 additions and 39 deletions
...@@ -51,8 +51,30 @@ QT_BEGIN_NAMESPACE ...@@ -51,8 +51,30 @@ QT_BEGIN_NAMESPACE
QStringList qmake_mkspec_paths(); //project.cpp QStringList qmake_mkspec_paths(); //project.cpp
static const struct {
const char *name;
QLibraryInfo::LibraryLocation loc;
} propList[] = {
{ "QT_INSTALL_PREFIX", QLibraryInfo::PrefixPath },
{ "QT_INSTALL_DATA", QLibraryInfo::DataPath },
{ "QT_INSTALL_DOCS", QLibraryInfo::DocumentationPath },
{ "QT_INSTALL_HEADERS", QLibraryInfo::HeadersPath },
{ "QT_INSTALL_LIBS", QLibraryInfo::LibrariesPath },
{ "QT_INSTALL_BINS", QLibraryInfo::BinariesPath },
{ "QT_INSTALL_TESTS", QLibraryInfo::TestsPath },
{ "QT_INSTALL_PLUGINS", QLibraryInfo::PluginsPath },
{ "QT_INSTALL_IMPORTS", QLibraryInfo::ImportsPath },
{ "QT_INSTALL_TRANSLATIONS", QLibraryInfo::TranslationsPath },
{ "QT_INSTALL_CONFIGURATION", QLibraryInfo::SettingsPath },
{ "QT_INSTALL_EXAMPLES", QLibraryInfo::ExamplesPath },
{ "QT_INSTALL_DEMOS", QLibraryInfo::ExamplesPath }, // Just backwards compat
};
QMakeProperty::QMakeProperty() : settings(0) QMakeProperty::QMakeProperty() : settings(0)
{ {
for (int i = 0; i < sizeof(propList)/sizeof(propList[0]); i++)
m_values[QString::fromLatin1(propList[i].name)] =
QLibraryInfo::location(propList[i].loc);
} }
QMakeProperty::~QMakeProperty() QMakeProperty::~QMakeProperty()
...@@ -80,32 +102,9 @@ QMakeProperty::keyBase(bool version) const ...@@ -80,32 +102,9 @@ QMakeProperty::keyBase(bool version) const
QString QString
QMakeProperty::value(QString v, bool just_check) QMakeProperty::value(QString v, bool just_check)
{ {
if(v == "QT_INSTALL_PREFIX") QString val = m_values.value(v);
return QLibraryInfo::location(QLibraryInfo::PrefixPath); if (!val.isNull())
else if(v == "QT_INSTALL_DATA") return val;
return QLibraryInfo::location(QLibraryInfo::DataPath);
else if(v == "QT_INSTALL_DOCS")
return QLibraryInfo::location(QLibraryInfo::DocumentationPath);
else if(v == "QT_INSTALL_HEADERS")
return QLibraryInfo::location(QLibraryInfo::HeadersPath);
else if(v == "QT_INSTALL_LIBS")
return QLibraryInfo::location(QLibraryInfo::LibrariesPath);
else if(v == "QT_INSTALL_BINS")
return QLibraryInfo::location(QLibraryInfo::BinariesPath);
else if(v == "QT_INSTALL_TESTS")
return QLibraryInfo::location(QLibraryInfo::TestsPath);
else if(v == "QT_INSTALL_PLUGINS")
return QLibraryInfo::location(QLibraryInfo::PluginsPath);
else if(v == "QT_INSTALL_IMPORTS")
return QLibraryInfo::location(QLibraryInfo::ImportsPath);
else if(v == "QT_INSTALL_TRANSLATIONS")
return QLibraryInfo::location(QLibraryInfo::TranslationsPath);
else if(v == "QT_INSTALL_CONFIGURATION")
return QLibraryInfo::location(QLibraryInfo::SettingsPath);
else if(v == "QT_INSTALL_EXAMPLES")
return QLibraryInfo::location(QLibraryInfo::ExamplesPath);
else if(v == "QT_INSTALL_DEMOS")
return QLibraryInfo::location(QLibraryInfo::ExamplesPath);
else if(v == "QMAKE_MKSPECS") else if(v == "QMAKE_MKSPECS")
return qmake_mkspec_paths().join(Option::dirlist_sep); return qmake_mkspec_paths().join(Option::dirlist_sep);
else if(v == "QMAKE_VERSION") else if(v == "QMAKE_VERSION")
...@@ -194,19 +193,8 @@ QMakeProperty::exec() ...@@ -194,19 +193,8 @@ QMakeProperty::exec()
} }
} }
QStringList specialProps; QStringList specialProps;
specialProps.append("QT_INSTALL_PREFIX"); for (int i = 0; i < sizeof(propList)/sizeof(propList[0]); i++)
specialProps.append("QT_INSTALL_DATA"); specialProps.append(QString::fromLatin1(propList[i].name));
specialProps.append("QT_INSTALL_DOCS");
specialProps.append("QT_INSTALL_HEADERS");
specialProps.append("QT_INSTALL_LIBS");
specialProps.append("QT_INSTALL_BINS");
specialProps.append("QT_INSTALL_TESTS");
specialProps.append("QT_INSTALL_PLUGINS");
specialProps.append("QT_INSTALL_IMPORTS");
specialProps.append("QT_INSTALL_TRANSLATIONS");
specialProps.append("QT_INSTALL_CONFIGURATION");
specialProps.append("QT_INSTALL_EXAMPLES");
specialProps.append("QT_INSTALL_DEMOS");
specialProps.append("QMAKE_MKSPECS"); specialProps.append("QMAKE_MKSPECS");
specialProps.append("QMAKE_VERSION"); specialProps.append("QMAKE_VERSION");
#ifdef QT_VERSION_STR #ifdef QT_VERSION_STR
......
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include <qglobal.h> #include <qglobal.h>
#include <qstring.h> #include <qstring.h>
#include <qhash.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
...@@ -55,6 +56,9 @@ class QMakeProperty ...@@ -55,6 +56,9 @@ class QMakeProperty
void initSettings(); void initSettings();
QString keyBase(bool =true) const; QString keyBase(bool =true) const;
QString value(QString, bool just_check); QString value(QString, bool just_check);
QHash<QString, QString> m_values;
public: public:
QMakeProperty(); QMakeProperty();
~QMakeProperty(); ~QMakeProperty();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment