aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2016-04-25 15:41:55 +0200
committerChristian Kandeler <christian.kandeler@theqtcompany.com>2016-04-27 08:01:30 +0000
commit4dee140ea3570f6111751b0b58dfd9167f6c5394 (patch)
tree6c59286a440ed13a432f103d829c3eb164b6587b /src
parent08fef1d5039b9fb7ae6460ab3acac76f39358b0f (diff)
DBus module: Add support for the qdbusxml2cpp tool.
This brings feature parity with qmake regarding the (undocumented) DBUS_ADAPTORS and DBUS_INTERFACES variables. Change-Id: I6c7a2278308e5eb44b4582f33615100def21d84c Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/lib/qtprofilesetup/qtprofilesetup.cpp4
-rw-r--r--src/lib/qtprofilesetup/templates.qrc2
-rw-r--r--src/lib/qtprofilesetup/templates/dbus.js47
-rw-r--r--src/lib/qtprofilesetup/templates/dbus.qbs69
4 files changed, 122 insertions, 0 deletions
diff --git a/src/lib/qtprofilesetup/qtprofilesetup.cpp b/src/lib/qtprofilesetup/qtprofilesetup.cpp
index 834762999..982fe085f 100644
--- a/src/lib/qtprofilesetup/qtprofilesetup.cpp
+++ b/src/lib/qtprofilesetup/qtprofilesetup.cpp
@@ -213,6 +213,10 @@ static void createModules(Profile &profile, Settings *settings,
&allFiles);
} else if (module.qbsName == QLatin1String("gui")) {
moduleTemplateFileName = QLatin1String("gui.qbs");
+ } else if (module.qbsName == QLatin1String("dbus")) {
+ moduleTemplateFileName = QLatin1String("dbus.qbs");
+ copyTemplateFile(QLatin1String("dbus.js"), qbsQtModuleDir, profile, qtEnvironment,
+ &allFiles);
} else if (module.qbsName == QLatin1String("phonon")) {
moduleTemplateFileName = QLatin1String("phonon.qbs");
} else if (module.isPlugin) {
diff --git a/src/lib/qtprofilesetup/templates.qrc b/src/lib/qtprofilesetup/templates.qrc
index 0a89bd8e6..257e89a54 100644
--- a/src/lib/qtprofilesetup/templates.qrc
+++ b/src/lib/qtprofilesetup/templates.qrc
@@ -9,5 +9,7 @@
<file>templates/plugin.qbs</file>
<file>templates/qdoc.js</file>
<file>templates/QtPlugin.qbs</file>
+ <file>templates/dbus.js</file>
+ <file>templates/dbus.qbs</file>
</qresource>
</RCC>
diff --git a/src/lib/qtprofilesetup/templates/dbus.js b/src/lib/qtprofilesetup/templates/dbus.js
new file mode 100644
index 000000000..e2b0ff3ab
--- /dev/null
+++ b/src/lib/qtprofilesetup/templates/dbus.js
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing
+**
+** This file is part of the Qt Build Suite.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms and
+** conditions see http://www.qt.io/terms-conditions. For further information
+** use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+function createCommands(product, input, outputs, option)
+{
+ var exe = ModUtils.moduleProperty(product, "binPath") + '/'
+ + ModUtils.moduleProperty(product, "xml2cppName");
+ var hppOutput = outputs["hpp"][0];
+ var hppArgs = ModUtils.moduleProperty(product, "xml2CppHeaderFlags");
+ hppArgs.push(option, hppOutput.filePath + ':', input.filePath);
+ var hppCmd = new Command(exe, hppArgs)
+ hppCmd.description = "qdbusxml2cpp " + input.fileName + " -> " + hppOutput.fileName;
+ hppCmd.highlight = "codegen";
+ var cppOutput = outputs["cpp"][0];
+ var cppArgs = ModUtils.moduleProperty(product, "xml2CppSourceFlags");
+ cppArgs.push("-i", hppOutput.filePath, option, ':' + cppOutput.filePath, input.filePath);
+ var cppCmd = new Command(exe, cppArgs)
+ cppCmd.description = "qdbusxml2cpp " + input.fileName + " -> " + cppOutput.fileName;
+ cppCmd.highlight = "codegen";
+ return [hppCmd, cppCmd];
+}
diff --git a/src/lib/qtprofilesetup/templates/dbus.qbs b/src/lib/qtprofilesetup/templates/dbus.qbs
new file mode 100644
index 000000000..d7d5d0b59
--- /dev/null
+++ b/src/lib/qtprofilesetup/templates/dbus.qbs
@@ -0,0 +1,69 @@
+import qbs 1.0
+import qbs.FileInfo
+import qbs.ModUtils
+import "../QtModule.qbs" as QtModule
+import "dbus.js" as DBus
+
+QtModule {
+ qtModuleName: "DBus"
+
+ property string xml2cppName: "qdbusxml2cpp"
+ property stringList xml2CppHeaderFlags: []
+ property stringList xml2CppSourceFlags: []
+
+ Rule {
+ inputs: ["qt.dbus.adaptor"]
+
+ Artifact {
+ filePath: "GeneratedFiles/" + input.completeBaseName + "_adaptor.h"
+ fileTags: ["hpp"]
+ }
+ Artifact {
+ filePath: "GeneratedFiles/" + input.completeBaseName + "_adaptor.cpp"
+ fileTags: ["cpp"]
+ }
+
+ prepare: {
+ return DBus.createCommands(product, input, outputs, "-a");
+ }
+ }
+
+ Rule {
+ inputs: ["qt.dbus.interface"]
+
+ Artifact {
+ filePath: "GeneratedFiles/" + input.completeBaseName + "_interface.h"
+ fileTags: ["hpp"]
+ }
+ Artifact {
+ filePath: "GeneratedFiles/" + input.completeBaseName + "_interface.cpp"
+ fileTags: ["cpp"]
+ }
+
+ prepare: {
+ return DBus.createCommands(product, input, outputs, "-p");
+ }
+ }
+
+ staticLibsDebug: @staticLibsDebug@
+ staticLibsRelease: @staticLibsRelease@
+ dynamicLibsDebug: @dynamicLibsDebug@
+ dynamicLibsRelease: @dynamicLibsRelease@
+ linkerFlagsDebug: @linkerFlagsDebug@
+ linkerFlagsRelease: @linkerFlagsRelease@
+ frameworksDebug: @frameworksDebug@
+ frameworksRelease: @frameworksRelease@
+ frameworkPathsDebug: @frameworkPathsDebug@
+ frameworkPathsRelease: @frameworkPathsRelease@
+ libNameForLinkerDebug: @libNameForLinkerDebug@
+ libNameForLinkerRelease: @libNameForLinkerRelease@
+ libFilePathDebug: @libFilePathDebug@
+ libFilePathRelease: @libFilePathRelease@
+
+ cpp.defines: @defines@
+ cpp.includePaths: @includes@
+ cpp.libraryPaths: @libraryPaths@
+
+ @special_properties@
+}
+