aboutsummaryrefslogtreecommitdiffstats
path: root/share/qbs/module-providers/Qt/setup-qt.js
diff options
context:
space:
mode:
Diffstat (limited to 'share/qbs/module-providers/Qt/setup-qt.js')
-rw-r--r--share/qbs/module-providers/Qt/setup-qt.js36
1 files changed, 25 insertions, 11 deletions
diff --git a/share/qbs/module-providers/Qt/setup-qt.js b/share/qbs/module-providers/Qt/setup-qt.js
index b3044d72e..0206a16d3 100644
--- a/share/qbs/module-providers/Qt/setup-qt.js
+++ b/share/qbs/module-providers/Qt/setup-qt.js
@@ -226,6 +226,7 @@ function getQtProperties(qmakeFilePath, qbs) {
qtProps.documentationPath = pathQueryValue(queryResult, "QT_INSTALL_DOCS");
qtProps.includePath = pathQueryValue(queryResult, "QT_INSTALL_HEADERS");
qtProps.libraryPath = pathQueryValue(queryResult, "QT_INSTALL_LIBS");
+ qtProps.hostLibraryPath = pathQueryValue(queryResult, "QT_HOST_LIBS");
qtProps.binaryPath = pathQueryValue(queryResult, "QT_HOST_BINS")
|| pathQueryValue(queryResult, "QT_INSTALL_BINS");
qtProps.documentationPath = pathQueryValue(queryResult, "QT_INSTALL_DOCS");
@@ -417,8 +418,10 @@ function makeQtModuleInfo(name, qbsName, deps) {
moduleInfo.name = "";
moduleInfo.qbsName = qbsName; // Lower-case version without "qt" prefix.
moduleInfo.dependencies = deps || []; // qbs names.
- if (moduleInfo.qbsName !== "core" && !moduleInfo.dependencies.contains("core"))
+ if (moduleInfo.qbsName && moduleInfo.qbsName !== "core"
+ && !moduleInfo.dependencies.contains("core")) {
moduleInfo.dependencies.unshift("core");
+ }
moduleInfo.isPrivate = qbsName && qbsName.endsWith("-private");
moduleInfo.hasLibrary = !moduleInfo.isPrivate;
moduleInfo.isStaticLibrary = false;
@@ -441,6 +444,7 @@ function makeQtModuleInfo(name, qbsName, deps) {
moduleInfo.frameworkPathsDebug = [];
moduleInfo.frameworkPathsRelease = [];
moduleInfo.libraryPaths = [];
+ moduleInfo.libDir = "";
moduleInfo.config = [];
moduleInfo.supportedPluginTypes = [];
moduleInfo.pluginData = makePluginData();
@@ -626,7 +630,7 @@ function doSetupLibraries(modInfo, qtProps, debugBuild, nonExistingPrlFiles) {
}
var prlFilePath = modInfo.isPlugin
? FileInfo.joinPaths(qtProps.pluginPath, modInfo.pluginData.type)
- : qtProps.libraryPath;
+ : (modInfo.libDir ? modInfo.libDir : qtProps.libraryPath);
if (isFramework(modInfo, qtProps)) {
prlFilePath = FileInfo.joinPaths(prlFilePath,
libraryBaseName(modInfo, qtProps, false) + ".framework");
@@ -921,7 +925,7 @@ function extractPaths(rhs, filePath) {
function removeDuplicatedDependencyLibs(modules) {
var revDeps = {};
- var currentPath;
+ var currentPath = [];
var getLibraries;
var getLibFilePath;
@@ -935,9 +939,9 @@ function removeDuplicatedDependencyLibs(modules) {
var depmod = moduleByName[module.dependencies[j]];
if (!depmod)
continue;
- if (!revDeps[depmod])
- revDeps[depmod] = [];
- revDeps[depmod].push(module);
+ if (!revDeps[depmod.qbsName])
+ revDeps[depmod.qbsName] = [];
+ revDeps[depmod.qbsName].push(module);
}
}
}
@@ -946,7 +950,7 @@ function removeDuplicatedDependencyLibs(modules) {
var result = [];
for (i = 0; i < modules.length; ++i) {
var module = modules[i]
- if (module.dependencies.lenegth === 0)
+ if (module.dependencies.length === 0)
result.push(module);
}
return result;
@@ -956,7 +960,6 @@ function removeDuplicatedDependencyLibs(modules) {
if (currentPath.contains(module))
return;
currentPath.push(module);
-
var moduleLibraryLists = getLibraries(module);
for (var i = 0; i < moduleLibraryLists.length; ++i) {
var modLibList = moduleLibraryLists[i];
@@ -973,10 +976,11 @@ function removeDuplicatedDependencyLibs(modules) {
libs = libs.concat(moduleLibraryLists[i]);
libs.sort();
- for (i = 0; i < (revDeps[module] || []).length; ++i)
- traverse(revDeps[module][i], libs);
+ var deps = revDeps[module.qbsName];
+ for (i = 0; i < (deps || []).length; ++i)
+ traverse(deps[i], libs);
- m_currentPath.pop();
+ currentPath.pop();
}
setupReverseDependencies(modules);
@@ -1066,8 +1070,18 @@ function allQt5Modules(qtProps) {
for (k = 0; k < moduleInfo.includePaths.length; ++k) {
moduleInfo.includePaths[k] = moduleInfo.includePaths[k]
.replace("$$QT_MODULE_INCLUDE_BASE", qtProps.includePath)
+ .replace("$$QT_MODULE_HOST_LIB_BASE", qtProps.hostLibraryPath)
.replace("$$QT_MODULE_LIB_BASE", qtProps.libraryPath);
}
+ } else if (key.endsWith(".libs")) {
+ var libDirs = extractPaths(value, priFilePath);
+ if (libDirs.length === 1) {
+ moduleInfo.libDir = libDirs[0]
+ .replace("$$QT_MODULE_HOST_LIB_BASE", qtProps.hostLibraryPath)
+ .replace("$$QT_MODULE_LIB_BASE", qtProps.libraryPath);
+ } else {
+ moduleInfo.libDir = qtProps.libraryPath;
+ }
} else if (key.endsWith(".DEFINES")) {
moduleInfo.compilerDefines = splitNonEmpty(value, ' ');
} else if (key.endsWith(".VERSION")) {