From 79a572c3d4f58a86729ce44c65e5781904ebfe9c Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Fri, 24 Jan 2020 22:41:09 +0000 Subject: [PATCH] QLibraryInfo cleanup Signed-off-by: Ivailo Monev --- cmake/modules/KatieBuildMacros.cmake | 5 + src/core/global/qlibraryinfo.cpp | 213 +++++++++++---------------- src/core/global/qlibraryinfo.h | 22 +-- 3 files changed, 103 insertions(+), 137 deletions(-) diff --git a/cmake/modules/KatieBuildMacros.cmake b/cmake/modules/KatieBuildMacros.cmake index 68e1f321c..a99630527 100644 --- a/cmake/modules/KatieBuildMacros.cmake +++ b/cmake/modules/KatieBuildMacros.cmake @@ -345,6 +345,11 @@ function(KATIE_SETUP_PATHS) _APPLICATIONS _PIXMAPS _PKGCONFIG ) foreach(instpath ${instpaths}) + string(FIND "${KATIE${instpath}_FULL}" "/" slashindex) + if(NOT "${slashindex}" STREQUAL "0") + message(FATAL_ERROR "KATIE${instpath}_FULL should not be relative: ${KATIE${instpath}_FULL}") + endif() + string(REGEX REPLACE ".*${CMAKE_INSTALL_PREFIX}/" "" modpath "${KATIE${instpath}_FULL}") string(REGEX REPLACE ".*${CMAKE_INSTALL_PREFIX}" "" modpath "${modpath}") set(KATIE${instpath}_RELATIVE "${modpath}" PARENT_SCOPE) diff --git a/src/core/global/qlibraryinfo.cpp b/src/core/global/qlibraryinfo.cpp index 828b3a6ae..ca1fa5f2b 100644 --- a/src/core/global/qlibraryinfo.cpp +++ b/src/core/global/qlibraryinfo.cpp @@ -44,149 +44,32 @@ QT_BEGIN_NAMESPACE /*! \class QLibraryInfo - \brief The QLibraryInfo class provides information about the Qt library. + \brief The QLibraryInfo class provides information about the Katie library. - Many pieces of information are established when Qt is configured. + Many pieces of information are established when Katie is configured. Installation paths, license information, and even a unique build key. This class provides an abstraction for accessing this information. \table \header \o Function \o Return value - \row \o buildKey() \o A string that identifies the Qt version and + \row \o buildKey() \o A string that identifies the Katie version and the configuration. This key is used to ensure that \l{plugins} link against the same version - of Qt as the application. - \row \o location() \o The path to a certain Qt + of Katie as the application. + \row \o location() \o The path to a certain Katie component (e.g., documentation, header files). \row \o licensee(), licensedProducts() \o Licensing information. \endtable - You can also use a \c qt.conf file to override the hard-coded paths - that are compiled into the Qt library. For more information, see - the \l {Using qt.conf} documentation. + You can also use a \c Katie.conf file to override the hard-coded paths + that are compiled into the Katie library. For more information, see + the \l {Using Katie.conf} documentation. - \sa QSysInfo, {Using qt.conf} + \sa QSysInfo, {Using Katie.conf} */ -/*! \internal - - You cannot create a QLibraryInfo, instead only the static functions are available to query - information. -*/ - -QLibraryInfo::QLibraryInfo() -{ } - -/*! - Returns the person to whom this build of Qt is licensed. - - \sa licensedProducts() -*/ - -QString -QLibraryInfo::licensee() -{ - return QString::fromLocal8Bit(qt_configure_licensee_str); -} - -/*! - Returns the products that the license for this build of Qt has access to. - - \sa licensee() -*/ - -QString -QLibraryInfo::licensedProducts() -{ - return QString::fromLatin1(qt_configure_licensed_products_str); -} - -/*! - Returns a unique key identifying this build of Qt and its - configurations. This key is not globally unique, rather only useful - for establishing of two configurations are compatible. - - \sa location() -*/ - -QString -QLibraryInfo::buildKey() -{ - return QString::fromLatin1(qt_configure_build_key_str); -} - -/*! - \since 4.6 - Returns the installation date for this build of Qt. The install date will - usually be the last time that Qt sources were configured. -*/ -#ifndef QT_NO_DATESTRING -QDate -QLibraryInfo::buildDate() -{ - return QDate::fromString(QString::fromLatin1(qt_configure_build_date_str), Qt::ISODate); -} -#endif //QT_NO_DATESTRING - -/*! - Returns the location specified by \a loc. - -*/ - -QString -QLibraryInfo::location(LibraryLocation loc) -{ - QString ret; - switch (loc) { - case PrefixPath: - ret = QString::fromLocal8Bit(qt_configure_prefix_path_str); - break; - case HeadersPath: - ret = QString::fromLocal8Bit(qt_configure_headers_path_str); - break; - case LibrariesPath: - ret = QString::fromLocal8Bit(qt_configure_libraries_path_str); - break; - case BinariesPath: - ret = QString::fromLocal8Bit(qt_configure_binaries_path_str); - break; - case PluginsPath: - ret = QString::fromLocal8Bit(qt_configure_plugins_path_str); - break; - case ImportsPath: - ret = QString::fromLocal8Bit(qt_configure_imports_path_str); - break; - case DataPath: - ret = QString::fromLocal8Bit(qt_configure_data_path_str); - break; - case TranslationsPath: - ret = QString::fromLocal8Bit(qt_configure_translations_path_str); - break; - case SettingsPath: - ret = QString::fromLocal8Bit(qt_configure_settings_path_str); - break; - } - - if (QDir::isRelativePath(ret)) { - QString baseDir; - if (loc == PrefixPath) { - // we make the prefix path absolute to the executable's directory - if (QCoreApplication::instance()) { - baseDir = QCoreApplication::applicationDirPath(); - } else { - baseDir = QDir::currentPath(); - } - } else { - // we make any other path absolute to the prefix directory - baseDir = location(PrefixPath); - } - ret = QDir::cleanPath(baseDir + QLatin1Char('/') + ret); - } - return ret; -} - /*! \enum QLibraryInfo::LibraryLocation @@ -208,6 +91,84 @@ QLibraryInfo::location(LibraryLocation loc) \sa location() */ +/*! + Returns the person to whom this build of Qt is licensed. + + \sa licensedProducts() +*/ + +QString QLibraryInfo::licensee() +{ + return QString::fromLocal8Bit(qt_configure_licensee_str); +} + +/*! + Returns the products that the license for this build of Qt has access to. + + \sa licensee() +*/ + +QString QLibraryInfo::licensedProducts() +{ + return QString::fromLatin1(qt_configure_licensed_products_str); +} + +/*! + Returns a unique key identifying this build of Qt and its + configurations. This key is not globally unique, rather only useful + for establishing of two configurations are compatible. + + \sa location() +*/ + +QString QLibraryInfo::buildKey() +{ + return QString::fromLatin1(qt_configure_build_key_str); +} + +/*! + \since 4.6 + Returns the installation date for this build of Qt. The install date will + usually be the last time that Qt sources were configured. +*/ +#ifndef QT_NO_DATESTRING +QDate QLibraryInfo::buildDate() +{ + return QDate::fromString(QString::fromLatin1(qt_configure_build_date_str), Qt::ISODate); +} +#endif //QT_NO_DATESTRING + +/*! + Returns the location specified by \a loc. + +*/ + +QString QLibraryInfo::location(LibraryLocation loc) +{ + switch (loc) { + case PrefixPath: + return QString::fromLocal8Bit(qt_configure_prefix_path_str); + case HeadersPath: + return QString::fromLocal8Bit(qt_configure_headers_path_str); + case LibrariesPath: + return QString::fromLocal8Bit(qt_configure_libraries_path_str); + case BinariesPath: + return QString::fromLocal8Bit(qt_configure_binaries_path_str); + case PluginsPath: + return QString::fromLocal8Bit(qt_configure_plugins_path_str); + case DataPath: + return QString::fromLocal8Bit(qt_configure_data_path_str); + case TranslationsPath: + return QString::fromLocal8Bit(qt_configure_translations_path_str); + case SettingsPath: + return QString::fromLocal8Bit(qt_configure_settings_path_str); + case ImportsPath: + return QString::fromLocal8Bit(qt_configure_imports_path_str); + } + + Q_UNREACHABLE(); +} + #endif // QT_NO_SETTINGS QT_END_NAMESPACE diff --git a/src/core/global/qlibraryinfo.h b/src/core/global/qlibraryinfo.h index e06862f35..bce0b9bdd 100644 --- a/src/core/global/qlibraryinfo.h +++ b/src/core/global/qlibraryinfo.h @@ -47,16 +47,7 @@ QT_BEGIN_NAMESPACE class Q_CORE_EXPORT QLibraryInfo { public: - static QString licensee(); - static QString licensedProducts(); - - static QString buildKey(); -#ifndef QT_NO_DATESTRING - static QDate buildDate(); -#endif //QT_NO_DATESTRING - - enum LibraryLocation - { + enum LibraryLocation { PrefixPath, HeadersPath, LibrariesPath, @@ -67,10 +58,19 @@ public: SettingsPath, ImportsPath }; + + static QString licensee(); + static QString licensedProducts(); + + static QString buildKey(); +#ifndef QT_NO_DATESTRING + static QDate buildDate(); +#endif //QT_NO_DATESTRING + static QString location(LibraryLocation); private: - QLibraryInfo(); + Q_DISABLE_COPY(QLibraryInfo); }; #endif /* QT_NO_SETTINGS */