aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/qtprofilesetup
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2017-08-12 22:29:18 -0700
committerJake Petroules <jake.petroules@qt.io>2017-11-29 18:03:31 +0000
commita3c85aa9f267c156cd9b71a389eb4efe460439c8 (patch)
treead897e6ea353090c4e23ed78fc3e14632b800b1a /src/lib/qtprofilesetup
parentb3df879ed9dee5872fa2c1f3ee0594ae07dd80bb (diff)
Constrain Qt modules also to qbs.targetPlatform
This makes it possible to have multiple Qt versions for different platforms in the same module search path (much like multiple Android archs are present in the same module search path). This enables scenarios like building a Qt-based iOS and watchOS project in the same build configuration without messing with profiles. Change-Id: I448d7a768e8576373ff91d5283d46dbd7b8969ca Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/qtprofilesetup')
-rw-r--r--src/lib/qtprofilesetup/qtprofilesetup.cpp48
-rw-r--r--src/lib/qtprofilesetup/qtprofilesetup.h4
-rw-r--r--src/lib/qtprofilesetup/templates/QtModule.qbs8
-rw-r--r--src/lib/qtprofilesetup/templates/core.qbs7
-rw-r--r--src/lib/qtprofilesetup/templates/dbus.qbs1
-rw-r--r--src/lib/qtprofilesetup/templates/gui.qbs1
-rw-r--r--src/lib/qtprofilesetup/templates/module.qbs1
-rw-r--r--src/lib/qtprofilesetup/templates/plugin.qbs1
-rw-r--r--src/lib/qtprofilesetup/templates/qml.qbs1
-rw-r--r--src/lib/qtprofilesetup/templates/quick.qbs1
-rw-r--r--src/lib/qtprofilesetup/templates/scxml.qbs1
11 files changed, 71 insertions, 3 deletions
diff --git a/src/lib/qtprofilesetup/qtprofilesetup.cpp b/src/lib/qtprofilesetup/qtprofilesetup.cpp
index 837a54c71..c9256dc3d 100644
--- a/src/lib/qtprofilesetup/qtprofilesetup.cpp
+++ b/src/lib/qtprofilesetup/qtprofilesetup.cpp
@@ -159,6 +159,8 @@ static void replaceSpecialValues(QByteArray *content, const Profile &profile,
const QtModuleInfo &module, const QtEnvironment &qtEnvironment)
{
content->replace("@arch@", utf8JSLiteral(extractQbsArch(qtEnvironment)));
+ content->replace("@targetPlatform@", utf8JSLiteral(qbsTargetPlatformFromQtMkspec(
+ qtEnvironment.mkspecName)));
content->replace("@config@", utf8JSLiteral(qtEnvironment.configItems));
content->replace("@qtConfig@", utf8JSLiteral(qtEnvironment.qtConfigItems));
content->replace("@binPath@", utf8JSLiteral(qtEnvironment.binaryPath));
@@ -528,6 +530,52 @@ void doSetupQtProfile(const QString &profileName, Settings *settings,
createModules(profile, settings, qtEnvironment);
}
+QString qbsTargetPlatformFromQtMkspec(const QString &mkspec)
+{
+ if (mkspec.startsWith(QLatin1String("aix-")))
+ return QLatin1String("aix");
+ if (mkspec.startsWith(QLatin1String("android-")))
+ return QLatin1String("android");
+ if (mkspec.startsWith(QLatin1String("cygwin-")))
+ return QLatin1String("windows");
+ if (mkspec.startsWith(QLatin1String("darwin-")))
+ return QLatin1String("macos");
+ if (mkspec.startsWith(QLatin1String("freebsd-")))
+ return QLatin1String("freebsd");
+ if (mkspec.startsWith(QLatin1String("haiku-")))
+ return QLatin1String("haiku");
+ if (mkspec.startsWith(QLatin1String("hpux-")) || mkspec.startsWith(QLatin1String("hpuxi-")))
+ return QLatin1String("hpux");
+ if (mkspec.startsWith(QLatin1String("hurd-")))
+ return QLatin1String("hurd");
+ if (mkspec.startsWith(QLatin1String("integrity-")))
+ return QLatin1String("integrity");
+ if (mkspec.startsWith(QLatin1String("linux-")))
+ return QLatin1String("linux");
+ if (mkspec.startsWith(QLatin1String("macx-"))) {
+ if (mkspec.startsWith(QLatin1String("macx-ios-")))
+ return QLatin1String("ios");
+ if (mkspec.startsWith(QLatin1String("macx-tvos-")))
+ return QLatin1String("tvos");
+ if (mkspec.startsWith(QLatin1String("macx-watchos-")))
+ return QLatin1String("watchos");
+ return QLatin1String("macos");
+ }
+ if (mkspec.startsWith(QLatin1String("netbsd-")))
+ return QLatin1String("netbsd");
+ if (mkspec.startsWith(QLatin1String("openbsd-")))
+ return QLatin1String("openbsd");
+ if (mkspec.startsWith(QLatin1String("qnx-")))
+ return QLatin1String("qnx");
+ if (mkspec.startsWith(QLatin1String("solaris-")))
+ return QLatin1String("solaris");
+ if (mkspec.startsWith(QLatin1String("vxworks-")))
+ return QLatin1String("vxworks");
+ if (mkspec.startsWith(QLatin1String("win32-")) || mkspec.startsWith(QLatin1String("winrt-")))
+ return QLatin1String("windows");
+ return QString();
+}
+
ErrorInfo setupQtProfile(const QString &profileName, Settings *settings,
const QtEnvironment &qtEnvironment)
{
diff --git a/src/lib/qtprofilesetup/qtprofilesetup.h b/src/lib/qtprofilesetup/qtprofilesetup.h
index c6f707e26..be6642842 100644
--- a/src/lib/qtprofilesetup/qtprofilesetup.h
+++ b/src/lib/qtprofilesetup/qtprofilesetup.h
@@ -43,12 +43,14 @@
#include <tools/qbs_export.h>
-#include <QtCore/qstringlist.h>
+#include <QtCore/qstring.h>
namespace qbs {
class ErrorInfo;
class Settings;
+QBS_EXPORT QString qbsTargetPlatformFromQtMkspec(const QString &mkspec);
+
QBS_EXPORT ErrorInfo setupQtProfile(const QString &profileName, Settings *settings,
const QtEnvironment &qtEnvironment);
diff --git a/src/lib/qtprofilesetup/templates/QtModule.qbs b/src/lib/qtprofilesetup/templates/QtModule.qbs
index 6291bae01..62bbc8649 100644
--- a/src/lib/qtprofilesetup/templates/QtModule.qbs
+++ b/src/lib/qtprofilesetup/templates/QtModule.qbs
@@ -2,7 +2,12 @@ import qbs 1.0
import qbs.FileInfo
Module {
- condition: !qbs.architecture || architecture === qbs.architecture
+ condition: (qbs.targetPlatform === targetPlatform || isCombinedUIKitBuild)
+ && (!qbs.architecture
+ || architecture === qbs.architecture)
+
+ readonly property bool isCombinedUIKitBuild: ["ios", "tvos", "watchos"].contains(targetPlatform)
+ && qbs.targetPlatform === targetPlatform + "-simulator"
Depends { name: "cpp" }
Depends { name: "Qt.core" }
@@ -26,6 +31,7 @@ Module {
property bool isPlugin: false
property string architecture
+ property string targetPlatform
property stringList staticLibsDebug
property stringList staticLibsRelease
property stringList dynamicLibsDebug
diff --git a/src/lib/qtprofilesetup/templates/core.qbs b/src/lib/qtprofilesetup/templates/core.qbs
index 6015265e2..5ebe86599 100644
--- a/src/lib/qtprofilesetup/templates/core.qbs
+++ b/src/lib/qtprofilesetup/templates/core.qbs
@@ -8,7 +8,11 @@ import "moc.js" as Moc
import "qdoc.js" as Qdoc
Module {
- condition: !qbs.architecture || architecture === qbs.architecture
+ condition: (!qbs.architecture || architecture === qbs.architecture) &&
+ (qbs.targetPlatform === targetPlatform || isCombinedUIKitBuild)
+
+ readonly property bool isCombinedUIKitBuild: ["ios", "tvos", "watchos"].contains(targetPlatform)
+ && qbs.targetPlatform === targetPlatform + "-simulator"
id: qtcore
@@ -16,6 +20,7 @@ Module {
version: @version@
property string architecture: @arch@
+ property string targetPlatform: @targetPlatform@
property string libInfix: @libInfix@
property stringList config: @config@
property stringList qtConfig: @qtConfig@
diff --git a/src/lib/qtprofilesetup/templates/dbus.qbs b/src/lib/qtprofilesetup/templates/dbus.qbs
index 48fb2480b..3ef944cae 100644
--- a/src/lib/qtprofilesetup/templates/dbus.qbs
+++ b/src/lib/qtprofilesetup/templates/dbus.qbs
@@ -48,6 +48,7 @@ QtModule {
}
architecture: @arch@
+ targetPlatform: @targetPlatform@
staticLibsDebug: @staticLibsDebug@
staticLibsRelease: @staticLibsRelease@
dynamicLibsDebug: @dynamicLibsDebug@
diff --git a/src/lib/qtprofilesetup/templates/gui.qbs b/src/lib/qtprofilesetup/templates/gui.qbs
index 39703de96..df43a4b02 100644
--- a/src/lib/qtprofilesetup/templates/gui.qbs
+++ b/src/lib/qtprofilesetup/templates/gui.qbs
@@ -34,6 +34,7 @@ QtModule {
property string defaultQpaPlugin: @defaultQpaPlugin@
architecture: @arch@
+ targetPlatform: @targetPlatform@
staticLibsDebug: @staticLibsDebug@
staticLibsRelease: @staticLibsRelease@
dynamicLibsDebug: @dynamicLibsDebug@
diff --git a/src/lib/qtprofilesetup/templates/module.qbs b/src/lib/qtprofilesetup/templates/module.qbs
index ada143038..9eaeeaaa8 100644
--- a/src/lib/qtprofilesetup/templates/module.qbs
+++ b/src/lib/qtprofilesetup/templates/module.qbs
@@ -6,6 +6,7 @@ QtModule {
Depends { name: "Qt"; submodules: @dependencies@}
architecture: @arch@
+ targetPlatform: @targetPlatform@
hasLibrary: @has_library@
staticLibsDebug: @staticLibsDebug@
staticLibsRelease: @staticLibsRelease@
diff --git a/src/lib/qtprofilesetup/templates/plugin.qbs b/src/lib/qtprofilesetup/templates/plugin.qbs
index 943bc8f1e..e67c7794c 100644
--- a/src/lib/qtprofilesetup/templates/plugin.qbs
+++ b/src/lib/qtprofilesetup/templates/plugin.qbs
@@ -7,6 +7,7 @@ QtPlugin {
className: @className@
architecture: @arch@
+ targetPlatform: @targetPlatform@
staticLibsDebug: @staticLibsDebug@
staticLibsRelease: @staticLibsRelease@
dynamicLibsDebug: @dynamicLibsDebug@
diff --git a/src/lib/qtprofilesetup/templates/qml.qbs b/src/lib/qtprofilesetup/templates/qml.qbs
index d161f70e4..1f175dbf9 100644
--- a/src/lib/qtprofilesetup/templates/qml.qbs
+++ b/src/lib/qtprofilesetup/templates/qml.qbs
@@ -24,6 +24,7 @@ QtModule {
hasLibrary: @has_library@
architecture: @arch@
+ targetPlatform: @targetPlatform@
staticLibsDebug: (isStaticLibrary ? ['@' + pluginListFilePathDebug] : []).concat(@staticLibsDebug@)
staticLibsRelease: (isStaticLibrary ? ['@' + pluginListFilePathRelease] : []).concat(@staticLibsRelease@)
dynamicLibsDebug: @dynamicLibsDebug@
diff --git a/src/lib/qtprofilesetup/templates/quick.qbs b/src/lib/qtprofilesetup/templates/quick.qbs
index 5358a684f..13951a883 100644
--- a/src/lib/qtprofilesetup/templates/quick.qbs
+++ b/src/lib/qtprofilesetup/templates/quick.qbs
@@ -41,6 +41,7 @@ QtModule {
hasLibrary: @has_library@
architecture: @arch@
+ targetPlatform: @targetPlatform@
staticLibsDebug: @staticLibsDebug@
staticLibsRelease: @staticLibsRelease@
dynamicLibsDebug: @dynamicLibsDebug@
diff --git a/src/lib/qtprofilesetup/templates/scxml.qbs b/src/lib/qtprofilesetup/templates/scxml.qbs
index f38b9710b..e64b4dc9b 100644
--- a/src/lib/qtprofilesetup/templates/scxml.qbs
+++ b/src/lib/qtprofilesetup/templates/scxml.qbs
@@ -46,6 +46,7 @@ QtModule {
}
architecture: @arch@
+ targetPlatform: @targetPlatform@
staticLibsDebug: @staticLibsDebug@
staticLibsRelease: @staticLibsRelease@
dynamicLibsDebug: @dynamicLibsDebug@