From d323d595b770e721ec69010b0a6bf9465b84e1ac Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 27 Nov 2015 14:02:44 +0100 Subject: [PATCH] QtVersion: Add a method to query the target device type Add and implement a method to get the supported target device types to the BaseQtVersion interface. Implement this for all Qt versions. Validate that the Qt version's target device type matches up with the device type set in the kit and warn on mismatch. Change-Id: I95da42031022663776afe23a50eae3677bdb1dda Reviewed-by: Tim Jenssen --- src/plugins/android/androidqtversion.cpp | 5 +++++ src/plugins/android/androidqtversion.h | 1 + src/plugins/ios/iosqtversion.cpp | 5 +++++ src/plugins/ios/iosqtversion.h | 1 + .../qnx/qnxdeviceconfigurationfactory.cpp | 4 +--- src/plugins/qnx/qnxqtversion.cpp | 5 +++++ src/plugins/qnx/qnxqtversion.h | 1 + src/plugins/qtsupport/baseqtversion.cpp | 9 +++++++++ src/plugins/qtsupport/baseqtversion.h | 2 ++ src/plugins/qtsupport/desktopqtversion.cpp | 14 ++++++++++++++ src/plugins/qtsupport/desktopqtversion.h | 1 + src/plugins/qtsupport/qtkitinformation.cpp | 13 ++++++++----- src/plugins/qtsupport/winceqtversion.cpp | 17 +++++++---------- src/plugins/qtsupport/winceqtversion.h | 7 ++++--- .../remotelinux/embeddedlinuxqtversion.cpp | 13 ++++++------- .../remotelinux/embeddedlinuxqtversion.h | 5 +++-- src/plugins/winrt/winrtphoneqtversion.cpp | 14 +++++++++----- src/plugins/winrt/winrtphoneqtversion.h | 3 ++- src/plugins/winrt/winrtqtversion.cpp | 9 +++++---- src/plugins/winrt/winrtqtversion.h | 4 +++- 20 files changed, 92 insertions(+), 41 deletions(-) diff --git a/src/plugins/android/androidqtversion.cpp b/src/plugins/android/androidqtversion.cpp index 9a7e3ced830..2303ddeb0b3 100644 --- a/src/plugins/android/androidqtversion.cpp +++ b/src/plugins/android/androidqtversion.cpp @@ -143,6 +143,11 @@ QSet AndroidQtVersion::availableFeatures() const return features; } +QSet AndroidQtVersion::targetDeviceTypes() const +{ + return { Constants::ANDROID_DEVICE_TYPE }; +} + QString AndroidQtVersion::platformName() const { return QLatin1String(QtSupport::Constants::ANDROID_PLATFORM); diff --git a/src/plugins/android/androidqtversion.h b/src/plugins/android/androidqtversion.h index a5b1ab0acbf..458a9adcf9f 100644 --- a/src/plugins/android/androidqtversion.h +++ b/src/plugins/android/androidqtversion.h @@ -57,6 +57,7 @@ public: Utils::Environment qmakeRunEnvironment() const; QSet availableFeatures() const; + QSet targetDeviceTypes() const; QString platformName() const; QString platformDisplayName() const; diff --git a/src/plugins/ios/iosqtversion.cpp b/src/plugins/ios/iosqtversion.cpp index bf064630d99..f78d304879d 100644 --- a/src/plugins/ios/iosqtversion.cpp +++ b/src/plugins/ios/iosqtversion.cpp @@ -119,6 +119,11 @@ QSet IosQtVersion::availableFeatures() const return features; } +QSet IosQtVersion::targetDeviceTypes() const +{ + return { Constants::IOS_DEVICE_TYPE }; +} + QString IosQtVersion::platformName() const { return QLatin1String(QtSupport::Constants::IOS_PLATFORM); diff --git a/src/plugins/ios/iosqtversion.h b/src/plugins/ios/iosqtversion.h index a8d98e2bfb4..f1ccff5f749 100644 --- a/src/plugins/ios/iosqtversion.h +++ b/src/plugins/ios/iosqtversion.h @@ -56,6 +56,7 @@ public: void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const override; QSet availableFeatures() const override; + QSet targetDeviceTypes() const override; QString platformName() const override; QString platformDisplayName() const override; diff --git a/src/plugins/qnx/qnxdeviceconfigurationfactory.cpp b/src/plugins/qnx/qnxdeviceconfigurationfactory.cpp index 51dac846d64..c8cdf3d39f2 100644 --- a/src/plugins/qnx/qnxdeviceconfigurationfactory.cpp +++ b/src/plugins/qnx/qnxdeviceconfigurationfactory.cpp @@ -54,9 +54,7 @@ QString QnxDeviceConfigurationFactory::displayNameForId(Core::Id type) const QList QnxDeviceConfigurationFactory::availableCreationIds() const { - QList result; - result << Core::Id(Constants::QNX_QNX_OS_TYPE); - return result; + return { Constants::QNX_QNX_OS_TYPE }; } bool QnxDeviceConfigurationFactory::canCreate() const diff --git a/src/plugins/qnx/qnxqtversion.cpp b/src/plugins/qnx/qnxqtversion.cpp index 733251945ba..1e7252803d4 100644 --- a/src/plugins/qnx/qnxqtversion.cpp +++ b/src/plugins/qnx/qnxqtversion.cpp @@ -85,6 +85,11 @@ QSet QnxQtVersion::availableFeatures() const return features; } +QSet QnxQtVersion::targetDeviceTypes() const +{ + return { Constants::QNX_QNX_OS_TYPE }; +} + QString QnxQtVersion::platformName() const { return QString::fromLatin1(Constants::QNX_QNX_PLATFORM_NAME); diff --git a/src/plugins/qnx/qnxqtversion.h b/src/plugins/qnx/qnxqtversion.h index d654d240f45..be2573bfbfe 100644 --- a/src/plugins/qnx/qnxqtversion.h +++ b/src/plugins/qnx/qnxqtversion.h @@ -57,6 +57,7 @@ public: QString description() const override; QSet availableFeatures() const override; + QSet targetDeviceTypes() const override; QString platformName() const override; QString platformDisplayName() const override; diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 09522e3c576..1063711b843 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -484,6 +484,15 @@ QList BaseQtVersion::validateKit(const Kit *k) if (qtAbis.isEmpty()) // No need to test if Qt does not know anyway... return result; + const Id dt = DeviceTypeKitInformation::deviceTypeId(k); + const QSet tdt = targetDeviceTypes(); + if (!tdt.isEmpty() && !tdt.contains(dt)) { + result << Task(Task::Warning, + QCoreApplication::translate("BaseQtVersion", + "Device type is not supported by Qt version."), + FileName(), -1, ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM); + } + ToolChain *tc = ToolChainKitInformation::toolChain(k); if (tc) { Abi targetAbi = tc->targetAbi(); diff --git a/src/plugins/qtsupport/baseqtversion.h b/src/plugins/qtsupport/baseqtversion.h index e56d86b4ffa..245ae751113 100644 --- a/src/plugins/qtsupport/baseqtversion.h +++ b/src/plugins/qtsupport/baseqtversion.h @@ -38,6 +38,7 @@ #include +#include #include #include @@ -206,6 +207,7 @@ public: bool fromPath = false); virtual QSet availableFeatures() const; + virtual QSet targetDeviceTypes() const = 0; virtual QString platformName() const; virtual QString platformDisplayName() const; virtual bool supportsPlatform(const QString &platformName) const; diff --git a/src/plugins/qtsupport/desktopqtversion.cpp b/src/plugins/qtsupport/desktopqtversion.cpp index b71bb709b85..5764777efa4 100644 --- a/src/plugins/qtsupport/desktopqtversion.cpp +++ b/src/plugins/qtsupport/desktopqtversion.cpp @@ -31,8 +31,14 @@ #include "desktopqtversion.h" #include "qtsupportconstants.h" +#include +#include +#include #include +#include +#include + #include using namespace QtSupport; @@ -90,6 +96,14 @@ QSet DesktopQtVersion::availableFeatures() const return features; } +QSet DesktopQtVersion::targetDeviceTypes() const +{ + QSet result = { ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE }; + if (Utils::contains(qtAbis(), [](const ProjectExplorer::Abi a) { return a.os() == ProjectExplorer::Abi::LinuxOS; })) + result.insert(RemoteLinux::Constants::GenericLinuxOsType); + return result; +} + QString DesktopQtVersion::platformName() const { return QLatin1String(Constants::DESKTOP_PLATFORM); diff --git a/src/plugins/qtsupport/desktopqtversion.h b/src/plugins/qtsupport/desktopqtversion.h index ff1a5c59f41..5141a7931e1 100644 --- a/src/plugins/qtsupport/desktopqtversion.h +++ b/src/plugins/qtsupport/desktopqtversion.h @@ -52,6 +52,7 @@ public: QString description() const; QSet availableFeatures() const; + QSet targetDeviceTypes() const; QString platformName() const; QString platformDisplayName() const; }; diff --git a/src/plugins/qtsupport/qtkitinformation.cpp b/src/plugins/qtsupport/qtkitinformation.cpp index 94aa930d159..b43a336e121 100644 --- a/src/plugins/qtsupport/qtkitinformation.cpp +++ b/src/plugins/qtsupport/qtkitinformation.cpp @@ -35,6 +35,9 @@ #include "qtversionmanager.h" #include "qtparser.h" +#include +#include + #include #include #include @@ -51,8 +54,8 @@ QtKitInformation::QtKitInformation() setId(QtKitInformation::id()); setPriority(26000); - connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitsLoaded()), - this, SLOT(kitsWereLoaded())); + connect(KitManager::instance(), &KitManager::kitsLoaded, + this, &QtKitInformation::kitsWereLoaded); } QVariant QtKitInformation::defaultValue(ProjectExplorer::Kit *k) const @@ -85,11 +88,11 @@ QVariant QtKitInformation::defaultValue(ProjectExplorer::Kit *k) const QList QtKitInformation::validate(const ProjectExplorer::Kit *k) const { - QList result; - QTC_ASSERT(QtVersionManager::isLoaded(), return result); + QTC_ASSERT(QtVersionManager::isLoaded(), return { }); BaseQtVersion *version = qtVersion(k); if (!version) - return result; + return { }; + return version->validateKit(k); } diff --git a/src/plugins/qtsupport/winceqtversion.cpp b/src/plugins/qtsupport/winceqtversion.cpp index 55fc81c839c..8fd0e0a7e66 100644 --- a/src/plugins/qtsupport/winceqtversion.cpp +++ b/src/plugins/qtsupport/winceqtversion.cpp @@ -31,18 +31,14 @@ #include "winceqtversion.h" #include "qtsupportconstants.h" +#include + #include #include using namespace QtSupport; using namespace QtSupport::Internal; -WinCeQtVersion::WinCeQtVersion() - : BaseQtVersion(), - m_archType(ProjectExplorer::Abi::ArmArchitecture) -{ -} - WinCeQtVersion::WinCeQtVersion(const Utils::FileName &path, const QString &archType, bool isAutodetected, const QString &autodetectionSource) : BaseQtVersion(path, isAutodetected, autodetectionSource), @@ -55,10 +51,6 @@ WinCeQtVersion::WinCeQtVersion(const Utils::FileName &path, const QString &archT setUnexpandedDisplayName(defaultUnexpandedDisplayName(path, false)); } -WinCeQtVersion::~WinCeQtVersion() -{ -} - WinCeQtVersion *WinCeQtVersion::clone() const { return new WinCeQtVersion(*this); @@ -113,3 +105,8 @@ QString WinCeQtVersion::platformDisplayName() const { return QLatin1String(Constants::WINDOWS_CE_PLATFORM_TR); } + +QSet WinCeQtVersion::targetDeviceTypes() const +{ + return QSet(); +} diff --git a/src/plugins/qtsupport/winceqtversion.h b/src/plugins/qtsupport/winceqtversion.h index 8a9a3ca07fb..df7e5710d82 100644 --- a/src/plugins/qtsupport/winceqtversion.h +++ b/src/plugins/qtsupport/winceqtversion.h @@ -39,10 +39,10 @@ namespace Internal { class WinCeQtVersion : public BaseQtVersion { public: - WinCeQtVersion(); + WinCeQtVersion() = default; WinCeQtVersion(const Utils::FileName &path, const QString &archType, bool isAutodetected = false, const QString &autodetectionSource = QString()); - ~WinCeQtVersion(); + ~WinCeQtVersion() = default; WinCeQtVersion *clone() const; QString type() const; @@ -55,9 +55,10 @@ public: QString platformName() const; QString platformDisplayName() const; + QSet targetDeviceTypes() const; private: - ProjectExplorer::Abi::Architecture m_archType; + ProjectExplorer::Abi::Architecture m_archType = ProjectExplorer::Abi::ArmArchitecture; }; } // Internal diff --git a/src/plugins/remotelinux/embeddedlinuxqtversion.cpp b/src/plugins/remotelinux/embeddedlinuxqtversion.cpp index beacbd8f123..510c0155398 100644 --- a/src/plugins/remotelinux/embeddedlinuxqtversion.cpp +++ b/src/plugins/remotelinux/embeddedlinuxqtversion.cpp @@ -32,6 +32,7 @@ #include "remotelinux_constants.h" +#include #include #include @@ -39,19 +40,12 @@ namespace RemoteLinux { namespace Internal { -EmbeddedLinuxQtVersion::EmbeddedLinuxQtVersion() - : BaseQtVersion() -{ } - EmbeddedLinuxQtVersion::EmbeddedLinuxQtVersion(const Utils::FileName &path, bool isAutodetected, const QString &autodetectionSource) : BaseQtVersion(path, isAutodetected, autodetectionSource) { setUnexpandedDisplayName(defaultUnexpandedDisplayName(path, false)); } -EmbeddedLinuxQtVersion::~EmbeddedLinuxQtVersion() -{ } - EmbeddedLinuxQtVersion *EmbeddedLinuxQtVersion::clone() const { return new EmbeddedLinuxQtVersion(*this); @@ -72,6 +66,11 @@ QString EmbeddedLinuxQtVersion::description() const return QCoreApplication::translate("QtVersion", "Embedded Linux", "Qt Version is used for embedded Linux development"); } +QSet EmbeddedLinuxQtVersion::targetDeviceTypes() const +{ + return { Constants::GenericLinuxOsType }; +} + QString EmbeddedLinuxQtVersion::platformName() const { return QLatin1String(QtSupport::Constants::EMBEDDED_LINUX_PLATFORM); diff --git a/src/plugins/remotelinux/embeddedlinuxqtversion.h b/src/plugins/remotelinux/embeddedlinuxqtversion.h index 89cac2ac4fd..c1975f6c159 100644 --- a/src/plugins/remotelinux/embeddedlinuxqtversion.h +++ b/src/plugins/remotelinux/embeddedlinuxqtversion.h @@ -39,9 +39,9 @@ namespace Internal { class EmbeddedLinuxQtVersion : public QtSupport::BaseQtVersion { public: - EmbeddedLinuxQtVersion(); + EmbeddedLinuxQtVersion() = default; EmbeddedLinuxQtVersion(const Utils::FileName &path, bool isAutodetected = false, const QString &autodetectionSource = QString()); - ~EmbeddedLinuxQtVersion(); + ~EmbeddedLinuxQtVersion() = default; EmbeddedLinuxQtVersion *clone() const; QString type() const; @@ -50,6 +50,7 @@ public: QString description() const; + QSet targetDeviceTypes() const; QString platformName() const; QString platformDisplayName() const; }; diff --git a/src/plugins/winrt/winrtphoneqtversion.cpp b/src/plugins/winrt/winrtphoneqtversion.cpp index 694d12df2d7..6754a50dfca 100644 --- a/src/plugins/winrt/winrtphoneqtversion.cpp +++ b/src/plugins/winrt/winrtphoneqtversion.cpp @@ -31,16 +31,15 @@ #include "winrtphoneqtversion.h" #include "winrtconstants.h" + +#include #include +#include + namespace WinRt { namespace Internal { -WinRtPhoneQtVersion::WinRtPhoneQtVersion() - : WinRtQtVersion() -{ -} - WinRtPhoneQtVersion::WinRtPhoneQtVersion(const Utils::FileName &path, bool isAutodetected, const QString &autodetectionSource) : WinRtQtVersion(path, isAutodetected, autodetectionSource) @@ -72,5 +71,10 @@ QString WinRtPhoneQtVersion::platformDisplayName() const return QLatin1String(QtSupport::Constants::WINDOWS_PHONE_PLATFORM_TR); } +QSet WinRtPhoneQtVersion::targetDeviceTypes() const +{ + return { Constants::WINRT_DEVICE_TYPE_PHONE, Constants::WINRT_DEVICE_TYPE_EMULATOR }; +} + } // Internal } // WinRt diff --git a/src/plugins/winrt/winrtphoneqtversion.h b/src/plugins/winrt/winrtphoneqtversion.h index cc0841e3cc2..0a58e6a7a3e 100644 --- a/src/plugins/winrt/winrtphoneqtversion.h +++ b/src/plugins/winrt/winrtphoneqtversion.h @@ -40,7 +40,7 @@ class WinRtPhoneQtVersion : public WinRtQtVersion { Q_DECLARE_TR_FUNCTIONS(WinRt::Internal::WinRtQtVersion) public: - WinRtPhoneQtVersion(); + WinRtPhoneQtVersion() = default; WinRtPhoneQtVersion(const Utils::FileName &path, bool isAutodetected, const QString &autodetectionSource); @@ -49,6 +49,7 @@ public: QString type() const; QString platformName() const; QString platformDisplayName() const; + QSet targetDeviceTypes() const; }; } // Internal diff --git a/src/plugins/winrt/winrtqtversion.cpp b/src/plugins/winrt/winrtqtversion.cpp index d899da3bff8..d3280c7f66e 100644 --- a/src/plugins/winrt/winrtqtversion.cpp +++ b/src/plugins/winrt/winrtqtversion.cpp @@ -38,10 +38,6 @@ namespace WinRt { namespace Internal { -WinRtQtVersion::WinRtQtVersion() -{ -} - WinRtQtVersion::WinRtQtVersion(const Utils::FileName &path, bool isAutodetected, const QString &autodetectionSource) : BaseQtVersion(path, isAutodetected, autodetectionSource) @@ -89,5 +85,10 @@ QList WinRtQtVersion::detectQtAbis() const return qtAbisFromLibrary(qtCorePaths(versionInfo(), qtVersionString())); } +QSet WinRtQtVersion::targetDeviceTypes() const +{ + return { Constants::WINRT_DEVICE_TYPE_LOCAL, Constants::WINRT_DEVICE_TYPE_EMULATOR }; +} + } // Internal } // WinRt diff --git a/src/plugins/winrt/winrtqtversion.h b/src/plugins/winrt/winrtqtversion.h index 6036d16e0fd..639e59635ac 100644 --- a/src/plugins/winrt/winrtqtversion.h +++ b/src/plugins/winrt/winrtqtversion.h @@ -40,7 +40,7 @@ class WinRtQtVersion : public QtSupport::BaseQtVersion { Q_DECLARE_TR_FUNCTIONS(WinRt::Internal::WinRtQtVersion) public: - WinRtQtVersion(); + WinRtQtVersion() = default; WinRtQtVersion(const Utils::FileName &path, bool isAutodetected, const QString &autodetectionSource); @@ -51,6 +51,8 @@ public: QString platformName() const; QString platformDisplayName() const; QList detectQtAbis() const; + + QSet targetDeviceTypes() const; }; } // Internal