diff --git a/qtcreator.pro b/qtcreator.pro
index c4edd258a8f9056d1313f189a9b714c283172a77..c78f6bec4f483478c62ff1efdb31fadf264031a7 100644
--- a/qtcreator.pro
+++ b/qtcreator.pro
@@ -61,6 +61,13 @@ exists(src/shared/qbs/qbs.pro) {
     cache(QBS_APPS_DESTDIR)
     QBS_APPS_INSTALL_DIR = $${QTC_PREFIX}/bin
     cache(QBS_APPS_INSTALL_DIR)
+    QBS_LIBEXEC_DESTDIR = $${IDE_LIBEXEC_PATH}
+    cache(QBS_LIBEXEC_DESTDIR)
+    QBS_LIBEXEC_INSTALL_DIR = $${QTC_PREFIX}/bin
+    cache(QBS_LIBEXEC_INSTALL_DIR)
+    QBS_RELATIVE_LIBEXEC_PATH = $$relative_path($$QBS_LIBEXEC_DESTDIR, $$QBS_APPS_DESTDIR)
+    isEmpty(QBS_RELATIVE_LIBEXEC_PATH):QBS_RELATIVE_LIBEXEC_PATH = .
+    cache(QBS_RELATIVE_LIBEXEC_PATH)
     QBS_RELATIVE_PLUGINS_PATH = $$relative_path($$QBS_PLUGINS_BUILD_DIR, $$QBS_APPS_DESTDIR$$)
     cache(QBS_RELATIVE_PLUGINS_PATH)
     QBS_RELATIVE_SEARCH_PATH = $$relative_path($$QBS_RESOURCES_BUILD_DIR, $$QBS_APPS_DESTDIR)
diff --git a/qtcreator.qbs b/qtcreator.qbs
index f1297be6ee6dc2f4a59f8bb23aa0f6af324612cf..9bd047c8608b7288100b96e5a5ad9fd8f869b9ed 100644
--- a/qtcreator.qbs
+++ b/qtcreator.qbs
@@ -1,6 +1,7 @@
 import qbs 1.0
 
 Project {
+    name: "Qt Creator"
     minimumQbsVersion: "1.4"
     property bool withAutotests: qbs.buildVariant === "debug"
     property string ide_version_major: '3'
@@ -56,6 +57,7 @@ Project {
         "QT_NO_CAST_FROM_ASCII"
     ].concat(testsEnabled ? ["WITH_TESTS"] : [])
     qbsSearchPaths: "qbs"
+    property bool enableQbsJavaSupport: false
 
     references: [
         "src/src.qbs",
diff --git a/scripts/deployqt.py b/scripts/deployqt.py
index 8d2cd95220801c6d054177a9dd392dbe1bc4426e..1932a28134a96cc2ae99504aca633fa305e5e14a 100755
--- a/scripts/deployqt.py
+++ b/scripts/deployqt.py
@@ -281,7 +281,7 @@ def main():
     QT_INSTALL_QML = readQmakeVar(qmake_bin, 'QT_INSTALL_QML')
     QT_INSTALL_TRANSLATIONS = readQmakeVar(qmake_bin, 'QT_INSTALL_TRANSLATIONS')
 
-    plugins = ['accessible', 'codecs', 'designer', 'iconengines', 'imageformats', 'platformthemes', 'platforminputcontexts', 'platforms', 'printsupport', 'sqldrivers']
+    plugins = ['accessible', 'codecs', 'designer', 'iconengines', 'imageformats', 'platformthemes', 'platforminputcontexts', 'platforms', 'printsupport', 'sqldrivers', 'xcbglintegrations']
     imports = ['Qt', 'QtWebKit']
 
     if sys.platform.startswith('win'):
diff --git a/share/qtcreator/translations/qtcreator_fr.ts b/share/qtcreator/translations/qtcreator_fr.ts
index 780b9924adadc2ef326f61be13435b70153eb3c8..3469e6780ed33462b874a39bea089ddaad563299 100644
--- a/share/qtcreator/translations/qtcreator_fr.ts
+++ b/share/qtcreator/translations/qtcreator_fr.ts
@@ -53010,7 +53010,7 @@ Nous allons essayer de travailler avec cela mais vous pourrez rencontrer des pro
     </message>
     <message>
         <source>Find in This Directory...</source>
-        <translation>Trouvé dans le répertoire...</translation>
+        <translation>Trouver dans le répertoire...</translation>
     </message>
     <message>
         <source>Show in Explorer</source>
diff --git a/src/plugins/cmakeprojectmanager/generatorinfo.cpp b/src/plugins/cmakeprojectmanager/generatorinfo.cpp
index e3c5a38327bd8a4a7eae1ce247aa2c59f82accce..febd792e88b4b3819649d4e01cdd2693da0d48a0 100644
--- a/src/plugins/cmakeprojectmanager/generatorinfo.cpp
+++ b/src/plugins/cmakeprojectmanager/generatorinfo.cpp
@@ -72,7 +72,8 @@ QByteArray GeneratorInfo::generator() const
                 || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2008Flavor
                 || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2010Flavor
                 || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2012Flavor
-                || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor) {
+                || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor
+                || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor) {
             return "NMake Makefiles";
         } else if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) {
             if (Utils::HostOsInfo::isWindowsHost())
@@ -105,7 +106,8 @@ QString GeneratorInfo::displayName() const
                 || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2008Flavor
                 || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2010Flavor
                 || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2012Flavor
-                || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor) {
+                || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor
+                || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor) {
             return tr("NMake Generator (%1)").arg(m_kit->displayName());
         } else if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) {
             if (Utils::HostOsInfo::isWindowsHost())
@@ -139,7 +141,8 @@ QList<GeneratorInfo> GeneratorInfo::generatorInfosFor(ProjectExplorer::Kit *k, N
                     || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2008Flavor
                     || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2010Flavor
                     || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2012Flavor
-                    || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor) {
+                    || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor
+                    || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor) {
                 if (hasCodeBlocks)
                     results << GeneratorInfo(k);
             } else if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor) {
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index 52c9b952ff12dca02ef7e56ca5693fde0c0fc071..27fd6f793147ce5206dbc14f8fd743453263293b 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -761,6 +761,8 @@ static QByteArray msvcRunTime(const Abi::OSFlavor flavour)
         return "MSVCR110";
     case Abi::WindowsMsvc2013Flavor:
         return "MSVCR120";
+    case Abi::WindowsMsvc2015Flavor:
+        return "MSVCR140";
     default:
         break;
     }
diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp
index f00eb525f4ce1cb2fa79e8a15a34e18c4dde0cb8..b604a6bec9128113e4f1fbd1ffb7b23c0a93cdb1 100644
--- a/src/plugins/projectexplorer/abi.cpp
+++ b/src/plugins/projectexplorer/abi.cpp
@@ -168,6 +168,9 @@ static QList<Abi> parseCoffHeader(const QByteArray &data)
         case 12:
             flavor = Abi::WindowsMsvc2013Flavor;
             break;
+        case 14:
+            flavor = Abi::WindowsMsvc2015Flavor;
+            break;
         default: // Keep unknown flavor
             if (minorLinker != 0)
                 flavor = Abi::WindowsMSysFlavor; // MSVC seems to avoid using minor numbers
@@ -414,6 +417,8 @@ Abi::Abi(const QString &abiString) :
             m_osFlavor = WindowsMsvc2012Flavor;
         else if (abiParts.at(2) == QLatin1String("msvc2013") && m_os == WindowsOS)
             m_osFlavor = WindowsMsvc2013Flavor;
+        else if (abiParts.at(2) == QLatin1String("msvc2015") && m_os == WindowsOS)
+            m_osFlavor = WindowsMsvc2015Flavor;
         else if (abiParts.at(2) == QLatin1String("msys") && m_os == WindowsOS)
             m_osFlavor = WindowsMSysFlavor;
         else if (abiParts.at(2) == QLatin1String("ce") && m_os == WindowsOS)
@@ -674,6 +679,8 @@ QString Abi::toString(const OSFlavor &of)
         return QLatin1String("msvc2012");
     case Abi::WindowsMsvc2013Flavor:
         return QLatin1String("msvc2013");
+    case Abi::WindowsMsvc2015Flavor:
+        return QLatin1String("msvc2015");
     case Abi::WindowsMSysFlavor:
         return QLatin1String("msys");
     case Abi::WindowsCEFlavor:
@@ -724,8 +731,8 @@ QList<Abi::OSFlavor> Abi::flavorsForOs(const Abi::OS &o)
         return result << GenericUnixFlavor << SolarisUnixFlavor << UnknownFlavor;
     case WindowsOS:
         return result << WindowsMsvc2005Flavor << WindowsMsvc2008Flavor << WindowsMsvc2010Flavor
-                      << WindowsMsvc2012Flavor << WindowsMsvc2013Flavor << WindowsMSysFlavor
-                      << WindowsCEFlavor << UnknownFlavor;
+                      << WindowsMsvc2012Flavor << WindowsMsvc2013Flavor << WindowsMsvc2015Flavor
+                      << WindowsMSysFlavor << WindowsCEFlavor << UnknownFlavor;
     case VxWorks:
         return result << VxWorksFlavor << UnknownFlavor;
     case UnknownOS:
diff --git a/src/plugins/projectexplorer/abi.h b/src/plugins/projectexplorer/abi.h
index 4f6fbd81b79cf938d0ad2f910305a115cf857f07..c0ebe5f9f73dddc1d6da50a7832cdc0a38ae990f 100644
--- a/src/plugins/projectexplorer/abi.h
+++ b/src/plugins/projectexplorer/abi.h
@@ -90,6 +90,7 @@ public:
         WindowsMsvc2010Flavor,
         WindowsMsvc2012Flavor,
         WindowsMsvc2013Flavor,
+        WindowsMsvc2015Flavor,
         WindowsMSysFlavor,
         WindowsCEFlavor,
 
diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp
index 2b8cb72c58b08e4e07dc1cc87fb844ecdb35c1c8..fcdc9dd78b08c00433a7e68e41c8c2f0d270b913 100644
--- a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp
+++ b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp
@@ -101,7 +101,8 @@ ToolChain::CompilerFlags AbstractMsvcToolChain::compilerFlags(const QStringList
 
     if (m_abi.osFlavor() == Abi::WindowsMsvc2010Flavor
             || m_abi.osFlavor() == Abi::WindowsMsvc2012Flavor
-            || m_abi.osFlavor() == Abi::WindowsMsvc2013Flavor)
+            || m_abi.osFlavor() == Abi::WindowsMsvc2013Flavor
+            || m_abi.osFlavor() == Abi::WindowsMsvc2015Flavor)
         flags |= StandardCxx11;
 
     return flags;
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index 8a0354171200494e40af40f68d13d52295bf08ec..881a7dc9a52c94eb8118021adc2bfb9ac765dfb1 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -135,7 +135,9 @@ static Abi findAbiOfMsvc(MsvcToolChain::Type type, MsvcToolChain::Platform platf
         else if (version == QLatin1String("v7.0A") || version == QLatin1String("v7.1"))
             msvcVersionString = QLatin1String("10.0");
     }
-    if (msvcVersionString.startsWith(QLatin1String("12.")))
+    if (msvcVersionString.startsWith(QLatin1String("14.")))
+        flavor = Abi::WindowsMsvc2015Flavor;
+    else if (msvcVersionString.startsWith(QLatin1String("12.")))
         flavor = Abi::WindowsMsvc2013Flavor;
     else if (msvcVersionString.startsWith(QLatin1String("11.")))
         flavor = Abi::WindowsMsvc2012Flavor;
@@ -404,6 +406,14 @@ QList<Utils::FileName> MsvcToolChain::suggestedMkspecList() const
             << Utils::FileName::fromLatin1("winrt-x64-msvc2013")
             << Utils::FileName::fromLatin1("win32-msvc2012")
             << Utils::FileName::fromLatin1("win32-msvc2010");
+    case Abi::WindowsMsvc2015Flavor:
+        return QList<Utils::FileName>()
+            << Utils::FileName::fromLatin1("win32-msvc2015")
+            << Utils::FileName::fromLatin1("winphone-arm-msvc2015")
+            << Utils::FileName::fromLatin1("winphone-x86-msvc2015")
+            << Utils::FileName::fromLatin1("winrt-arm-msvc2015")
+            << Utils::FileName::fromLatin1("winrt-x86-msvc2015")
+            << Utils::FileName::fromLatin1("winrt-x64-msvc2015");
     default:
         break;
     }
diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
index f4f369e392bc05313e4b34ba0c48528c5ea7de9c..b2b544db28f4f22a315a33b9e7fdde9e195fa3ae 100644
--- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
+++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
@@ -255,7 +255,8 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor
     if (!m.isEmpty())
         data.insert(QLatin1String(CPP_COMPILERPATHBYLANGUAGE), m);
 
-    if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor) {
+    if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor
+            || targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor) {
         const QLatin1String flags("/FS");
         data.insert(QLatin1String(CPP_PLATFORMCFLAGS), flags);
         data.insert(QLatin1String(CPP_PLATFORMCXXFLAGS), flags);
diff --git a/src/plugins/qbsprojectmanager/qbsprojectparser.cpp b/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
index 33de434ef918dfe953b5c56e175061b2bf75f6a2..484bae73ca1ab8dd0b0a10372378ba07ae66b6a4 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
@@ -100,6 +100,7 @@ void QbsProjectParser::parse(const QVariantMap &config, const Environment &env,
     const qbs::Preferences prefs(QbsManager::settings(), profileName);
     params.setSearchPaths(prefs.searchPaths(resourcesBaseDirectory()));
     params.setPluginPaths(prefs.pluginPaths(pluginsBaseDirectory()));
+    params.setLibexecPath(libExecDirectory());
 
     m_qbsSetupProjectJob = m_project.setupProject(params, QbsManager::logSink(), 0);
 
@@ -163,6 +164,14 @@ QString QbsProjectParser::resourcesBaseDirectory() const
     return Core::ICore::resourcePath() + QLatin1String("/qbs");
 }
 
+QString QbsProjectParser::libExecDirectory() const
+{
+    const QString qbsInstallDir = QLatin1String(QBS_INSTALL_DIR);
+    if (!qbsInstallDir.isEmpty())
+        return qbsInstallDir + QLatin1String("/libexec");
+    return Core::ICore::libexecPath();
+}
+
 QString QbsProjectParser::pluginsBaseDirectory() const
 {
     const QString qbsInstallDir = QLatin1String(QBS_INSTALL_DIR);
diff --git a/src/plugins/qbsprojectmanager/qbsprojectparser.h b/src/plugins/qbsprojectmanager/qbsprojectparser.h
index 6d6319394a9674840764f8f1366664e453412a25..8603205213306eda9e91aa030c52bad34a76ff2b 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectparser.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectparser.h
@@ -69,6 +69,7 @@ private slots:
 private:
     QString pluginsBaseDirectory() const;
     QString resourcesBaseDirectory() const;
+    QString libExecDirectory() const;
 
     QString m_projectFilePath;
     qbs::SetupProjectJob *m_qbsSetupProjectJob;
diff --git a/src/plugins/valgrind/callgrind/callgrindcallmodel.cpp b/src/plugins/valgrind/callgrind/callgrindcallmodel.cpp
index 44d8e33530f599eb0c76790ece0a998aeaed8a6e..b743e679bca1823e1cb363a86b8e7f4838527df6 100644
--- a/src/plugins/valgrind/callgrind/callgrindcallmodel.cpp
+++ b/src/plugins/valgrind/callgrind/callgrindcallmodel.cpp
@@ -167,9 +167,8 @@ QModelIndex CallModel::index(int row, int column, const QModelIndex &parent) con
 
 QVariant CallModel::data(const QModelIndex &index, int role) const
 {
-    //QTC_ASSERT(index.isValid() && index.model() == this, return QVariant());
-    //QTC_ASSERT(index.column() >= 0 && index.column() < columnCount(index.parent()), return QVariant());
-    //QTC_ASSERT(index.row() >= 0 && index.row() < rowCount(index.parent()), return QVariant());
+    if (!index.isValid())
+        return QVariant();
 
     const FunctionCall *call = d->m_calls.at(index.row());
     if (role == Qt::DisplayRole || role == Qt::ToolTipRole) {
diff --git a/src/plugins/valgrind/callgrind/callgrinddatamodel.cpp b/src/plugins/valgrind/callgrind/callgrinddatamodel.cpp
index 003f3c640879fdf4efe505c8ea0f1e184848df9f..2ee0cb4a9ce661273ffc456e90865939e1adf2e1 100644
--- a/src/plugins/valgrind/callgrind/callgrinddatamodel.cpp
+++ b/src/plugins/valgrind/callgrind/callgrinddatamodel.cpp
@@ -214,9 +214,8 @@ static QString shortenTemplate(QString str)
 
 QVariant DataModel::data(const QModelIndex &index, int role) const
 {
-    //QTC_ASSERT(index.isValid() && index.model() == this, return QVariant());
-    //QTC_ASSERT(index.column() >= 0 && index.column() < columnCount(index.parent()), return QVariant());
-    //QTC_ASSERT(index.row() >= 0 && index.row() < rowCount(index.parent()), return QVariant());
+    if (!index.isValid())
+        return QVariant();
 
     const Function *func = d->m_functions.at(index.row());
 
diff --git a/src/shared/qbs b/src/shared/qbs
index 760dc4ef7571e780489adcd51ddb80beb000bd21..9309633cb821643be1366f6c87ec31b55e26be09 160000
--- a/src/shared/qbs
+++ b/src/shared/qbs
@@ -1 +1 @@
-Subproject commit 760dc4ef7571e780489adcd51ddb80beb000bd21
+Subproject commit 9309633cb821643be1366f6c87ec31b55e26be09
diff --git a/src/src.pro b/src/src.pro
index ea996ee839d0b3a4e359b18cbb70fb4fbdf517fd..ee25d3dbc5d44f233b6fbb8df64e31d9af89b8a7 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -7,6 +7,7 @@ QBS_DIRS = \
     qbscorelib \
     qbsqtprofilesetup \
     qbsapps \
+    qbslibexec \
     qbsplugins \
     qbsstatic
 
@@ -15,6 +16,8 @@ qbsqtprofilesetup.subdir = shared/qbs/src/lib/qtprofilesetup
 qbsqtprofilesetup.depends = qbscorelib
 qbsapps.subdir = shared/qbs/src/app
 qbsapps.depends = qbsqtprofilesetup
+qbslibexec.subdir = shared/qbs/src/libexec
+qbslibexec.depends = qbscorelib
 qbsplugins.subdir = shared/qbs/src/plugins
 qbsstatic.file = shared/qbs/static.pro
 
diff --git a/src/src.qbs b/src/src.qbs
index 48bf9fc2dff32a933310f49cc08b92f34de16e9a..bcb6f2a86516a4f74e445c1d1f55960a50e8a348 100644
--- a/src/src.qbs
+++ b/src/src.qbs
@@ -33,12 +33,16 @@ Project {
         property string resourcesInstallDir: project.ide_data_path + "/qbs"
         property string pluginsInstallDir: project.ide_plugin_path
         property string appInstallDir: project.ide_bin_path
+        property string libexecInstallDir: project.ide_libexec_path
+        property string relativeLibexecPath: FileInfo.relativePath(appInstallDir, libexecInstallDir)
         property string relativePluginsPath: FileInfo.relativePath(appInstallDir, pluginsInstallDir)
         property string relativeSearchPath: FileInfo.relativePath(appInstallDir,
                                                                   resourcesInstallDir)
+        property bool enableJava: project.enableQbsJavaSupport
 
         references: [
             qbsBaseDir + "/src/lib/libs.qbs",
+            qbsBaseDir + "/src/libexec/libexec.qbs",
             qbsBaseDir + "/src/plugins/plugins.qbs",
             qbsBaseDir + "/share/share.qbs",
             qbsBaseDir + "/src/app/apps.qbs",
diff --git a/src/tools/sdktool/addtoolchainoperation.cpp b/src/tools/sdktool/addtoolchainoperation.cpp
index dd5e658a77e369c02bede68c8c18ed18275839e0..3a4ce1513e857ccfce5b18c03e48c97093b9f23c 100644
--- a/src/tools/sdktool/addtoolchainoperation.cpp
+++ b/src/tools/sdktool/addtoolchainoperation.cpp
@@ -281,6 +281,8 @@ QVariantMap AddToolChainOperation::initializeToolChains()
 bool AddToolChainOperation::exists(const QVariantMap &map, const QString &id)
 {
     QStringList valueKeys = FindValueOperation::findValue(map, id);
+    // support old settings using QByteArray for id's
+    valueKeys.append(FindValueOperation::findValue(map, id.toUtf8()));
 
     foreach (const QString &k, valueKeys) {
         if (k.endsWith(QString(QLatin1Char('/')) + QLatin1String(ID))) {
diff --git a/tests/system/shared/classes.py b/tests/system/shared/classes.py
index de02b8e5d35cf93cb70df55bf7a4d41b819dde8e..7e8830d0902ac7b2c8e8c9ad14112c3abf1af27d 100644
--- a/tests/system/shared/classes.py
+++ b/tests/system/shared/classes.py
@@ -32,13 +32,11 @@ import operator
 
 # for easier re-usage (because Python hasn't an enum type)
 class Targets:
-    ALL_TARGETS = map(lambda x: 2 ** x , range(9))
+    ALL_TARGETS = map(lambda x: 2 ** x , range(7))
 
     (DESKTOP_474_GCC,
      DESKTOP_480_DEFAULT,
      SIMULATOR,
-     MAEMO5,
-     HARMATTAN,
      EMBEDDED_LINUX,
      DESKTOP_521_DEFAULT,
      DESKTOP_531_DEFAULT,
@@ -46,8 +44,7 @@ class Targets:
 
     @staticmethod
     def desktopTargetClasses():
-        desktopTargets = (sum(Targets.ALL_TARGETS) & ~Targets.SIMULATOR & ~Targets.MAEMO5
-                          & ~Targets.HARMATTAN & ~Targets.EMBEDDED_LINUX)
+        desktopTargets = (sum(Targets.ALL_TARGETS) & ~Targets.SIMULATOR & ~Targets.EMBEDDED_LINUX)
         if platform.system() == 'Darwin':
             desktopTargets &= ~Targets.DESKTOP_541_GCC
         return desktopTargets
@@ -61,12 +58,8 @@ class Targets:
                 return "Desktop 480 MSVC2010"
             else:
                 return "Desktop 480 GCC"
-        elif target == Targets.MAEMO5:
-            return "Fremantle"
         elif target == Targets.SIMULATOR:
             return "Qt Simulator"
-        elif target == Targets.HARMATTAN:
-            return "Harmattan"
         elif target == Targets.EMBEDDED_LINUX:
             return "Embedded Linux"
         elif target == Targets.DESKTOP_521_DEFAULT:
diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py
index c38531afda6cb7d6e86a0a57b45c1a77ff623218..d7328a3781f6eb5debcf46dccd1181666fb06aea 100644
--- a/tests/system/shared/project.py
+++ b/tests/system/shared/project.py
@@ -394,9 +394,6 @@ def __chooseTargets__(targets=Targets.DESKTOP_474_GCC, availableTargets=None):
             available.remove(Targets.EMBEDDED_LINUX)
         elif platform.system() == 'Darwin':
             available.remove(Targets.DESKTOP_541_GCC)
-    for target in filter(lambda x: x in available,
-                         (Targets.MAEMO5, Targets.HARMATTAN)):
-        available.remove(target)
     checkedTargets = []
     for current in available:
         mustCheck = targets & current == current
@@ -624,14 +621,9 @@ def __getSupportedPlatforms__(text, templateName, getAsStrings=False):
             result.extend([Targets.DESKTOP_521_DEFAULT, Targets.DESKTOP_531_DEFAULT])
             if platform.system() != 'Darwin':
                 result.append(Targets.DESKTOP_541_GCC)
-        if 'MeeGo/Harmattan' in supports:
-            result.append(Targets.HARMATTAN)
-        if 'Maemo/Fremantle' in supports:
-            result.append(Targets.MAEMO5)
         if not ("BlackBerry" in templateName or re.search("custom Qt Creator plugin", text)) and (version == None or version < "5.0"):
             result.append(Targets.SIMULATOR)
     elif 'Platform independent' in text:
-        # MAEMO5 and HARMATTAN could be wrong here - depends on having Madde plugin enabled or not
         result = list(Targets.ALL_TARGETS)
         result.remove(Targets.EMBEDDED_LINUX)
         if platform.system() == 'Darwin':
diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py
index e2e2535bbac30154dde04c7a4f77375de49fcdaa..08e36005031424d9c2f0c640828e41654a10ee3c 100644
--- a/tests/system/shared/utils.py
+++ b/tests/system/shared/utils.py
@@ -380,20 +380,15 @@ def getConfiguredKits():
     iterateKits(True, True, __setQtVersionForKit__, kitsWithQtVersionName)
     # merge defined target names with their configured Qt versions and devices
     for kit, qtVersion in kitsWithQtVersionName.iteritems():
-        if kit in ('Fremantle', 'Harmattan') and qtVersion == 'None':
-            test.log("Found Kit '%s' with unassigned Qt version (disabled Madde plugin)" % kit)
+        if kit in ('Fremantle', 'Harmattan'):
+            test.verify(qtVersion == 'None',
+                        "The outdated kit '%s' should not have a Qt version" % kit)
         elif qtVersion in qtVersionNames:
             result[kit] = targetsQtVersions[qtVersionNames.index(qtVersion)].items()[0]
         else:
             test.fail("Qt version '%s' for kit '%s' can't be found in qtVersionNames."
                       % (qtVersion, kit))
     clickButton(waitForObject(":Options.Cancel_QPushButton"))
-    # adjust device name(s) to match getStringForTarget() - some differ from time to time
-    for targetName in result.keys():
-        targetInfo = result[targetName]
-        if targetInfo[0] == "Maemo":
-            result.update({targetName:
-                           (Targets.getStringForTarget(Targets.MAEMO5), targetInfo[1])})
     test.log("Configured kits: %s" % str(result))
     return result
 
diff --git a/tests/system/suite_general/tst_create_proj_wizard/test.py b/tests/system/suite_general/tst_create_proj_wizard/test.py
index 2570e519dce10c64732b0be25838ee5b4ff97d7b..8d0de10b226591cdf19fd2bdc865338ae3f9dfeb 100644
--- a/tests/system/suite_general/tst_create_proj_wizard/test.py
+++ b/tests/system/suite_general/tst_create_proj_wizard/test.py
@@ -49,10 +49,7 @@ def main():
     test.compare("Projects", str(projects.data()))
     comboBox = findObject(":New.comboBox_QComboBox")
     targets = zip(*kits.values())[0]
-    maddeTargets = Targets.getTargetsAsStrings([Targets.MAEMO5, Targets.HARMATTAN])
-    maddeInTargets = len(set(targets) & set(maddeTargets)) > 0
     test.verify(comboBox.enabled, "Verifying whether combobox is enabled.")
-    test.verify(not maddeInTargets, "Verify there are no leftovers of Madde")
     test.compare(comboBox.currentText, "Desktop Templates")
     selectFromCombo(comboBox, "All Templates")
     for category in [item.replace(".", "\\.") for item in dumpItems(catModel, projects)]:
@@ -84,11 +81,6 @@ def main():
                 if counter < len(quickCombinations) - 1:
                     displayedPlatforms = __createProject__(category, template)
             continue
-        try:
-            waitForObject("{name='mainQmlFileGroupBox' title='Main HTML File' type='QGroupBox' visible='1'}", 1000)
-            clickButton(waitForObject(":Next_QPushButton"))
-        except LookupError:
-            pass
         verifyKitCheckboxes(kits, displayedPlatforms)
         clickButton(waitForObject("{type='QPushButton' text='Cancel' visible='1'}"))
     invokeMenuItem("File", "Exit")