aboutsummaryrefslogtreecommitdiffstats
path: root/qbs
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2023-09-14 12:15:19 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2023-09-18 11:50:09 +0000
commitbdded29b33bb22b8996dfb5f04f85c02404f1c2c (patch)
tree6f6e697ab35f6226d670a219a3ce31550d0718c2 /qbs
parent2842eeeeccd61f6b1a68c869b3c7db9a51bf1143 (diff)
qbs build: Improve some base items
Clean-up, simplification and modernization. Also fix the bugs uncovered by this. Change-Id: Ia3a77557f10faf9a901540a55fd6c07a2e986bf5 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'qbs')
-rw-r--r--qbs/imports/QtcAutotest.qbs25
-rw-r--r--qbs/imports/QtcCommercialPlugin.qbs2
-rw-r--r--qbs/imports/QtcDocumentation.qbs28
-rw-r--r--qbs/imports/QtcLibrary.qbs21
-rw-r--r--qbs/imports/QtcManualtest.qbs21
-rw-r--r--qbs/imports/QtcPlugin.qbs49
-rw-r--r--qbs/imports/QtcProduct.qbs34
-rw-r--r--qbs/imports/QtcTestApp.qbs1
-rw-r--r--qbs/imports/QtcTestFiles.qbs2
-rw-r--r--qbs/imports/QtcTool.qbs6
10 files changed, 73 insertions, 116 deletions
diff --git a/qbs/imports/QtcAutotest.qbs b/qbs/imports/QtcAutotest.qbs
index 91427f7511..523f1cdbfd 100644
--- a/qbs/imports/QtcAutotest.qbs
+++ b/qbs/imports/QtcAutotest.qbs
@@ -2,21 +2,19 @@ import qbs
import qbs.FileInfo
QtcProduct {
+ // This needs to be absolute, because it is passed to one of the source files.
+ destinationDirectory: project.buildDirectory + '/'
+ + FileInfo.relativePath(project.ide_source_tree, sourceDirectory)
+
+ targetName: "tst_" + name.split(' ').join("")
type: ["application", "autotest"]
+ installTags: []
+
Depends { name: "autotest" }
Depends { name: "Qt.testlib" }
Depends { name: "copyable_resource" }
- targetName: "tst_" + name.split(' ').join("")
-
- // This needs to be absolute, because it is passed to one of the source files.
- destinationDirectory: project.buildDirectory + '/'
- + FileInfo.relativePath(project.ide_source_tree, sourceDirectory)
- cpp.rpaths: [
- project.buildDirectory + '/' + qtc.ide_library_path,
- project.buildDirectory + '/' + qtc.ide_plugin_path
- ]
cpp.defines: {
var defines = base.filter(function(d) { return d !== "QT_RESTRICTED_CAST_FROM_ASCII"; });
var absLibExecPath = FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix,
@@ -25,11 +23,10 @@ QtcProduct {
defines.push('TEST_RELATIVE_LIBEXEC_PATH="' + relLibExecPath + '"');
return defines;
}
-
- Group {
- fileTagsFilter: product.type
- qbs.install: false
- }
+ cpp.rpaths: [
+ project.buildDirectory + '/' + qtc.ide_library_path,
+ project.buildDirectory + '/' + qtc.ide_plugin_path
+ ]
// The following would be conceptually right, but does not work currently as some autotests
// (e.g. extensionsystem) do not work when installed, because they want hardcoded
diff --git a/qbs/imports/QtcCommercialPlugin.qbs b/qbs/imports/QtcCommercialPlugin.qbs
index 712ad9f157..f26af46f2b 100644
--- a/qbs/imports/QtcCommercialPlugin.qbs
+++ b/qbs/imports/QtcCommercialPlugin.qbs
@@ -1,5 +1,3 @@
-import qbs
-
QtcPlugin {
Depends { name: "LicenseChecker"; required: false }
cpp.defines: base.concat(LicenseChecker.present ? ["LICENSECHECKER"] : [])
diff --git a/qbs/imports/QtcDocumentation.qbs b/qbs/imports/QtcDocumentation.qbs
index c1b10310d2..3017114c8c 100644
--- a/qbs/imports/QtcDocumentation.qbs
+++ b/qbs/imports/QtcDocumentation.qbs
@@ -1,38 +1,38 @@
-import qbs
import qbs.FileInfo
Product {
builtByDefault: false
type: [isOnlineDoc ? "qdoc-output" : "qch"]
+
Depends { name: "Qt.core" }
Depends { name: "qtc" }
- property path mainDocConfFile
property bool isOnlineDoc
-
- Group {
- name: "main qdocconf file"
- prefix: product.sourceDirectory + '/'
- files: [mainDocConfFile]
- fileTags: ["qdocconf-main"]
- }
-
+ property path mainDocConfFile
property string versionTag: qtc.qtcreator_version.replace(/\.|-/g, "")
+
Qt.core.qdocEnvironment: [
"IDE_DISPLAY_NAME=" + qtc.ide_display_name,
- "IDE_ID=" + qtc.ide_id,
"IDE_CASED_ID=" + qtc.ide_cased_id,
+ "IDE_ID=" + qtc.ide_id,
"QTCREATOR_COPYRIGHT_YEAR=" + qtc.qtcreator_copyright_year,
"QTC_VERSION=" + qtc.qtcreator_version,
"QTC_VERSION_TAG=" + qtc.qtcreator_version,
- "SRCDIR=" + sourceDirectory,
"QT_INSTALL_DOCS=" + Qt.core.docPath,
"QDOC_INDEX_DIR=" + Qt.core.docPath,
- "VERSION_TAG=" + versionTag
+ "SRCDIR=" + sourceDirectory,
+ "VERSION_TAG=" + versionTag,
]
Group {
- fileTagsFilter: ["qch"]
+ name: "main qdocconf file"
+ prefix: product.sourceDirectory + '/'
+ files: mainDocConfFile
+ fileTags: "qdocconf-main"
+ }
+
+ Group {
+ fileTagsFilter: "qch"
qbs.install: !qbs.targetOS.contains("macos")
qbs.installDir: qtc.ide_doc_path
}
diff --git a/qbs/imports/QtcLibrary.qbs b/qbs/imports/QtcLibrary.qbs
index 887a79dbb5..a0b8b7c817 100644
--- a/qbs/imports/QtcLibrary.qbs
+++ b/qbs/imports/QtcLibrary.qbs
@@ -1,19 +1,14 @@
-import qbs 1.0
import qbs.FileInfo
import QtcFunctions
QtcProduct {
type: ["dynamiclibrary", "dynamiclibrary_symlink"]
+ destinationDirectory: FileInfo.joinPaths(project.buildDirectory, qtc.ide_library_path)
+ targetName: QtcFunctions.qtLibraryName(qbs, name)
+
installDir: qtc.ide_library_path
- installTags: ["dynamiclibrary", "dynamiclibrary_symlink", "debuginfo_dll"]
+ installTags: type.concat("debuginfo_dll")
useNonGuiPchFile: true
- Depends {
- condition: qtc.testsEnabled
- name: "Qt.testlib"
- }
-
- targetName: QtcFunctions.qtLibraryName(qbs, name)
- destinationDirectory: FileInfo.joinPaths(project.buildDirectory, qtc.ide_library_path)
cpp.linkerFlags: {
var flags = base;
@@ -23,17 +18,13 @@ QtcProduct {
flags.push("-compatibility_version", qtc.qtcreator_compat_version);
return flags;
}
- cpp.sonamePrefix: qbs.targetOS.contains("macos")
- ? "@rpath"
- : undefined
+ cpp.sonamePrefix: qbs.targetOS.contains("macos") ? "@rpath" : undefined
cpp.rpaths: qbs.targetOS.contains("macos")
? ["@loader_path/../Frameworks"]
: ["$ORIGIN", "$ORIGIN/.."]
- property string libIncludeBase: ".." // #include <lib/header.h>
- cpp.includePaths: [libIncludeBase]
Export {
Depends { name: "cpp" }
- cpp.includePaths: [exportingProduct.libIncludeBase]
+ cpp.includePaths: project.ide_source_tree + "/src/libs"
}
}
diff --git a/qbs/imports/QtcManualtest.qbs b/qbs/imports/QtcManualtest.qbs
index cfa1abc1d8..0c47bf1c8f 100644
--- a/qbs/imports/QtcManualtest.qbs
+++ b/qbs/imports/QtcManualtest.qbs
@@ -1,23 +1,22 @@
-import qbs
import qbs.FileInfo
QtcProduct {
- type: ["application"]
+ destinationDirectory: project.buildDirectory + '/'
+ + FileInfo.relativePath(project.ide_source_tree, sourceDirectory)
+ targetName: "tst_" + name.split(' ').join("")
+ type: "application"
+
+ install: false
Depends { name: "Qt.testlib" }
Depends { name: "copyable_resource" }
- targetName: "tst_" + name.split(' ').join("")
- cpp.rpaths: [
- project.buildDirectory + '/' + qtc.ide_library_path,
- project.buildDirectory + '/' + qtc.ide_plugin_path
- ]
cpp.defines: {
var defines = base.filter(function(d) { return d !== "QT_RESTRICTED_CAST_FROM_ASCII"; });
return defines;
}
-
- destinationDirectory: project.buildDirectory + '/'
- + FileInfo.relativePath(project.ide_source_tree, sourceDirectory)
- install: false
+ cpp.rpaths: [
+ project.buildDirectory + '/' + qtc.ide_library_path,
+ project.buildDirectory + '/' + qtc.ide_plugin_path
+ ]
}
diff --git a/qbs/imports/QtcPlugin.qbs b/qbs/imports/QtcPlugin.qbs
index 221789ef60..8c26050328 100644
--- a/qbs/imports/QtcPlugin.qbs
+++ b/qbs/imports/QtcPlugin.qbs
@@ -1,38 +1,25 @@
-import qbs 1.0
import qbs.FileInfo
import QtcFunctions
QtcProduct {
+ destinationDirectory: FileInfo.joinPaths(project.buildDirectory, qtc.ide_plugin_path)
+ name: project.name
+ targetName: QtcFunctions.qtLibraryName(qbs, name)
type: ["dynamiclibrary", "pluginSpec"]
+
installDir: qtc.ide_plugin_path
installTags: ["dynamiclibrary", "debuginfo_dll"]
useGuiPchFile: true
- property var pluginRecommends: []
- property var pluginTestDepends: []
-
- targetName: QtcFunctions.qtLibraryName(qbs, name)
- destinationDirectory: FileInfo.joinPaths(project.buildDirectory, qtc.ide_plugin_path)
+ property stringList pluginRecommends: []
+ property stringList pluginTestDepends: []
+ Depends { name: "Qt.testlib"; condition: qtc.testsEnabled }
Depends { name: "ExtensionSystem" }
Depends { name: "pluginjson" }
- pluginjson.useVcsData: false
- Depends {
- condition: qtc.testsEnabled
- name: "Qt.testlib"
- }
- Properties {
- condition: qbs.targetOS.contains("unix")
- cpp.internalVersion: ""
- }
cpp.defines: base.concat([name.toUpperCase() + "_LIBRARY"])
- cpp.sonamePrefix: qbs.targetOS.contains("macos")
- ? "@rpath"
- : undefined
- cpp.rpaths: qbs.targetOS.contains("macos")
- ? ["@loader_path/../Frameworks", "@loader_path/../PlugIns"]
- : ["$ORIGIN", "$ORIGIN/.."]
+ Properties { cpp.internalVersion: ""; condition: qbs.targetOS.contains("unix") }
cpp.linkerFlags: {
var flags = base;
if (qbs.buildVariant == "debug" && qbs.toolchain.contains("msvc"))
@@ -41,20 +28,24 @@ QtcProduct {
flags.push("-compatibility_version", qtc.qtcreator_compat_version);
return flags;
}
-
- property string pluginIncludeBase: ".." // #include <plugin/header.h>
- cpp.includePaths: [pluginIncludeBase]
+ cpp.rpaths: qbs.targetOS.contains("macos")
+ ? ["@loader_path/../Frameworks", "@loader_path/../PlugIns"]
+ : ["$ORIGIN", "$ORIGIN/.."]
+ cpp.sonamePrefix: qbs.targetOS.contains("macos")
+ ? "@rpath"
+ : undefined
+ pluginjson.useVcsData: false
Group {
name: "PluginMetaData"
- prefix: product.sourceDirectory + '/'
- files: [ product.name + ".json.in" ]
- fileTags: ["pluginJsonIn"]
+ prefix: sourceDirectory + '/'
+ files: product.name + ".json.in"
+ fileTags: "pluginJsonIn"
}
Export {
- Depends { name: "ExtensionSystem" }
Depends { name: "cpp" }
- cpp.includePaths: [exportingProduct.pluginIncludeBase]
+ Depends { name: "ExtensionSystem" }
+ cpp.includePaths: ".."
}
}
diff --git a/qbs/imports/QtcProduct.qbs b/qbs/imports/QtcProduct.qbs
index e5f341704d..4841709e6d 100644
--- a/qbs/imports/QtcProduct.qbs
+++ b/qbs/imports/QtcProduct.qbs
@@ -1,16 +1,13 @@
-import qbs 1.0
import qbs.FileInfo
import qbs.Utilities
-import QtcFunctions
Product {
- name: project.name
version: qtc.qtcreator_version
+
property bool install: true
property string installDir
property string installSourceBase: destinationDirectory
property stringList installTags: type
- property string fileName: FileInfo.fileName(sourceDirectory) + ".qbs"
property bool useNonGuiPchFile: false
property bool useGuiPchFile: false
property bool useQt: true
@@ -20,15 +17,6 @@ Product {
property bool sanitizable: true
Depends { name: "cpp" }
- Depends { name: "qtc" }
- Depends {
- name: product.name + " dev headers";
- required: false
- Properties {
- condition: Utilities.versionCompare(qbs.version, "1.13") >= 0
- enableFallback: false
- }
- }
Depends {
name: "Qt"
condition: useQt
@@ -36,10 +24,7 @@ Product {
versionAtLeast: "6.2.0"
}
- // TODO: Should fall back to what came from Qt.core for Qt < 5.7, but we cannot express that
- // atm. Conditionally pulling in a module that sets the property is also not possible,
- // because conflicting scalar values would be reported (QBS-1225 would fix that).
- cpp.minimumMacosVersion: project.minimumMacosVersion
+ Depends { name: "qtc" }
cpp.cxxFlags: {
var flags = [];
@@ -62,7 +47,8 @@ Product {
}
return flags;
}
-
+ cpp.cxxLanguageVersion: "c++17"
+ cpp.defines: qtc.generalDefines
Properties {
condition: sanitizable && qbs.toolchain.contains("gcc")
cpp.driverFlags: {
@@ -76,9 +62,7 @@ Product {
return flags;
}
}
-
- cpp.cxxLanguageVersion: "c++17"
- cpp.defines: qtc.generalDefines
+ cpp.minimumMacosVersion: "10.15"
cpp.minimumWindowsVersion: "6.1"
cpp.useCxxPrecompiledHeader: useQt && (useNonGuiPchFile || useGuiPchFile)
cpp.visibility: "minimal"
@@ -94,15 +78,15 @@ Product {
name: "standard pch file (non-gui)"
condition: useNonGuiPchFile
prefix: pathToSharedSources + '/'
- files: ["qtcreator_pch.h"]
- fileTags: ["cpp_pch_src"]
+ files: "qtcreator_pch.h"
+ fileTags: "cpp_pch_src"
}
Group {
name: "standard pch file (gui)"
condition: useGuiPchFile
prefix: pathToSharedSources + '/'
- files: ["qtcreator_gui_pch.h"]
- fileTags: ["cpp_pch_src"]
+ files: "qtcreator_gui_pch.h"
+ fileTags: "cpp_pch_src"
}
}
diff --git a/qbs/imports/QtcTestApp.qbs b/qbs/imports/QtcTestApp.qbs
index 8411ea9b9e..bca15924c7 100644
--- a/qbs/imports/QtcTestApp.qbs
+++ b/qbs/imports/QtcTestApp.qbs
@@ -1,4 +1,3 @@
-import qbs
import qbs.FileInfo
CppApplication {
diff --git a/qbs/imports/QtcTestFiles.qbs b/qbs/imports/QtcTestFiles.qbs
index ab27a8df8a..e1be695dac 100644
--- a/qbs/imports/QtcTestFiles.qbs
+++ b/qbs/imports/QtcTestFiles.qbs
@@ -1,5 +1,3 @@
-import qbs 1.0
-
Group {
name: "Unit tests"
condition: qtc.testsEnabled
diff --git a/qbs/imports/QtcTool.qbs b/qbs/imports/QtcTool.qbs
index 1b38968650..e93829cc63 100644
--- a/qbs/imports/QtcTool.qbs
+++ b/qbs/imports/QtcTool.qbs
@@ -1,11 +1,11 @@
-import qbs
import qbs.FileInfo
QtcProduct {
- type: ["application"]
consoleApplication: true
+ type: "application"
+
installDir: qtc.ide_libexec_path
- installTags: base.concat(["debuginfo_app"])
+ installTags: type.concat("debuginfo_app")
useNonGuiPchFile: true
cpp.rpaths: {