aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/qtprofilesetup/qtmoduleinfo.cpp55
-rw-r--r--src/lib/qtprofilesetup/qtmoduleinfo.h6
2 files changed, 42 insertions, 19 deletions
diff --git a/src/lib/qtprofilesetup/qtmoduleinfo.cpp b/src/lib/qtprofilesetup/qtmoduleinfo.cpp
index 8acea44ee..220ee5b25 100644
--- a/src/lib/qtprofilesetup/qtmoduleinfo.cpp
+++ b/src/lib/qtprofilesetup/qtmoduleinfo.cpp
@@ -112,7 +112,7 @@ QString QtModuleInfo::frameworkHeadersPath(const QtEnvironment &qtEnvironment) c
QStringList QtModuleInfo::qt4ModuleIncludePaths(const QtEnvironment &qtEnvironment) const
{
QStringList paths;
- if (qtEnvironment.frameworkBuild && !isStaticLibrary) {
+ if (isFramework(qtEnvironment)) {
paths << frameworkHeadersPath(qtEnvironment);
} else {
paths << qtEnvironment.includePath
@@ -125,19 +125,17 @@ QString QtModuleInfo::libraryBaseName(const QtEnvironment &qtEnvironment,
bool debugBuild) const
{
if (isPlugin)
- return libBaseName(name, isStaticLibrary, debugBuild, qtEnvironment);
+ return libBaseName(name, debugBuild, qtEnvironment);
// Enginio has a different naming scheme, so it doesn't get boring.
const bool isEnginio = name == QLatin1String("Enginio");
QString libName = modulePrefix.isEmpty() && !isEnginio ? QLatin1String("Qt") : modulePrefix;
- if (qtEnvironment.qtMajorVersion >= 5 && (!qtEnvironment.frameworkBuild || isStaticLibrary)
- && !isEnginio) {
+ if (qtEnvironment.qtMajorVersion >= 5 && !isFramework(qtEnvironment) && !isEnginio)
libName += QString::number(qtEnvironment.qtMajorVersion);
- }
libName += moduleNameWithoutPrefix();
libName += qtEnvironment.qtLibInfix;
- return libBaseName(libName, isStaticLibrary, debugBuild, qtEnvironment);
+ return libBaseName(libName, debugBuild, qtEnvironment);
}
QString QtModuleInfo::libNameForLinker(const QtEnvironment &qtEnvironment, bool debugBuild) const
@@ -167,6 +165,18 @@ void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv, bool debugBuild,
if (!hasLibrary)
return; // Can happen for Qt4 convenience modules, like "widgets".
+ if (debugBuild) {
+ if (!qtEnv.buildVariant.contains(QLatin1String("debug")))
+ return;
+ const QStringList modulesNeverBuiltAsDebug = QStringList() << "bootstrap" << "qmldevtools";
+ foreach (const QString &m, modulesNeverBuiltAsDebug) {
+ if (qbsName == m || qbsName == m + "-private")
+ return;
+ }
+ } else if (!qtEnv.buildVariant.contains(QLatin1String("release"))) {
+ return;
+ }
+
QStringList &libs = isStaticLibrary
? (debugBuild ? staticLibrariesDebug : staticLibrariesRelease)
: (debugBuild ? dynamicLibrariesDebug : dynamicLibrariesRelease);
@@ -182,7 +192,7 @@ void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv, bool debugBuild,
<< platformSupportModule.libNameForLinker(qtEnv, debugBuild);
flags << QLatin1String("-force_load")
<< qtEnv.pluginPath + QLatin1String("/platforms/")
- + libBaseName(QLatin1String("libqios"), true, debugBuild, qtEnv)
+ + libBaseName(QLatin1String("libqios"), debugBuild, qtEnv)
+ QLatin1String(".a");
}
@@ -190,10 +200,10 @@ void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv, bool debugBuild,
? qtEnv.pluginPath + QLatin1Char('/') + pluginData.type
: qtEnv.libraryPath;
prlFilePath += QLatin1Char('/');
- if (qtEnv.frameworkBuild)
+ if (isFramework(qtEnv))
prlFilePath.append(libraryBaseName(qtEnv, false)).append(QLatin1String(".framework/"));
const QString libDir = prlFilePath;
- if (!qtEnv.mkspecName.startsWith(QLatin1String("win")) && !qtEnv.frameworkBuild)
+ if (!qtEnv.mkspecName.startsWith(QLatin1String("win")) && !isFramework(qtEnv))
prlFilePath += QLatin1String("lib");
prlFilePath.append(libraryBaseName(qtEnv, debugBuild));
const bool isNonStaticQt4OnWindows = qtEnv.mkspecName.startsWith(QLatin1String("win"))
@@ -264,6 +274,16 @@ void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv, bool debugBuild,
}
}
+bool QtModuleInfo::isFramework(const QtEnvironment &qtEnv) const
+{
+ if (!qtEnv.frameworkBuild || isStaticLibrary)
+ return false;
+ const QStringList modulesNeverBuiltAsFrameworks = QStringList()
+ << "bootstrap" << "openglextensions" << "platformsupport" << "qmldevtools" << "uitools"
+ << "harfbuzzng";
+ return !modulesNeverBuiltAsFrameworks.contains(qbsName);
+}
+
// We erroneously called the "testlib" module "test" for quite a while. Let's not punish users
// for that.
static void addTestModule(QList<QtModuleInfo> &modules)
@@ -489,7 +509,8 @@ QList<QtModuleInfo> allQt5Modules(const Profile &profile, const QtEnvironment &q
moduleInfo.name = moduleInfo.qbsName;
moduleInfo.isStaticLibrary = true;
}
- const QByteArray moduleKeyPrefix = "QT." + moduleInfo.qbsName.toLatin1() + '.';
+ const QByteArray moduleKeyPrefix = QByteArray(moduleInfo.isPlugin ? "QT_PLUGIN" : "QT")
+ + '.' + moduleInfo.qbsName.toLatin1() + '.';
moduleInfo.qbsName.replace(QLatin1String("_private"), QLatin1String("-private"));
foreach (const QByteArray &line, getPriFileContentsRecursively(profile, dit.filePath())) {
const QByteArray simplifiedLine = line.simplified();
@@ -540,8 +561,9 @@ QList<QtModuleInfo> allQt5Modules(const Profile &profile, const QtEnvironment &q
}
}
- // Fix include paths for OS X frameworks. The qt_lib_XXX.pri files contain wrong values.
- if (qtEnvironment.frameworkBuild && !moduleInfo.isStaticLibrary) {
+ // Fix include paths for OS X and iOS frameworks.
+ // The qt_lib_XXX.pri files contain wrong values.
+ if (moduleInfo.isFramework(qtEnvironment)) {
moduleInfo.includePaths.clear();
QString baseIncDir = moduleInfo.frameworkHeadersPath(qtEnvironment);
if (moduleInfo.isPrivate) {
@@ -567,19 +589,20 @@ QList<QtModuleInfo> allQt5Modules(const Profile &profile, const QtEnvironment &q
return modules;
}
-QString libBaseName(const QString &libName, bool staticLib, bool debugBuild,
- const QtEnvironment &qtEnvironment)
+QString QtModuleInfo::libBaseName(const QString &libName, bool debugBuild,
+ const QtEnvironment &qtEnvironment) const
{
QString name = libName;
if (qtEnvironment.mkspecName.startsWith(QLatin1String("win"))) {
if (debugBuild)
name += QLatin1Char('d');
- if (!staticLib && qtEnvironment.qtMajorVersion < 5)
+ if (!isStaticLibrary && qtEnvironment.qtMajorVersion < 5)
name += QString::number(qtEnvironment.qtMajorVersion);
}
if (qtEnvironment.mkspecName.contains(QLatin1String("macx"))
+ || qtEnvironment.mkspecName.contains(QLatin1String("ios"))
|| qtEnvironment.mkspecName.contains(QLatin1String("darwin"))) {
- if (!qtEnvironment.frameworkBuild
+ if (!isFramework(qtEnvironment)
&& qtEnvironment.buildVariant.contains(QLatin1String("debug"))
&& (!qtEnvironment.buildVariant.contains(QLatin1String("release")) || debugBuild)) {
name += QLatin1String("_debug");
diff --git a/src/lib/qtprofilesetup/qtmoduleinfo.h b/src/lib/qtprofilesetup/qtmoduleinfo.h
index 733c7992f..0aa056af1 100644
--- a/src/lib/qtprofilesetup/qtmoduleinfo.h
+++ b/src/lib/qtprofilesetup/qtmoduleinfo.h
@@ -49,8 +49,11 @@ public:
QString frameworkHeadersPath(const QtEnvironment &qtEnvironment) const;
QStringList qt4ModuleIncludePaths(const QtEnvironment &qtEnvironment) const;
QString libraryBaseName(const QtEnvironment &qtEnvironment, bool debugBuild) const;
+ QString libBaseName(const QString &libName, bool debugBuild,
+ const QtEnvironment &qtEnvironment) const;
QString libNameForLinker(const QtEnvironment &qtEnvironment, bool debugBuild) const;
void setupLibraries(const QtEnvironment &qtEnv, QSet<QString> *nonExistingPrlFiles);
+ bool isFramework(const QtEnvironment &qtEnv) const;
QString modulePrefix; // default is empty and means "Qt".
QString name; // As in the path to the headers and ".name" in the pri files.
@@ -89,9 +92,6 @@ private:
QSet<QString> *nonExistingPrlFiles);
};
-QString libBaseName(const QString &libName, bool staticLib, bool debugBuild,
- const QtEnvironment &qtEnvironment);
-
QList<QtModuleInfo> allQt4Modules(const QtEnvironment &qtEnvironment);
QList<QtModuleInfo> allQt5Modules(const Profile &profile, const QtEnvironment &qtEnvironment);