diff options
Diffstat (limited to 'share/qbs/module-providers/Qt/setup-qt.js')
-rw-r--r-- | share/qbs/module-providers/Qt/setup-qt.js | 36 |
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")) { |