diff options
-rw-r--r-- | qbs-resources/imports/QbsApp.qbs | 3 | ||||
-rw-r--r-- | qbs-resources/imports/QbsLibrary.qbs | 4 | ||||
-rw-r--r-- | qbs-resources/imports/QbsProduct.qbs | 2 | ||||
-rw-r--r-- | qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs | 33 | ||||
-rw-r--r-- | src/libexec/qbs_processlauncher/qbs_processlauncher.qbs | 8 | ||||
-rw-r--r-- | src/plugins/qbsplugin.qbs | 3 |
6 files changed, 36 insertions, 17 deletions
diff --git a/qbs-resources/imports/QbsApp.qbs b/qbs-resources/imports/QbsApp.qbs index a81efca6a..8e671764d 100644 --- a/qbs-resources/imports/QbsApp.qbs +++ b/qbs-resources/imports/QbsApp.qbs @@ -17,9 +17,10 @@ QbsProduct { fileTagsFilter: product.type .concat(qbs.buildVariant === "debug" ? ["debuginfo_app"] : []) qbs.install: true - qbs.installDir: qbsbuildconfig.appInstallDir qbs.installSourceBase: destinationDirectory + qbs.installDir: targetInstallDir } + targetInstallDir: qbsbuildconfig.appInstallDir Group { name: "logging" prefix: FileInfo.joinPaths(product.sourceDirectory, "../shared/logging") + '/' diff --git a/qbs-resources/imports/QbsLibrary.qbs b/qbs-resources/imports/QbsLibrary.qbs index 8757b790c..a6bc7366d 100644 --- a/qbs-resources/imports/QbsLibrary.qbs +++ b/qbs-resources/imports/QbsLibrary.qbs @@ -22,9 +22,10 @@ QbsProduct { fileTagsFilter: product.type.concat("dynamiclibrary_symlink") .concat(qbs.buildVariant === "debug" ? ["debuginfo_dll"] : []) qbs.install: install - qbs.installDir: qbsbuildconfig.libInstallDir qbs.installSourceBase: destinationDirectory + qbs.installDir: targetInstallDir } + targetInstallDir: qbsbuildconfig.libInstallDir Group { fileTagsFilter: ["dynamiclibrary_import"] qbs.install: install @@ -42,7 +43,6 @@ QbsProduct { Depends { name: "Qt"; submodules: ["core"] } Depends { name: "qbsbuildconfig" } - cpp.rpaths: qbsbuildconfig.libRPaths cpp.includePaths: [product.sourceDirectory] cpp.defines: product.visibilityType === "static" ? ["QBS_STATIC_LIB"] : [] } diff --git a/qbs-resources/imports/QbsProduct.qbs b/qbs-resources/imports/QbsProduct.qbs index a90037bc6..ff5915d00 100644 --- a/qbs-resources/imports/QbsProduct.qbs +++ b/qbs-resources/imports/QbsProduct.qbs @@ -6,6 +6,7 @@ Product { Depends { name: "Qt.core"; versionAtLeast: minimumQtVersion } property string minimumQtVersion: "5.6.0" property bool install: true + property string targetInstallDir cpp.defines: { var res = ["QT_NO_CAST_FROM_ASCII", "QT_NO_PROCESS_COMBINED_ARGUMENT_START"]; if (qbs.toolchain.contains("msvc")) @@ -15,4 +16,5 @@ Product { return res; } cpp.enableExceptions: true + cpp.rpaths: qbsbuildconfig.libRPaths } diff --git a/qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs b/qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs index ee28da55a..accc5c4b0 100644 --- a/qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs +++ b/qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs @@ -19,16 +19,35 @@ Module { property string relativeLibexecPath: "../" + libexecInstallDir property string relativePluginsPath: "../" + libDirName property string relativeSearchPath: ".." + property string rpathOrigin: { + // qbs < 1.11 compatibility for cpp.rpathOrigin + if (qbs.targetOS.contains("darwin")) + return "@loader_path"; + if (qbs.targetOS.contains("unix")) + return "$ORIGIN"; + } property stringList libRPaths: { - if (!enableRPath) - return undefined; - if (qbs.targetOS.contains("linux")) - return ["$ORIGIN/../" + libDirName]; - if (qbs.targetOS.contains("macos")) - return ["@loader_path/../" + libDirName] + if (enableRPath && rpathOrigin && product.targetInstallDir) { + if (!FileInfo.cleanPath) { + // qbs < 1.10 compatibility + FileInfo.cleanPath = function (a) { + if (a.endsWith("/.")) + return a.slice(0, -2); + if (a.endsWith("/")) + return a.slice(0, -1); + return a; + } + } + return [FileInfo.cleanPath(FileInfo.joinPaths(rpathOrigin, FileInfo.relativePath( + FileInfo.resolvePath(qbs.installRoot, + product.targetInstallDir), + FileInfo.resolvePath(qbs.installRoot, + libDirName))))]; + } + return []; } property string resourcesInstallDir: "" - property string pluginsInstallDir: libDirName + property string pluginsInstallDir: libDirName + "/qbs/plugins" property string qmlTypeDescriptionsInstallDir: FileInfo.joinPaths(resourcesInstallDir, "share/qbs/qml-type-descriptions") } diff --git a/src/libexec/qbs_processlauncher/qbs_processlauncher.qbs b/src/libexec/qbs_processlauncher/qbs_processlauncher.qbs index 0ed25dca9..b1d74d2ec 100644 --- a/src/libexec/qbs_processlauncher/qbs_processlauncher.qbs +++ b/src/libexec/qbs_processlauncher/qbs_processlauncher.qbs @@ -10,11 +10,6 @@ QbsProduct { Depends { name: "Qt.network" } - Properties { - condition: qbs.targetOS.contains("macos") && qbsbuildconfig.enableRPath - cpp.rpaths: ["@loader_path/../../" + qbsbuildconfig.libDirName] - } - cpp.cxxLanguageVersion: "c++11" cpp.includePaths: base.concat(pathToProtocolSources) @@ -40,7 +35,8 @@ QbsProduct { fileTagsFilter: product.type .concat(qbs.buildVariant === "debug" ? ["debuginfo_app"] : []) qbs.install: true - qbs.installDir: qbsbuildconfig.libexecInstallDir qbs.installSourceBase: destinationDirectory + qbs.installDir: targetInstallDir } + targetInstallDir: qbsbuildconfig.libexecInstallDir } diff --git a/src/plugins/qbsplugin.qbs b/src/plugins/qbsplugin.qbs index dc1d4d612..a2b4fe8a5 100644 --- a/src/plugins/qbsplugin.qbs +++ b/src/plugins/qbsplugin.qbs @@ -25,9 +25,10 @@ QbsProduct { .concat(qbs.buildVariant === "debug" ? [isForDarwin ? "debuginfo_loadablemodule" : "debuginfo_dll"] : []) qbs.install: true - qbs.installDir: qbsbuildconfig.pluginsInstallDir + "/qbs/plugins" qbs.installSourceBase: destinationDirectory + qbs.installDir: targetInstallDir } + targetInstallDir: qbsbuildconfig.pluginsInstallDir Properties { condition: isForDarwin bundle.isBundle: false |