summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/utils/buildablehelperlibrary.cpp27
-rw-r--r--src/libs/utils/buildablehelperlibrary.h1
-rw-r--r--src/plugins/qt4projectmanager/qmldumptool.cpp5
-rw-r--r--src/plugins/qt4projectmanager/qmldumptool.h3
-rw-r--r--src/plugins/qt4projectmanager/qmlobservertool.cpp6
-rw-r--r--src/plugins/qt4projectmanager/qmlobservertool.h4
-rw-r--r--src/plugins/qt4projectmanager/qtversionmanager.cpp4
7 files changed, 40 insertions, 10 deletions
diff --git a/src/libs/utils/buildablehelperlibrary.cpp b/src/libs/utils/buildablehelperlibrary.cpp
index c23853d227..e9fcdbce71 100644
--- a/src/libs/utils/buildablehelperlibrary.cpp
+++ b/src/libs/utils/buildablehelperlibrary.cpp
@@ -101,6 +101,33 @@ QString BuildableHelperLibrary::qtVersionForQMake(const QString &qmakePath)
return QString();
}
+bool BuildableHelperLibrary::checkMinimumQtVersion(const QString &qtVersionString, int majorVersion, int minorVersion, int patchVersion)
+{
+ int major = -1;
+ int minor = -1;
+ int patch = -1;
+
+ // check format
+ QRegExp qtVersionRegex(QLatin1String("^\\d+\\.\\d+\\.\\d+$"));
+ if (!qtVersionRegex.exactMatch(qtVersionString))
+ return false;
+
+ QStringList parts = qtVersionString.split(QLatin1Char('.'));
+ major = parts.at(0).toInt();
+ minor = parts.at(1).toInt();
+ patch = parts.at(2).toInt();
+
+ if (major == majorVersion) {
+ if (minor == minorVersion) {
+ if (patch >= patchVersion)
+ return true;
+ } else if (minor > minorVersion)
+ return true;
+ }
+
+ return false;
+}
+
QStringList BuildableHelperLibrary::possibleQMakeCommands()
{
// On windows no one has renamed qmake, right?
diff --git a/src/libs/utils/buildablehelperlibrary.h b/src/libs/utils/buildablehelperlibrary.h
index e4d9eadbc6..fa8a85648c 100644
--- a/src/libs/utils/buildablehelperlibrary.h
+++ b/src/libs/utils/buildablehelperlibrary.h
@@ -19,6 +19,7 @@ public:
static QString findSystemQt(const Utils::Environment &env);
// return true if the qmake at qmakePath is qt4 (used by QtVersion)
static QString qtVersionForQMake(const QString &qmakePath);
+ static bool checkMinimumQtVersion(const QString &qtversionString, int majorVersion, int minorVersion, int patchVersion);
// returns something like qmake4, qmake, qmake-qt4 or whatever distributions have chosen (used by QtVersion)
static QStringList possibleQMakeCommands();
diff --git a/src/plugins/qt4projectmanager/qmldumptool.cpp b/src/plugins/qt4projectmanager/qmldumptool.cpp
index 210c0182fd..5d11f0dec9 100644
--- a/src/plugins/qt4projectmanager/qmldumptool.cpp
+++ b/src/plugins/qt4projectmanager/qmldumptool.cpp
@@ -50,10 +50,9 @@ static inline QStringList validBinaryFilenames()
<< QLatin1String("qmldump.app/Contents/MacOS/qmldump");
}
-bool QmlDumpTool::canBuild(const QString &installHeadersDir)
+bool QmlDumpTool::canBuild(QtVersion *qtVersion)
{
- QString qDeclHeader = installHeadersDir + QLatin1String("/QtDeclarative/private/qdeclarativemetatype_p.h");
- return QFile::exists(qDeclHeader);
+ return checkMinimumQtVersion(qtVersion->qtVersionString(), 4, 7, 0);
}
QString QmlDumpTool::toolForProject(ProjectExplorer::Project *project)
diff --git a/src/plugins/qt4projectmanager/qmldumptool.h b/src/plugins/qt4projectmanager/qmldumptool.h
index 4c54838b6f..dc99147807 100644
--- a/src/plugins/qt4projectmanager/qmldumptool.h
+++ b/src/plugins/qt4projectmanager/qmldumptool.h
@@ -42,11 +42,12 @@ namespace ProjectExplorer {
}
namespace Qt4ProjectManager {
+class QtVersion;
class QT4PROJECTMANAGER_EXPORT QmlDumpTool : public Utils::BuildableHelperLibrary
{
public:
- static bool canBuild(const QString &installHeadersDir);
+ static bool canBuild(QtVersion *qtVersion);
static QString toolForProject(ProjectExplorer::Project *project);
static QString toolByInstallData(const QString &qtInstallData);
static QStringList locationsByInstallData(const QString &qtInstallData);
diff --git a/src/plugins/qt4projectmanager/qmlobservertool.cpp b/src/plugins/qt4projectmanager/qmlobservertool.cpp
index 3a64da2ed7..7b556f2a31 100644
--- a/src/plugins/qt4projectmanager/qmlobservertool.cpp
+++ b/src/plugins/qt4projectmanager/qmlobservertool.cpp
@@ -32,6 +32,7 @@
#include "qt4project.h"
#include "qt4projectmanagerconstants.h"
#include <coreplugin/icore.h>
+#include <utils/qtcassert.h>
#include <projectexplorer/project.h>
#include <QDesktopServices>
@@ -50,10 +51,9 @@ static inline QStringList validBinaryFilenames()
<< QLatin1String("QMLObserver.app/Contents/MacOS/QMLObserver");
}
-bool QmlObserverTool::canBuild(const QString &installHeadersDir)
+bool QmlObserverTool::canBuild(QtVersion *qtVersion)
{
- QString qDeclHeader = installHeadersDir + QLatin1String("/QtDeclarative/private/qdeclarativemetatype_p.h");
- return QFile::exists(qDeclHeader);
+ return checkMinimumQtVersion(qtVersion->qtVersionString(), 4, 7, 1);
}
QString QmlObserverTool::toolForProject(ProjectExplorer::Project *project)
diff --git a/src/plugins/qt4projectmanager/qmlobservertool.h b/src/plugins/qt4projectmanager/qmlobservertool.h
index 625e625c76..89cbca6746 100644
--- a/src/plugins/qt4projectmanager/qmlobservertool.h
+++ b/src/plugins/qt4projectmanager/qmlobservertool.h
@@ -43,10 +43,12 @@ namespace ProjectExplorer {
namespace Qt4ProjectManager {
+class QtVersion;
+
class QT4PROJECTMANAGER_EXPORT QmlObserverTool : public Utils::BuildableHelperLibrary
{
public:
- static bool canBuild(const QString &installHeadersDir);
+ static bool canBuild(QtVersion *qtVersion);
static QString toolForProject(ProjectExplorer::Project *project);
static QString toolByInstallData(const QString &qtInstallData);
static QStringList locationsByInstallData(const QString &qtInstallData);
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index b6edfbfb14..283f52ba44 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -1770,7 +1770,7 @@ QString QtVersion::buildDebuggingHelperLibrary(QFutureInterface<void> &future)
}
future.setProgressValue(2);
- if (QmlDumpTool::canBuild(qtInstallHeaders)) {
+ if (QmlDumpTool::canBuild(this)) {
QString toolDirectory = QmlDumpTool::copy(qtInstallData, &output);
if (!toolDirectory.isEmpty()) {
output += QmlDumpTool::build(toolDirectory, tc->makeCommand(),
@@ -1782,7 +1782,7 @@ QString QtVersion::buildDebuggingHelperLibrary(QFutureInterface<void> &future)
}
future.setProgressValue(3);
- if (QmlObserverTool::canBuild(qtInstallHeaders)) {
+ if (QmlObserverTool::canBuild(this)) {
QString toolDirectory = QmlObserverTool::copy(qtInstallData, &output);
if (!toolDirectory.isEmpty()) {
output += QmlObserverTool::build(toolDirectory, tc->makeCommand(),