aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist/changes-4.12.4.md51
-rw-r--r--doc/qtcreator/images/qtcreator-mcu-options.pngbin14344 -> 11098 bytes
-rw-r--r--doc/qtcreator/src/mcu/creator-mcu-dev.qdoc77
-rw-r--r--share/qtcreator/debugger/lldbbridge.py34
-rw-r--r--src/libs/qmljs/qmljsmodelmanagerinterface.cpp5
-rw-r--r--src/plugins/cmakeprojectmanager/builddirparameters.cpp7
-rw-r--r--src/plugins/mcusupport/mcusupport_global.h2
-rw-r--r--src/plugins/mcusupport/mcusupportconstants.h2
-rw-r--r--src/plugins/mcusupport/mcusupportdevice.cpp2
-rw-r--r--src/plugins/mcusupport/mcusupportdevice.h2
-rw-r--r--src/plugins/mcusupport/mcusupportoptions.cpp32
-rw-r--r--src/plugins/mcusupport/mcusupportoptions.h14
-rw-r--r--src/plugins/mcusupport/mcusupportoptionspage.cpp4
-rw-r--r--src/plugins/mcusupport/mcusupportoptionspage.h4
-rw-r--r--src/plugins/mcusupport/mcusupportplugin.cpp2
-rw-r--r--src/plugins/mcusupport/mcusupportplugin.h2
-rw-r--r--src/plugins/mcusupport/mcusupportrunconfiguration.cpp2
-rw-r--r--src/plugins/mcusupport/mcusupportrunconfiguration.h2
-rw-r--r--src/plugins/mcusupport/mcusupportsdk.cpp86
-rw-r--r--src/plugins/mcusupport/mcusupportsdk.h4
-rwxr-xr-xtests/system/suite_HELP/tst_HELP02/test.py1
-rw-r--r--tests/system/suite_tools/tst_git_clone/test.py2
22 files changed, 226 insertions, 111 deletions
diff --git a/dist/changes-4.12.4.md b/dist/changes-4.12.4.md
new file mode 100644
index 0000000000..93775c8615
--- /dev/null
+++ b/dist/changes-4.12.4.md
@@ -0,0 +1,51 @@
+Qt Creator 4.12.4
+=================
+
+Qt Creator version 4.12.4 contains bug fixes.
+
+The most important changes are listed in this document. For a complete
+list of changes, see the Git log for the Qt Creator sources that
+you can check out from the public Git repository. For example:
+
+ git clone git://code.qt.io/qt-creator/qt-creator.git
+ git log --cherry-pick --pretty=oneline origin/v4.12.3..v4.12.4
+
+Editing
+-------
+
+* Fixed crash when searching in binary files (QTCREATORBUG-21473, QTCREATORBUG-23978)
+
+### QML
+
+* Fixed completion of signals from singletons (QTCREATORBUG-24124)
+* Fixed import scanning after code model reset (QTCREATORBUG-24082)
+
+Projects
+--------
+
+### CMake
+
+* Fixed search for `ninja` when it is installed with the online installer (QTCREATORBUG-24082)
+
+Platforms
+---------
+
+### iOS
+
+* Fixed C++ debugging on devices (QTCREATORBUG-23995)
+
+### MCU
+
+* Adapted to changes in Qt for MCU 1.3
+
+Credits for these changes go to:
+--------------------------------
+Alessandro Portale
+André Pönitz
+Christian Kamm
+Christian Stenger
+Eike Ziller
+Fawzi Mohamed
+Friedemann Kleint
+Robert Löhning
+Venugopal Shivashankar
diff --git a/doc/qtcreator/images/qtcreator-mcu-options.png b/doc/qtcreator/images/qtcreator-mcu-options.png
index 1ebe08f243..5d8758a8e1 100644
--- a/doc/qtcreator/images/qtcreator-mcu-options.png
+++ b/doc/qtcreator/images/qtcreator-mcu-options.png
Binary files differ
diff --git a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc
index 268dfde2b4..96fb05b697 100644
--- a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc
+++ b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc
@@ -49,9 +49,6 @@
For a list of Qt for MCU reference implementations, see the
\l{Qt for MCUs - Supported Target Platforms}{Qt for MCUs} documentation.
- You use the \l{Connecting Bare Metal Devices}{Bare metal plugin} to connect
- to a debug server provider for debugging on MCUs.
-
\section1 Requirements
To use \QC to develop QML applications for MCUs, you need the following:
@@ -61,33 +58,40 @@
\li The Bare Metal plugin
\li \l{https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm}
{GNU ARM Embedded Toolchain}
- \li The hardware-specific requirements vary depending on the hardware platform you are developing for.
- For more information see:
- \list
- \li \l{Getting Started on NXP}
- \li \l{Getting Started on STM}
- \li \l{Getting Started on Renesas}
- \endlist
\endlist
+ The hardware-specific requirements vary depending on the hardware platform you are developing for.
+ For more information see:
+ \list
+ \li \l{Getting Started on NXP}
+ \li \l{Getting Started on STM}
+ \li \l{Getting Started on Renesas}
+ \endlist
+
\section1 Setting Up the Development Environment
You must download and install the required software and create connections
- between \QC and MCUs. For more information, see \l{Getting Started on Windows}.
+ between \QC and MCUs. The following subsections guide you through the
+ setup process.
- \section2 Enabling Bare Metal and MCU Plugins
+ \section2 MCU and Bare Metal Plugins
- To be able to develop for MCUs, you must enable the Bare Metal and MCU
- plugins:
+ To be able to develop applications for MCUs, you need the MCU plugin at least.
+ This plugin is enabled automatically by the installer when you install the
+ Qt for MCUs SDK.
+ The Bare Metal plugin is optional unless you want to configure the
+ debug server provider settings explicitly. For more information
+ see \l{Connecting Bare Metal Devices}.
+
+ To explicitly disable or enable any of these plugins, follow these
+ instructions:
\list 1
\li Select \uicontrol Help > \uicontrol {About Plugins} >
\uicontrol {Device Support} > \uicontrol {Bare Metal} and
\uicontrol {MCU Support} to enable the Bare Metal and MCU
plugins.
\li Select \uicontrol {Restart Now} to restart \QC and load the plugins.
- \li Create connections for debugging on the MCU board, as described in
- \l{Connecting Bare Metal Devices}.
\endlist
\section2 Specifying MCU Settings
@@ -103,27 +107,30 @@
to the directory where you installed Qt for MCUs SDK.
\li In the \uicontrol {Targets supported by the Qt for MCUs SDK}
field, select your MCU board.
- \li In the \uicontrol {GNU ARM Embedded Toolchain} field,
- specify the path to the directory where you installed the
- tool chain.
- \li For STM32 boards:
- \list
- \li In the \uicontrol {STM32Cube SDK} field, specify the
- path to the directory where you installed the SDK.
- \li In the \uicontrol {STM32Cube Programmer} field,
- specify the path to the directory where you
- installed the tool.
- \endlist
- \li For NXP boards:
+ \li In the \uicontrol Requirements section, ensure that the
+ platform-specific requirements are met. This varies depending
+ on the target chosen:
\list
- \li In the \uicontrol {NXP EVKB-IMXRT 1050 SDK} field,
- specify the path to the directory where you
- installed the SDK.
- \li In the \uicontrol {SEGGER JLink} field, specify the
- path to the directory where you installed the tool.
+ \li For STM32 targets:
+ \list
+ \li The \uicontrol {GNU ARM Embedded Toolchain} path.
+ \li The \uicontrol {STM32CubeProgrammer} install path.
+ \endlist
+ \li For NXP targets:
+ \list
+ \li The \uicontrol {GNU ARM Embedded Toolchain} path.
+ \li The \uicontrol {MCUXpresso IDE} install path.
+ \endlist
+ \li For Renesas targets:
+ \list
+ \li The \uicontrol {Green Hills Compiler} path.
+ \li The \uicontrol {Renesas Graphics Library} path.
+ \endlist
\endlist
- \li Select \uicontrol Apply to save the settings and to generate
- a MCU device and kit.
+ \li Select \uicontrol{Create Kit} to create a kit. If you have
+ an older kit for the selected target, remove it first using
+ \uicontrol{Remove Kit}.
+ \li Select \uicontrol Apply to save the settings.
\endlist
\section2 Adding MCU Devices
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 6020616da4..41d2ebf7f8 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -963,21 +963,25 @@ class Dumper(DumperBase):
elif (self.startMode_ == DebuggerStartMode.AttachToRemoteServer
or self.startMode_ == DebuggerStartMode.AttachToRemoteProcess):
-
- f = lldb.SBFileSpec()
- f.SetFilename(self.executable_)
-
- launchInfo = lldb.SBLaunchInfo(self.processArgs_)
- #launchInfo.SetWorkingDirectory(self.workingDirectory_)
- launchInfo.SetWorkingDirectory('/tmp')
- if self.platform_ == 'remote-android':
- launchInfo.SetWorkingDirectory('/data/local/tmp')
- launchInfo.SetEnvironmentEntries(self.environment_, False)
- launchInfo.SetExecutableFile(f, True)
-
- DumperBase.warn("TARGET: %s" % self.target)
- self.process = self.target.Launch(launchInfo, error)
- DumperBase.warn("PROCESS: %s" % self.process)
+ if self.platform_ == 'remote-ios':
+ self.process = self.target.ConnectRemote(
+ self.debugger.GetListener(),
+ self.remoteChannel_, None, error)
+ else:
+ f = lldb.SBFileSpec()
+ f.SetFilename(self.executable_)
+
+ launchInfo = lldb.SBLaunchInfo(self.processArgs_)
+ #launchInfo.SetWorkingDirectory(self.workingDirectory_)
+ launchInfo.SetWorkingDirectory('/tmp')
+ if self.platform_ == 'remote-android':
+ launchInfo.SetWorkingDirectory('/data/local/tmp')
+ launchInfo.SetEnvironmentEntries(self.environment_, False)
+ launchInfo.SetExecutableFile(f, True)
+
+ DumperBase.warn("TARGET: %s" % self.target)
+ self.process = self.target.Launch(launchInfo, error)
+ DumperBase.warn("PROCESS: %s" % self.process)
if not error.Success():
self.report(self.describeError(error))
diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp
index 9189ea7e3c..dc4c855c26 100644
--- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp
+++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp
@@ -1622,10 +1622,15 @@ void ModelManagerInterface::resetCodeModel()
// reset the snapshot
m_validSnapshot = Snapshot();
m_newestSnapshot = Snapshot();
+ m_scannedPaths.clear();
}
// start a reparse thread
updateSourceFiles(documents, false);
+
+ // rescan import directories
+ m_shouldScanImports = true;
+ updateImportPaths();
}
} // namespace QmlJS
diff --git a/src/plugins/cmakeprojectmanager/builddirparameters.cpp b/src/plugins/cmakeprojectmanager/builddirparameters.cpp
index 82b4b91d22..5424ef8b9a 100644
--- a/src/plugins/cmakeprojectmanager/builddirparameters.cpp
+++ b/src/plugins/cmakeprojectmanager/builddirparameters.cpp
@@ -77,8 +77,11 @@ BuildDirParameters::BuildDirParameters(CMakeBuildConfiguration *bc)
environment.set("ICECC", "no");
CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings();
- if (!settings->ninjaPath().isEmpty())
- environment.appendOrSetPath(settings->ninjaPath().toString());
+ if (!settings->ninjaPath().isEmpty()) {
+ const Utils::FilePath setting = settings->ninjaPath();
+ const Utils::FilePath path = setting.toFileInfo().isFile() ? setting.parentDir() : setting;
+ environment.appendOrSetPath(path.toString());
+ }
cmakeToolId = CMakeKitAspect::cmakeToolId(k);
}
diff --git a/src/plugins/mcusupport/mcusupport_global.h b/src/plugins/mcusupport/mcusupport_global.h
index 3039bf660b..a436f3cf0d 100644
--- a/src/plugins/mcusupport/mcusupport_global.h
+++ b/src/plugins/mcusupport/mcusupport_global.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
diff --git a/src/plugins/mcusupport/mcusupportconstants.h b/src/plugins/mcusupport/mcusupportconstants.h
index 3d223f4809..1b1aa7a135 100644
--- a/src/plugins/mcusupport/mcusupportconstants.h
+++ b/src/plugins/mcusupport/mcusupportconstants.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
diff --git a/src/plugins/mcusupport/mcusupportdevice.cpp b/src/plugins/mcusupport/mcusupportdevice.cpp
index fff6c30749..a6cb55e483 100644
--- a/src/plugins/mcusupport/mcusupportdevice.cpp
+++ b/src/plugins/mcusupport/mcusupportdevice.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
diff --git a/src/plugins/mcusupport/mcusupportdevice.h b/src/plugins/mcusupport/mcusupportdevice.h
index 6bbd764914..8aff134753 100644
--- a/src/plugins/mcusupport/mcusupportdevice.h
+++ b/src/plugins/mcusupport/mcusupportdevice.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp
index 6c2f24d5b0..7d58dbf466 100644
--- a/src/plugins/mcusupport/mcusupportoptions.cpp
+++ b/src/plugins/mcusupport/mcusupportoptions.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: BlackBerry (qt@blackberry.com)
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
@@ -61,7 +61,7 @@
namespace McuSupport {
namespace Internal {
-static const int KIT_VERSION = 5; // Bumps up whenever details in Kit creation change
+static const int KIT_VERSION = 6; // Bumps up whenever details in Kit creation change
static QString packagePathFromSettings(const QString &settingsKey,
QSettings::Scope scope = QSettings::UserScope,
@@ -95,6 +95,11 @@ QString McuPackage::label() const
return m_label;
}
+QString McuPackage::defaultPath() const
+{
+ return m_defaultPath;
+}
+
QString McuPackage::detectionPath() const
{
return m_detectionPath;
@@ -331,10 +336,12 @@ QVariant McuToolChainPackage::debuggerId() const
return debuggerId;
}
-McuTarget::McuTarget(const QString &vendor, const QString &platform, OS os,
+McuTarget::McuTarget(const QVersionNumber &qulVersion, const QString &vendor,
+ const QString &platform, OS os,
const QVector<McuPackage *> &packages,
const McuToolChainPackage *toolChainPackage)
- : m_vendor(vendor)
+ : m_qulVersion(qulVersion)
+ , m_vendor(vendor)
, m_qulPlatform(platform)
, m_os(os)
, m_packages(packages)
@@ -374,6 +381,11 @@ bool McuTarget::isValid() const
});
}
+QVersionNumber McuTarget::qulVersion() const
+{
+ return m_qulVersion;
+}
+
int McuTarget::colorDepth() const
{
return m_colorDepth;
@@ -450,9 +462,9 @@ void McuSupportOptions::deletePackagesAndTargets()
mcuTargets.clear();
}
-const QVersionNumber &McuSupportOptions::supportedQulVersion()
+const QVersionNumber &McuSupportOptions::minimalQulVersion()
{
- static const QVersionNumber v({1, 2});
+ static const QVersionNumber v({1, 3});
return v;
}
@@ -493,7 +505,7 @@ static void setKitProperties(const QString &kitName, ProjectExplorer::Kit *k,
k->setValue(KIT_MCUTARGET_VENDOR_KEY, mcuTarget->vendor());
k->setValue(KIT_MCUTARGET_MODEL_KEY, mcuTarget->qulPlatform());
k->setValue(KIT_MCUTARGET_COLORDEPTH_KEY, mcuTarget->colorDepth());
- k->setValue(KIT_MCUTARGET_SDKVERSION_KEY, McuSupportOptions::supportedQulVersion().toString());
+ k->setValue(KIT_MCUTARGET_SDKVERSION_KEY, mcuTarget->qulVersion().toString());
k->setValue(KIT_MCUTARGET_KITVERSION_KEY, KIT_VERSION);
k->setValue(KIT_MCUTARGET_OS_KEY, static_cast<int>(mcuTarget->os()));
k->setAutoDetected(true);
@@ -626,7 +638,7 @@ QString McuSupportOptions::kitName(const McuTarget *mcuTarget)
? "Desktop"
: mcuTarget->qulPlatform();
return QString::fromLatin1("Qt for MCUs %1 - %2%3%4")
- .arg(supportedQulVersion().toString(), targetName, os, colorDepth);
+ .arg(mcuTarget->qulVersion().toString(), targetName, os, colorDepth);
}
QList<ProjectExplorer::Kit *> McuSupportOptions::existingKits(const McuTarget *mcuTarget)
@@ -636,8 +648,6 @@ QList<ProjectExplorer::Kit *> McuSupportOptions::existingKits(const McuTarget *m
return Utils::filtered(KitManager::kits(), [mcuTarget](Kit *kit) {
return kit->isAutoDetected()
&& kit->value(KIT_MCUTARGET_KITVERSION_KEY) == KIT_VERSION
- && kit->value(KIT_MCUTARGET_SDKVERSION_KEY) ==
- McuSupportOptions::supportedQulVersion().toString()
&& (!mcuTarget || (
kit->value(KIT_MCUTARGET_VENDOR_KEY) == mcuTarget->vendor()
&& kit->value(KIT_MCUTARGET_MODEL_KEY) == mcuTarget->qulPlatform()
diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h
index 64a0dda1e2..f8a9ac52bf 100644
--- a/src/plugins/mcusupport/mcusupportoptions.h
+++ b/src/plugins/mcusupport/mcusupportoptions.h
@@ -1,7 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: BlackBerry (qt@blackberry.com)
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
@@ -64,6 +64,7 @@ public:
QString path() const;
QString label() const;
+ QString defaultPath() const;
QString detectionPath() const;
Status status() const;
void setDownloadUrl(const QString &url);
@@ -135,9 +136,11 @@ public:
FreeRTOS
};
- McuTarget(const QString &vendor, const QString &platform, OS os,
- const QVector<McuPackage *> &packages, const McuToolChainPackage *toolChainPackage);
+ McuTarget(const QVersionNumber &qulVersion, const QString &vendor, const QString &platform,
+ OS os, const QVector<McuPackage *> &packages,
+ const McuToolChainPackage *toolChainPackage);
+ QVersionNumber qulVersion() const;
QString vendor() const;
QVector<McuPackage *> packages() const;
const McuToolChainPackage *toolChainPackage() const;
@@ -148,6 +151,7 @@ public:
bool isValid() const;
private:
+ const QVersionNumber m_qulVersion;
const QString m_vendor;
const QString m_qulPlatform;
const OS m_os = OS::BareMetal;
@@ -181,7 +185,7 @@ public:
static void registerQchFiles();
static void registerExamples();
- static const QVersionNumber &supportedQulVersion();
+ static const QVersionNumber &minimalQulVersion();
private:
void deletePackagesAndTargets();
diff --git a/src/plugins/mcusupport/mcusupportoptionspage.cpp b/src/plugins/mcusupport/mcusupportoptionspage.cpp
index 216746d578..ba8905e72a 100644
--- a/src/plugins/mcusupport/mcusupportoptionspage.cpp
+++ b/src/plugins/mcusupport/mcusupportoptionspage.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: BlackBerry (qt@blackberry.com)
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
diff --git a/src/plugins/mcusupport/mcusupportoptionspage.h b/src/plugins/mcusupport/mcusupportoptionspage.h
index fdd5a1c586..c7b2db6150 100644
--- a/src/plugins/mcusupport/mcusupportoptionspage.h
+++ b/src/plugins/mcusupport/mcusupportoptionspage.h
@@ -1,7 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: BlackBerry (qt@blackberry.com)
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
diff --git a/src/plugins/mcusupport/mcusupportplugin.cpp b/src/plugins/mcusupport/mcusupportplugin.cpp
index ea2ea3b826..5355790a2b 100644
--- a/src/plugins/mcusupport/mcusupportplugin.cpp
+++ b/src/plugins/mcusupport/mcusupportplugin.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
diff --git a/src/plugins/mcusupport/mcusupportplugin.h b/src/plugins/mcusupport/mcusupportplugin.h
index 2f7c24e605..d3a1d8779a 100644
--- a/src/plugins/mcusupport/mcusupportplugin.h
+++ b/src/plugins/mcusupport/mcusupportplugin.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
diff --git a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp
index 584e21d4f7..63676469b8 100644
--- a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp
+++ b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
diff --git a/src/plugins/mcusupport/mcusupportrunconfiguration.h b/src/plugins/mcusupport/mcusupportrunconfiguration.h
index 3b0a138e0a..3561306457 100644
--- a/src/plugins/mcusupport/mcusupportrunconfiguration.h
+++ b/src/plugins/mcusupport/mcusupportrunconfiguration.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp
index 7ea24c2548..e72760151e 100644
--- a/src/plugins/mcusupport/mcusupportsdk.cpp
+++ b/src/plugins/mcusupport/mcusupportsdk.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: BlackBerry (qt@blackberry.com)
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
@@ -59,8 +59,8 @@ static QString findInProgramFiles(const QString &folder)
McuPackage *createQtForMCUsPackage()
{
auto result = new McuPackage(
- McuPackage::tr("Qt for MCUs %1 SDK").arg(
- McuSupportOptions::supportedQulVersion().toString()),
+ McuPackage::tr("Qt for MCUs %1+ SDK").arg(
+ McuSupportOptions::minimalQulVersion().toString()),
QDir::homePath(),
Utils::HostOsInfo::withExecutableSuffix("bin/qmltocpp"),
Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK);
@@ -202,15 +202,37 @@ static McuPackage *createMcuXpressoIdePackage()
return result;
}
-static McuPackage *createFreeRTOSSourcesPackage(const QString &envVar)
+static McuPackage *createBoardSdkPackage(const QString &envVar)
{
- const QString envVarPrefix = envVar.chopped(strlen("_FREERTOS_DIR"));
+ const QString envVarPrefix = envVar.chopped(strlen("_SDK_PATH"));
const QString defaultPath =
qEnvironmentVariableIsSet(envVar.toLatin1()) ?
qEnvironmentVariable(envVar.toLatin1()) : QDir::homePath();
auto result = new McuPackage(
+ QString::fromLatin1("MCU SDK (%1)").arg(envVarPrefix),
+ defaultPath,
+ {},
+ envVar);
+ result->setEnvironmentVariableName(envVar);
+ return result;
+}
+
+static McuPackage *createFreeRTOSSourcesPackage(const QString &envVar, const QString &boardSdkDir,
+ const QString &freeRTOSBoardSdkSubDir)
+{
+ const QString envVarPrefix = envVar.chopped(strlen("_FREERTOS_DIR"));
+
+ QString defaultPath;
+ if (qEnvironmentVariableIsSet(envVar.toLatin1()))
+ defaultPath = qEnvironmentVariable(envVar.toLatin1());
+ else if (!boardSdkDir.isEmpty() && !freeRTOSBoardSdkSubDir.isEmpty())
+ defaultPath = boardSdkDir + "/" + freeRTOSBoardSdkSubDir;
+ else
+ defaultPath = QDir::homePath();
+
+ auto result = new McuPackage(
QString::fromLatin1("FreeRTOS Sources (%1)").arg(envVarPrefix),
defaultPath,
{},
@@ -229,6 +251,7 @@ struct McuTargetDescription
QString toolchainId;
QString boardSdkEnvVar;
QString freeRTOSEnvVar;
+ QString freeRTOSBoardSdkSubDir;
};
static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescription> &descriptions,
@@ -246,13 +269,15 @@ static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescrip
{{"Renesas"}, createRGLPackage()}
};
+ QHash<QString, McuPackage *> boardSdkPkgs;
QHash<QString, McuPackage *> freeRTOSPkgs;
QVector<McuTarget *> mcuTargets;
for (const auto &desc : descriptions) {
McuToolChainPackage *tcPkg = tcPkgs.value(desc.toolchainId);
if (desc.toolchainId == "desktop") {
- auto mcuTarget = new McuTarget(desc.platformVendor, desc.platform,
+ auto mcuTarget = new McuTarget(QVersionNumber::fromString(desc.qulVersion),
+ desc.platformVendor, desc.platform,
McuTarget::OS::Desktop, {}, tcPkg);
mcuTargets.append(mcuTarget);
continue;
@@ -262,19 +287,32 @@ static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescrip
QVector<McuPackage*> required3rdPartyPkgs = {
vendorPkgs.value(desc.platformVendor), tcPkg
};
+ QString boardSdkDefaultPath;
+ if (!desc.boardSdkEnvVar.isEmpty()
+ && desc.boardSdkEnvVar != "RGL_DIR") { // Already included in vendorPkgs
+ if (!boardSdkPkgs.contains(desc.boardSdkEnvVar)) {
+ auto boardSdkPkg = createBoardSdkPackage(desc.boardSdkEnvVar);
+ boardSdkPkgs.insert(desc.boardSdkEnvVar, boardSdkPkg);
+ }
+ auto boardSdkPkg = boardSdkPkgs.value(desc.boardSdkEnvVar);
+ boardSdkDefaultPath = boardSdkPkg->defaultPath();
+ required3rdPartyPkgs.append(boardSdkPkg);
+ }
if (os == McuTarget::OS::FreeRTOS) {
if (desc.freeRTOSEnvVar.isEmpty()) {
continue;
} else {
if (!freeRTOSPkgs.contains(desc.freeRTOSEnvVar)) {
- auto freeRTOSPkg = createFreeRTOSSourcesPackage(desc.freeRTOSEnvVar);
- freeRTOSPkgs.insert(desc.freeRTOSEnvVar, freeRTOSPkg);
+ freeRTOSPkgs.insert(desc.freeRTOSEnvVar, createFreeRTOSSourcesPackage(
+ desc.freeRTOSEnvVar, boardSdkDefaultPath,
+ desc.freeRTOSBoardSdkSubDir));
}
required3rdPartyPkgs.append(freeRTOSPkgs.value(desc.freeRTOSEnvVar));
}
}
- auto mcuTarget = new McuTarget(desc.platformVendor, desc.platform, os,
+ auto mcuTarget = new McuTarget(QVersionNumber::fromString(desc.qulVersion),
+ desc.platformVendor, desc.platform, os,
required3rdPartyPkgs, tcPkg);
if (desc.colorDepths.count() > 1)
mcuTarget->setColorDepth(colorDepth);
@@ -286,6 +324,7 @@ static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescrip
packages->append(Utils::transform<QVector<McuPackage *> >(
tcPkgs.values(), [&](McuToolChainPackage *tcPkg) { return tcPkg; }));
packages->append(vendorPkgs.values().toVector());
+ packages->append(boardSdkPkgs.values().toVector());
packages->append(freeRTOSPkgs.values().toVector());
return mcuTargets;
@@ -297,24 +336,13 @@ static QFileInfoList targetDescriptionFiles(const Utils::FilePath &dir)
return kitsDir.entryInfoList();
}
-static QString freeRTOSEnvVarForPlatform(const QString &platform)
-{
- if (platform == "STM32F769I-DISCOVERY" || platform == "STM32F7508-DISCOVERY")
- return {"STM32F7_FREERTOS_DIR"};
- else if (platform == "MIMXRT1050-EVK")
- return {"IMXRT1050_FREERTOS_DIR"};
- else if (platform == "MIMXRT1064-EVK")
- return {"IMXRT1064_FREERTOS_DIR"};
-
- return {};
-}
-
static McuTargetDescription parseDescriptionJson(const QByteArray &data)
{
const QJsonDocument document = QJsonDocument::fromJson(data);
const QJsonObject target = document.object();
const QJsonObject toolchain = target.value("toolchain").toObject();
const QJsonObject boardSdk = target.value("boardSdk").toObject();
+ const QJsonObject freeRTOS = target.value("freeRTOS").toObject();
const QString platform = target.value("platform").toString();
@@ -328,8 +356,9 @@ static McuTargetDescription parseDescriptionJson(const QByteArray &data)
target.value("platformVendor").toString(),
colorDepthsVector,
toolchain.value("id").toString(),
- boardSdk.value("boardSdkEnvVar").toString(),
- freeRTOSEnvVarForPlatform(platform) // Workaround for UL-2514: Missing FreeRTOS information
+ boardSdk.value("envVar").toString(),
+ freeRTOS.value("envVar").toString(),
+ freeRTOS.value("boardSdkSubDir").toString()
};
}
@@ -343,16 +372,17 @@ void targetsAndPackages(const Utils::FilePath &dir, QVector<McuPackage *> *packa
if (!file.open(QFile::ReadOnly))
continue;
const McuTargetDescription desc = parseDescriptionJson(file.readAll());
- if (!McuSupportOptions::supportedQulVersion()
- .isPrefixOf(QVersionNumber::fromString(desc.qulVersion)))
+ if (QVersionNumber::fromString(desc.qulVersion) < McuSupportOptions::minimalQulVersion())
return; // Invalid version means invalid SDK installation.
descriptions.append(desc);
}
// Workaround for missing JSON file for Desktop target:
if (dir.pathAppended("/lib/QulQuickUltralite_QT_32bpp_Windows_Release.lib").exists()) {
- descriptions.prepend({McuSupportOptions::supportedQulVersion().toString(),
- {"Qt"}, {"Qt"}, {32}, {"desktop"}, {}, {}});
+ const QString qulVersion = descriptions.empty() ?
+ McuSupportOptions::minimalQulVersion().toString()
+ : descriptions.first().qulVersion;
+ descriptions.prepend({qulVersion, {"Qt"}, {"Qt"}, {32}, {"desktop"}, {}, {}, {}});
}
mcuTargets->append(targetsFromDescriptions(descriptions, packages));
diff --git a/src/plugins/mcusupport/mcusupportsdk.h b/src/plugins/mcusupport/mcusupportsdk.h
index 1cc2adadc7..d9111fc584 100644
--- a/src/plugins/mcusupport/mcusupportsdk.h
+++ b/src/plugins/mcusupport/mcusupportsdk.h
@@ -1,7 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: BlackBerry (qt@blackberry.com)
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
diff --git a/tests/system/suite_HELP/tst_HELP02/test.py b/tests/system/suite_HELP/tst_HELP02/test.py
index 2eb09773b1..1d776689be 100755
--- a/tests/system/suite_HELP/tst_HELP02/test.py
+++ b/tests/system/suite_HELP/tst_HELP02/test.py
@@ -78,6 +78,7 @@ def setKeyboardShortcutForAboutQtC():
modelIndex = waitForObject("{column='0' text='AboutQtCreator' type='QModelIndex' "
"container={column='0' text='QtCreator' type='QModelIndex' "
"container=%s}}" % objectMap.realName(treewidget))
+ treewidget.scrollTo(modelIndex)
mouseClick(modelIndex)
shortcutGB = "{title='Shortcut' type='QGroupBox' unnamed='1' visible='1'}"
record = waitForObject("{container=%s type='Core::Internal::ShortcutButton' unnamed='1' "
diff --git a/tests/system/suite_tools/tst_git_clone/test.py b/tests/system/suite_tools/tst_git_clone/test.py
index 476c1be365..35266deb8f 100644
--- a/tests/system/suite_tools/tst_git_clone/test.py
+++ b/tests/system/suite_tools/tst_git_clone/test.py
@@ -130,5 +130,5 @@ def main():
test.fail("The checked out project was not being opened.",
str(waitForObject(":Cannot Open Project_QTextEdit").plainText))
clickButton(waitForObject(":Cannot Open Project.OK_QPushButton"))
- verifyVersionControlView(targetDir, button == "Cancel immediately")
+ verifyVersionControlView(targetDir, button != ":Git Repository Clone.Finish_QPushButton")
invokeMenuItem("File", "Exit")