McuSupport: Organize namespaces, separate legacy constants

qtc9 will use new implementation for qtForMCUs 2.3 and newer.
Legacy implementation will be used for older versions.

Change-Id: Ibb2919f25d03d6445b8328e20316d4f88203a463
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Piotr Mućko
2022-06-17 17:15:17 +02:00
parent 7e17119e0a
commit cf147aa4b6
17 changed files with 240 additions and 237 deletions

View File

@@ -38,9 +38,7 @@ class FilePath;
namespace McuSupport::Internal {
namespace Sdk {
struct McuTargetDescription;
} //namespace Sdk
class McuAbstractTargetFactory
{
@@ -48,7 +46,7 @@ public:
using Ptr = std::unique_ptr<McuAbstractTargetFactory>;
virtual ~McuAbstractTargetFactory() = default;
virtual QPair<Targets, Packages> createTargets(const Sdk::McuTargetDescription &,
virtual QPair<Targets, Packages> createTargets(const McuTargetDescription &,
const Utils::FilePath &qtForMcuPath)
= 0;
using AdditionalPackages

View File

@@ -28,12 +28,12 @@
#include <QRegularExpression>
namespace McuSupport {
namespace McuSupport::Internal {
Internal::McuTarget::OS deduceOperatingSystem(const Internal::Sdk::McuTargetDescription &desc)
McuTarget::OS deduceOperatingSystem(const McuTargetDescription &desc)
{
using OS = Internal::McuTarget::OS;
using TargetType = Internal::Sdk::McuTargetDescription::TargetType;
using OS = McuTarget::OS;
using TargetType = McuTargetDescription::TargetType;
if (desc.platform.type == TargetType::Desktop)
return OS::Desktop;
else if (!desc.freeRTOS.envVar.isEmpty())
@@ -48,4 +48,4 @@ QString removeRtosSuffix(const QString &environmentVariable)
return result.replace(freeRtosSuffix, QString{});
}
} //namespace McuSupport
} // namespace McuSupport::Internal

View File

@@ -29,13 +29,11 @@
#include <QRegularExpression>
namespace McuSupport {
namespace McuSupport::Internal {
namespace Internal::Sdk {
struct McuTargetDescription;
}
Internal::McuTarget::OS deduceOperatingSystem(const Internal::Sdk::McuTargetDescription &);
McuTarget::OS deduceOperatingSystem(const McuTargetDescription &);
QString removeRtosSuffix(const QString &environmentVariable);
}; // namespace McuSupport
} // namespace McuSupport::Internal

View File

@@ -255,7 +255,7 @@ public:
if (!mcuTarget->toolChainPackage()->isDesktopToolchain()) {
const FilePath cMakeToolchainFile = mcuTarget->toolChainFilePackage()->path();
configMap.insert(Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
configMap.insert(Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
cMakeToolchainFile.toString().toUtf8());
if (!cMakeToolchainFile.exists()) {
printMessage(
@@ -365,7 +365,7 @@ QString generateKitNameFromTarget(const McuTarget *mcuTarget)
QVersionNumber kitQulVersion(const Kit *kit)
{
return QVersionNumber::fromString(
kit->value(McuSupport::Constants::KIT_MCUTARGET_SDKVERSION_KEY).toString());
kit->value(Constants::KIT_MCUTARGET_SDKVERSION_KEY).toString());
}
// Kit Information
@@ -449,7 +449,7 @@ QList<Kit *> outdatedKits()
// Maintenance
void createAutomaticKits(const SettingsHandler::Ptr &settingsHandler)
{
McuPackagePtr qtForMCUsPackage{Sdk::createQtForMCUsPackage(settingsHandler)};
McuPackagePtr qtForMCUsPackage{createQtForMCUsPackage(settingsHandler)};
const auto createKits = [qtForMCUsPackage, settingsHandler]() {
if (settingsHandler->isAutomaticKitCreationEnabled()) {
@@ -494,7 +494,7 @@ void createAutomaticKits(const SettingsHandler::Ptr &settingsHandler)
}
FilePath dir = qtForMCUsPackage->path();
McuSdkRepository repo{Sdk::targetsAndPackages(dir, settingsHandler)};
McuSdkRepository repo{targetsAndPackages(dir, settingsHandler)};
bool needsUpgrade = false;
for (const auto &target : qAsConst(repo.mcuTargets)) {
@@ -530,10 +530,10 @@ void upgradeKitsByCreatingNewPackage(const SettingsHandler::Ptr &settingsHandler
if (upgradeOption == UpgradeOption::Ignore)
return;
McuPackagePtr qtForMCUsPackage{Sdk::createQtForMCUsPackage(settingsHandler)};
McuPackagePtr qtForMCUsPackage{createQtForMCUsPackage(settingsHandler)};
auto dir = qtForMCUsPackage->path();
McuSdkRepository repo{Sdk::targetsAndPackages(dir, settingsHandler)};
McuSdkRepository repo{targetsAndPackages(dir, settingsHandler)};
for (const auto &target : qAsConst(repo.mcuTargets)) {
if (!matchingKits(target.get(), qtForMCUsPackage).empty())
@@ -572,10 +572,10 @@ void upgradeKitInPlace(ProjectExplorer::Kit *kit,
// update the corresponding cmake variables in all existing kits
void updatePathsInExistingKits(const SettingsHandler::Ptr &settingsHandler)
{
McuPackagePtr qtForMCUsPackage{Sdk::createQtForMCUsPackage(settingsHandler)};
McuPackagePtr qtForMCUsPackage{createQtForMCUsPackage(settingsHandler)};
FilePath dir = qtForMCUsPackage->path();
McuSdkRepository repo{Sdk::targetsAndPackages(dir, settingsHandler)};
McuSdkRepository repo{targetsAndPackages(dir, settingsHandler)};
for (const auto &target : qAsConst(repo.mcuTargets)) {
if (target->isValid()) {
for (auto *kit : kitsWithMismatchedDependencies(target.get())) {
@@ -657,11 +657,11 @@ void fixExistingKits(const SettingsHandler::Ptr &settingsHandler)
}
// Fix kit dependencies for known targets
McuPackagePtr qtForMCUsPackage{Sdk::createQtForMCUsPackage(settingsHandler)};
McuPackagePtr qtForMCUsPackage{createQtForMCUsPackage(settingsHandler)};
qtForMCUsPackage->updateStatus();
if (qtForMCUsPackage->isValidStatus()) {
FilePath dir = qtForMCUsPackage->path();
McuSdkRepository repo{Sdk::targetsAndPackages(dir, settingsHandler)};
McuSdkRepository repo{targetsAndPackages(dir, settingsHandler)};
for (const auto &target : qAsConst(repo.mcuTargets))
for (auto kit : existingKits(target.get())) {
if (McuDependenciesKitAspect::dependencies(kit).isEmpty()) {

View File

@@ -25,11 +25,14 @@
#pragma once
namespace McuSupport::Constants {
namespace McuSupport::Internal::Legacy::Constants {
const char QT_FOR_MCUS_SDK_PACKAGE_VALIDATION_PATH[] = "bin/qmltocpp";
const char QUL_TOOLCHAIN_CMAKE_DIR[] = "lib/cmake/Qul/toolchain/";
const char QUL_ENV_VAR[] = "Qul_ROOT";
const char BOARD_SDK_CMAKE_VAR[] = "QUL_BOARD_SDK_DIR";
const char SETTINGS_KEY_FREERTOS_PREFIX[]{"FreeRTOSSourcePackage_"};
const char TOOLCHAIN_DIR_CMAKE_VARIABLE[]{"QUL_TARGET_TOOLCHAIN_DIR"};
const char TOOLCHAIN_FILE_CMAKE_VARIABLE[]{"CMAKE_TOOLCHAIN_FILE"};
} // namespace McuSupport::Constants
} // namespace McuSupport::Internal::Legacy::Constants

View File

@@ -25,8 +25,7 @@
#pragma once
namespace McuSupport {
namespace Constants {
namespace McuSupport::Internal::Constants {
const char DEVICE_TYPE[]{"McuSupport.DeviceType"};
const char DEVICE_ID[]{"McuSupport.Device"};
@@ -43,12 +42,7 @@ const char KIT_MCUTARGET_TOOLCHAIN_KEY[]{"McuSupport.McuTargetToolchain"};
const char SETTINGS_GROUP[]{"McuSupport"};
const char SETTINGS_KEY_PACKAGE_PREFIX[]{"Package_"};
const char SETTINGS_KEY_FREERTOS_PREFIX[]{"FreeRTOSSourcePackage_"};
const char SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK[]{"QtForMCUsSdk"}; // Key known by SDK installer
const char SETTINGS_KEY_AUTOMATIC_KIT_CREATION[]{"AutomaticKitCreation"};
const char TOOLCHAIN_DIR_CMAKE_VARIABLE[]{"QUL_TARGET_TOOLCHAIN_DIR"};
const char TOOLCHAIN_FILE_CMAKE_VARIABLE[]{"CMAKE_TOOLCHAIN_FILE"};
} // namespace Constants
} // namespace McuSupport
} // namespace McuSupport::Internal::Constants

View File

@@ -27,6 +27,7 @@
#include "mcukitinformation.h"
#include "mcukitmanager.h"
#include "mculegacyconstants.h"
#include "mcupackage.h"
#include "mcusupportconstants.h"
#include "mcusupportplugin.h"
@@ -46,14 +47,13 @@
#include <QMessageBox>
#include <QPushButton>
using namespace ProjectExplorer;
using namespace Utils;
namespace McuSupport::Internal {
McuSupportOptions::McuSupportOptions(const SettingsHandler::Ptr &settingsHandler, QObject *parent)
: QObject(parent)
, qtForMCUsSdkPackage(Sdk::createQtForMCUsPackage(settingsHandler))
, qtForMCUsSdkPackage(createQtForMCUsPackage(settingsHandler))
, settingsHandler(settingsHandler)
{
connect(qtForMCUsSdkPackage.get(),
@@ -122,7 +122,7 @@ void McuSupportOptions::setQulDir(const FilePath &dir)
{
qtForMCUsSdkPackage->updateStatus();
if (qtForMCUsSdkPackage->isValidStatus())
sdkRepository = Sdk::targetsAndPackages(dir, settingsHandler);
sdkRepository = targetsAndPackages(dir, settingsHandler);
else
sdkRepository = McuSdkRepository{};
for (const auto &package : qAsConst(sdkRepository.packages))

View File

@@ -212,11 +212,11 @@ void McuSupportOptionsWidget::updateStatus()
m_mcuTargetsInfoLabel->setType(Utils::InfoLabel::NotOk);
const Utils::FilePath sdkPath = m_options.qtForMCUsSdkPackage->basePath();
QString deprecationMessage;
if (Sdk::checkDeprecatedSdkError(sdkPath, deprecationMessage))
if (checkDeprecatedSdkError(sdkPath, deprecationMessage))
m_mcuTargetsInfoLabel->setText(deprecationMessage);
else
m_mcuTargetsInfoLabel->setText(tr("No valid kit descriptions found at %1.")
.arg(Sdk::kitsPath(sdkPath).toUserOutput()));
.arg(kitsPath(sdkPath).toUserOutput()));
}
}

View File

@@ -57,14 +57,27 @@
using namespace Utils;
namespace McuSupport {
namespace Internal {
namespace Sdk {
namespace McuSupport::Internal {
namespace {
const char CMAKE_ENTRIES[]{"cmakeEntries"};
} // namespace
McuPackagePtr createQtForMCUsPackage(const SettingsHandler::Ptr &settingsHandler)
{
return McuPackagePtr{
new McuPackage(settingsHandler,
McuPackage::tr("Qt for MCUs SDK"),
FileUtils::homePath(), // defaultPath
FilePath(Legacy::Constants::QT_FOR_MCUS_SDK_PACKAGE_VALIDATION_PATH)
.withExecutableSuffix(), // detectionPath
Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK, // settingsKey
QStringLiteral("Qul_ROOT"), // cmakeVarName
QStringLiteral("Qul_DIR"))}; // envVarName
}
namespace Legacy {
static FilePath findInProgramFiles(const QString &folder)
{
for (auto envVar : {"ProgramFiles", "ProgramFiles(x86)", "ProgramW6432"}) {
@@ -77,19 +90,6 @@ static FilePath findInProgramFiles(const QString &folder)
return {};
}
McuPackagePtr createQtForMCUsPackage(const SettingsHandler::Ptr &settingsHandler)
{
return McuPackagePtr{
new McuPackage(settingsHandler,
McuPackage::tr("Qt for MCUs SDK"),
FileUtils::homePath(), // defaultPath
FilePath(Constants::QT_FOR_MCUS_SDK_PACKAGE_VALIDATION_PATH)
.withExecutableSuffix(), // detectionPath
Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK, // settingsKey
QStringLiteral("Qul_ROOT"), // cmakeVarName
QStringLiteral("Qul_DIR"))}; // envVarName
}
static McuPackageVersionDetector *generatePackageVersionDetector(const QString &envVar)
{
if (envVar.startsWith("EVK"))
@@ -458,35 +458,38 @@ static McuPackagePtr createRenesasProgrammerPackage(const SettingsHandler::Ptr &
envVar)}; // env var
}
} // namespace Legacy
static McuAbstractTargetFactory::Ptr createFactory(bool isLegacy,
const SettingsHandler::Ptr &settingsHandler,
const FilePath &qtMcuSdkPath)
{
McuAbstractTargetFactory::Ptr result;
if (isLegacy) {
static const QHash<QString, ToolchainCompilerCreator> toolchainCreators = {
static const QHash<QString, Legacy::ToolchainCompilerCreator> toolchainCreators = {
{{"armgcc"}, {[settingsHandler](const QStringList &versions) {
return createArmGccToolchainPackage(settingsHandler, versions);
return Legacy::createArmGccToolchainPackage(settingsHandler, versions);
}}},
{{"greenhills"},
[settingsHandler](const QStringList &versions) {
return createGhsToolchainPackage(settingsHandler, versions);
return Legacy::createGhsToolchainPackage(settingsHandler, versions);
}},
{{"iar"}, {[settingsHandler](const QStringList &versions) {
return createIarToolChainPackage(settingsHandler, versions);
return Legacy::createIarToolChainPackage(settingsHandler, versions);
}}},
{{"msvc"}, {[settingsHandler](const QStringList &versions) {
return createMsvcToolChainPackage(settingsHandler, versions);
return Legacy::createMsvcToolChainPackage(settingsHandler, versions);
}}},
{{"gcc"}, {[settingsHandler](const QStringList &versions) {
return createGccToolChainPackage(settingsHandler, versions);
return Legacy::createGccToolChainPackage(settingsHandler, versions);
}}},
{{"arm-greenhills"}, {[settingsHandler](const QStringList &versions) {
return createGhsArmToolchainPackage(settingsHandler, versions);
return Legacy::createGhsArmToolchainPackage(settingsHandler, versions);
}}},
};
const FilePath toolchainFilePrefix = qtMcuSdkPath / Constants::QUL_TOOLCHAIN_CMAKE_DIR;
const FilePath toolchainFilePrefix = qtMcuSdkPath
/ Legacy::Constants::QUL_TOOLCHAIN_CMAKE_DIR;
static const QHash<QString, McuPackagePtr> toolchainFiles = {
{{"armgcc"},
McuPackagePtr{new McuPackage{settingsHandler,
@@ -494,7 +497,7 @@ static McuAbstractTargetFactory::Ptr createFactory(bool isLegacy,
toolchainFilePrefix / "armgcc.cmake",
{},
{},
Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
{}}}},
{{"iar"},
@@ -503,7 +506,7 @@ static McuAbstractTargetFactory::Ptr createFactory(bool isLegacy,
toolchainFilePrefix / "iar.cmake",
{},
{},
Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
{}}}},
{"greenhills",
McuPackagePtr{new McuPackage{settingsHandler,
@@ -511,7 +514,7 @@ static McuAbstractTargetFactory::Ptr createFactory(bool isLegacy,
toolchainFilePrefix / "ghs.cmake",
{},
{},
Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
{}}}},
{"arm-greenhills",
McuPackagePtr{new McuPackage{settingsHandler,
@@ -519,23 +522,23 @@ static McuAbstractTargetFactory::Ptr createFactory(bool isLegacy,
toolchainFilePrefix / "arm-ghs.cmake",
{},
{},
Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE,
{}}}},
};
// Note: the vendor name (the key of the hash) is case-sensitive. It has to match the "platformVendor" key in the
// json file.
static const QHash<QString, McuPackagePtr> vendorPkgs = {
{{"ST"}, McuPackagePtr{createStm32CubeProgrammerPackage(settingsHandler)}},
{{"NXP"}, McuPackagePtr{createMcuXpressoIdePackage(settingsHandler)}},
{{"CYPRESS"}, McuPackagePtr{createCypressProgrammerPackage(settingsHandler)}},
{{"RENESAS"}, McuPackagePtr{createRenesasProgrammerPackage(settingsHandler)}},
{{"ST"}, McuPackagePtr{Legacy::createStm32CubeProgrammerPackage(settingsHandler)}},
{{"NXP"}, McuPackagePtr{Legacy::createMcuXpressoIdePackage(settingsHandler)}},
{{"CYPRESS"}, McuPackagePtr{Legacy::createCypressProgrammerPackage(settingsHandler)}},
{{"RENESAS"}, McuPackagePtr{Legacy::createRenesasProgrammerPackage(settingsHandler)}},
};
result = std::make_unique<McuTargetFactoryLegacy>(toolchainCreators,
toolchainFiles,
vendorPkgs,
settingsHandler);
result = std::make_unique<Legacy::McuTargetFactory>(toolchainCreators,
toolchainFiles,
vendorPkgs,
settingsHandler);
} else {
result = std::make_unique<McuTargetFactory>(settingsHandler);
}
@@ -779,6 +782,4 @@ McuSdkRepository targetsAndPackages(const Utils::FilePath &qtForMCUSdkPath,
return repo;
}
} // namespace Sdk
} // namespace Internal
} // namespace McuSupport
} // namespace McuSupport::Internal

View File

@@ -28,8 +28,6 @@
#include "mcusupport_global.h"
#include "settingshandler.h"
#include <utils/filepath.h>
namespace Utils {
class FilePath;
} // namespace Utils
@@ -43,9 +41,6 @@ class McuPackage;
class McuSdkRepository;
class McuTarget;
class McuToolChainPackage;
namespace Sdk {
struct McuTargetDescription;
McuPackagePtr createQtForMCUsPackage(const SettingsHandler::Ptr &);
@@ -62,6 +57,8 @@ McuSdkRepository targetsFromDescriptions(const QList<McuTargetDescription> &,
Utils::FilePath kitsPath(const Utils::FilePath &dir);
namespace Legacy {
McuPackagePtr createUnsupportedToolChainFilePackage(const SettingsHandler::Ptr &,
const Utils::FilePath &qtMcuSdkPath);
McuToolChainPackagePtr createUnsupportedToolChainPackage(const SettingsHandler::Ptr &);
@@ -80,5 +77,5 @@ McuPackagePtr createFreeRTOSSourcesPackage(const SettingsHandler::Ptr &settingsH
const Utils::FilePath &boardSdkDir,
const Utils::FilePath &freeRTOSBoardSdkSubDir);
} // namespace Sdk
} // namespace Legacy
} // namespace McuSupport::Internal

View File

@@ -31,7 +31,7 @@
#include <QVector>
#include <QVersionNumber>
namespace McuSupport::Internal::Sdk {
namespace McuSupport::Internal {
struct PackageDescription
{
@@ -76,6 +76,6 @@ struct McuTargetDescription
} freeRTOS;
};
} // namespace McuSupport::Internal::Sdk
} // namespace McuSupport::Internal
Q_DECLARE_METATYPE(McuSupport::Internal::Sdk::McuTargetDescription)
Q_DECLARE_METATYPE(McuSupport::Internal::McuTargetDescription)

View File

@@ -38,9 +38,6 @@
namespace McuSupport::Internal {
using Sdk::McuTargetDescription;
using Sdk::PackageDescription;
bool isToolchainDescriptionValid(const McuTargetDescription::Toolchain &t)
{
return !t.id.isEmpty() && !t.compiler.cmakeVar.isEmpty() && !t.file.cmakeVar.isEmpty();

View File

@@ -31,19 +31,17 @@
namespace McuSupport::Internal {
namespace Sdk {
struct PackageDescription;
} // namespace Sdk
class McuTargetFactory : public McuAbstractTargetFactory
{
public:
explicit McuTargetFactory(const SettingsHandler::Ptr &);
QPair<Targets, Packages> createTargets(const Sdk::McuTargetDescription &,
QPair<Targets, Packages> createTargets(const McuTargetDescription &,
const Utils::FilePath &qtForMCUSdkPath) override;
Packages createPackages(const Sdk::McuTargetDescription &);
McuToolChainPackage *createToolchain(const Sdk::McuTargetDescription::Toolchain &);
McuPackagePtr createPackage(const Sdk::PackageDescription &);
Packages createPackages(const McuTargetDescription &);
McuToolChainPackage *createToolchain(const McuTargetDescription::Toolchain &);
McuPackagePtr createPackage(const PackageDescription &);
private:
SettingsHandler::Ptr settingsHandler;

View File

@@ -34,21 +34,20 @@
#include <utils/fileutils.h>
#include <QVersionNumber>
namespace McuSupport::Internal {
namespace McuSupport::Internal::Legacy {
McuTargetFactoryLegacy::McuTargetFactoryLegacy(
const QHash<QString, ToolchainCompilerCreator> &toolchainCreators,
const QHash<QString, McuPackagePtr> &toolchainFiles,
const QHash<QString, McuPackagePtr> &vendorPkgs,
const SettingsHandler::Ptr &settingsHandler)
McuTargetFactory::McuTargetFactory(const QHash<QString, ToolchainCompilerCreator> &toolchainCreators,
const QHash<QString, McuPackagePtr> &toolchainFiles,
const QHash<QString, McuPackagePtr> &vendorPkgs,
const SettingsHandler::Ptr &settingsHandler)
: toolchainCreators(toolchainCreators)
, toolchainFiles(toolchainFiles)
, vendorPkgs(vendorPkgs)
, settingsHandler(settingsHandler)
{}
QPair<Targets, Packages> McuTargetFactoryLegacy::createTargets(const Sdk::McuTargetDescription &desc,
const Utils::FilePath &qtForMcuPath)
QPair<Targets, Packages> McuTargetFactory::createTargets(const McuTargetDescription &desc,
const Utils::FilePath &qtForMcuPath)
{
QHash<QString, McuPackagePtr> boardSdkPkgs;
QHash<QString, McuPackagePtr> freeRTOSPkgs;
@@ -74,7 +73,7 @@ QPair<Targets, Packages> McuTargetFactoryLegacy::createTargets(const Sdk::McuTar
Utils::FilePath boardSdkDefaultPath;
if (!desc.boardSdk.envVar.isEmpty()) {
if (!boardSdkPkgs.contains(desc.boardSdk.envVar)) {
McuPackagePtr boardSdkPkg{createBoardSdkPackage(settingsHandler, desc)};
McuPackagePtr boardSdkPkg{Legacy::createBoardSdkPackage(settingsHandler, desc)};
boardSdkPkgs.insert(desc.boardSdk.envVar, boardSdkPkg);
}
McuPackagePtr boardSdkPkg{boardSdkPkgs.value(desc.boardSdk.envVar)};
@@ -88,10 +87,10 @@ QPair<Targets, Packages> McuTargetFactoryLegacy::createTargets(const Sdk::McuTar
freeRTOSPkgs
.insert(desc.freeRTOS.envVar,
McuPackagePtr{
Sdk::createFreeRTOSSourcesPackage(settingsHandler,
desc.freeRTOS.envVar,
boardSdkDefaultPath,
desc.freeRTOS.boardSdkSubDir)});
Legacy::createFreeRTOSSourcesPackage(settingsHandler,
desc.freeRTOS.envVar,
boardSdkDefaultPath,
desc.freeRTOS.boardSdkSubDir)});
}
required3rdPartyPkgs.insert(freeRTOSPkgs.value(desc.freeRTOS.envVar));
}
@@ -110,29 +109,29 @@ QPair<Targets, Packages> McuTargetFactoryLegacy::createTargets(const Sdk::McuTar
return {mcuTargets, packages};
}
McuAbstractTargetFactory::AdditionalPackages McuTargetFactoryLegacy::getAdditionalPackages() const
McuAbstractTargetFactory::AdditionalPackages McuTargetFactory::getAdditionalPackages() const
{
return {{}, vendorPkgs};
}
McuToolChainPackagePtr McuTargetFactoryLegacy::getToolchainCompiler(
const Sdk::McuTargetDescription::Toolchain &desc) const
McuToolChainPackagePtr McuTargetFactory::getToolchainCompiler(
const McuTargetDescription::Toolchain &desc) const
{
auto compilerCreator = toolchainCreators.value(desc.id, [this](const QStringList & /*versions*/) {
return McuToolChainPackagePtr{Sdk::createUnsupportedToolChainPackage(settingsHandler)};
return McuToolChainPackagePtr{Legacy::createUnsupportedToolChainPackage(settingsHandler)};
});
McuToolChainPackagePtr toolchainPackage = compilerCreator(desc.versions);
return toolchainPackage;
}
McuPackagePtr McuTargetFactoryLegacy::getToolchainFile(const Utils::FilePath &qtForMCUSdkPath,
const QString &toolchainName) const
McuPackagePtr McuTargetFactory::getToolchainFile(const Utils::FilePath &qtForMCUSdkPath,
const QString &toolchainName) const
{
if (McuPackagePtr toolchainFile = toolchainFiles.value(toolchainName); toolchainFile) {
return toolchainFile;
} else {
return McuPackagePtr{
Sdk::createUnsupportedToolChainFilePackage(settingsHandler, qtForMCUSdkPath)};
Legacy::createUnsupportedToolChainFilePackage(settingsHandler, qtForMCUSdkPath)};
}
}
} // namespace McuSupport::Internal
} // namespace McuSupport::Internal::Legacy

View File

@@ -37,21 +37,23 @@ namespace McuSupport::Internal {
class McuPackage;
namespace Legacy {
using ToolchainCompilerCreator = std::function<McuToolChainPackagePtr(const QStringList &version)>;
class McuTargetFactoryLegacy : public McuAbstractTargetFactory
class McuTargetFactory : public McuAbstractTargetFactory
{
public:
McuTargetFactoryLegacy(const QHash<QString, ToolchainCompilerCreator> &toolchainCreators,
const QHash<QString, McuPackagePtr> &toolchainFiles,
const QHash<QString, McuPackagePtr> &vendorPkgs,
const SettingsHandler::Ptr &);
McuTargetFactory(const QHash<QString, ToolchainCompilerCreator> &toolchainCreators,
const QHash<QString, McuPackagePtr> &toolchainFiles,
const QHash<QString, McuPackagePtr> &vendorPkgs,
const SettingsHandler::Ptr &);
QPair<Targets, Packages> createTargets(const Sdk::McuTargetDescription &,
QPair<Targets, Packages> createTargets(const McuTargetDescription &,
const Utils::FilePath &qtForMCUSdkPath) override;
AdditionalPackages getAdditionalPackages() const override;
McuToolChainPackagePtr getToolchainCompiler(const Sdk::McuTargetDescription::Toolchain &) const;
McuToolChainPackagePtr getToolchainCompiler(const McuTargetDescription::Toolchain &) const;
McuPackagePtr getToolchainFile(const Utils::FilePath &qtForMCUSdkPath,
const QString &toolchainName) const;
@@ -61,6 +63,7 @@ private:
const QHash<QString, McuPackagePtr> vendorPkgs;
SettingsHandler::Ptr settingsHandler;
}; // struct McuTargetFactoryLegacy
}; // struct McuTargetFactory
} // namespace Legacy
} // namespace McuSupport::Internal

View File

@@ -122,8 +122,11 @@ const QStringList jsonFiles{QString::fromUtf8(armgcc_nxp_1050_json),
const bool runLegacy{true};
const int colorDepth{32};
const Sdk::McuTargetDescription::Platform
platformDescription{id, "", "", {colorDepth}, Sdk::McuTargetDescription::TargetType::MCU};
const McuTargetDescription::Platform platformDescription{id,
"",
"",
{colorDepth},
McuTargetDescription::TargetType::MCU};
const Utils::Id cxxLanguageId{ProjectExplorer::Constants::CXX_LANGUAGE_ID};
} // namespace
@@ -149,7 +152,8 @@ void verifyIarToolchain(const McuToolChainPackagePtr &iarToolchainPackage)
ToolChainManager::instance()->registerToolChain(iarToolchain);
QVERIFY(iarToolchainPackage != nullptr);
QCOMPARE(iarToolchainPackage->cmakeVariableName(), Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
QCOMPARE(iarToolchainPackage->cmakeVariableName(),
Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
QCOMPARE(iarToolchainPackage->environmentVariableName(), iarEnvVar);
QCOMPARE(iarToolchainPackage->isDesktopToolchain(), false);
QCOMPARE(iarToolchainPackage->toolChainName(), iar);
@@ -172,7 +176,7 @@ void verifyArmGccToolchain(const McuToolChainPackagePtr &armGccPackage, const QS
ToolChainManager::instance()->registerToolChain(armToolchain);
QVERIFY(armGccPackage != nullptr);
QCOMPARE(armGccPackage->cmakeVariableName(), Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
QCOMPARE(armGccPackage->cmakeVariableName(), Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
QCOMPARE(armGccPackage->environmentVariableName(), armGccEnvVar);
QCOMPARE(armGccPackage->isDesktopToolchain(), false);
QCOMPARE(armGccPackage->toolChainName(), armGcc);
@@ -207,13 +211,14 @@ void verifyTargetToolchains(const Targets &targets,
const auto toolchainFile{target->toolChainFilePackage()};
QVERIFY(toolchainFile);
QCOMPARE(toolchainFile->cmakeVariableName(), Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE);
QCOMPARE(toolchainFile->cmakeVariableName(), Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE);
QCOMPARE(toolchainFile->settingsKey(), empty);
QCOMPARE(toolchainFile->path().toString(), toolchainFilePath);
const auto toolchainCompiler{target->toolChainPackage()};
QVERIFY(toolchainCompiler);
QCOMPARE(toolchainCompiler->cmakeVariableName(), Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
QCOMPARE(toolchainCompiler->cmakeVariableName(),
Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
QCOMPARE(toolchainCompiler->path().toString(), compilerPath);
QCOMPARE(toolchainCompiler->settingsKey(), compilerSetting);
QCOMPARE(toolchainCompiler->versions(), versions);
@@ -224,7 +229,7 @@ void verifyBoardSdk(const McuPackagePtr &boardSdk,
const QStringList &versions)
{
QVERIFY(boardSdk);
QCOMPARE(boardSdk->cmakeVariableName(), Constants::BOARD_SDK_CMAKE_VAR);
QCOMPARE(boardSdk->cmakeVariableName(), Legacy::Constants::BOARD_SDK_CMAKE_VAR);
QCOMPARE(boardSdk->environmentVariableName(), environmentVariable);
QCOMPARE(boardSdk->settingsKey(), environmentVariable);
QCOMPARE(boardSdk->detectionPath().toString(), empty);
@@ -233,15 +238,15 @@ void verifyBoardSdk(const McuPackagePtr &boardSdk,
McuSupportTest::McuSupportTest()
: targetFactory{settingsMockPtr}
, compilerDescription{armGccLabel, armGccEnvVar, Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE, armGccLabel, armGccDirectorySetting, {}, {}, {}, false}
, toochainFileDescription{armGccLabel, armGccEnvVar, Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE, armGccLabel, armGccDirectorySetting, {}, {}, {}, false}
, compilerDescription{armGccLabel, armGccEnvVar, Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE, armGccLabel, armGccDirectorySetting, {}, {}, {}, false}
, toochainFileDescription{armGccLabel, armGccEnvVar, Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE, armGccLabel, armGccDirectorySetting, {}, {}, {}, false}
, targetDescription {
"2.0.1",
"2",
platformDescription,
Sdk::McuTargetDescription::Toolchain{armGcc, {}, compilerDescription, toochainFileDescription},
Sdk::PackageDescription{},
Sdk::McuTargetDescription::FreeRTOS{},
McuTargetDescription::Toolchain{armGcc, {}, compilerDescription, toochainFileDescription},
PackageDescription{},
McuTargetDescription::FreeRTOS{},
}
, toolchainPackagePtr{new McuToolChainPackage{
settingsMockPtr,
@@ -259,7 +264,7 @@ McuSupportTest::McuSupportTest()
armGccDirectorySetting,
McuToolChainPackage::ToolChainType::ArmGcc,
{armGccVersion},
Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE,
Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE,
armGccEnvVar}}
, iarToolchainPackagePtr{new McuToolChainPackage{settingsMockPtr,
iarLabel,
@@ -268,7 +273,7 @@ McuSupportTest::McuSupportTest()
iarSetting,
McuToolChainPackage::ToolChainType::IAR,
{armGccVersion},
Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE,
Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE,
iarEnvVar}}
, platform{id, name, vendor}
, mcuTarget{currentQulVersion,
@@ -303,7 +308,7 @@ void McuSupportTest::initTestCase()
EXPECT_CALL(*armGccToolchainFilePackage, environmentVariableName())
.WillRepeatedly(Return(QString{QString{}}));
EXPECT_CALL(*armGccToolchainFilePackage, cmakeVariableName())
.WillRepeatedly(Return(QString{Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE}));
.WillRepeatedly(Return(QString{Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE}));
EXPECT_CALL(*armGccToolchainFilePackage, isValidStatus()).WillRepeatedly(Return(true));
EXPECT_CALL(*armGccToolchainFilePackage, path())
.WillRepeatedly(Return(FilePath::fromString(armGccToolchainFilePath)));
@@ -330,7 +335,7 @@ void McuSupportTest::cleanup()
void McuSupportTest::test_parseBasicInfoFromJson()
{
const auto description = Sdk::parseDescriptionJson(iar_nxp_1064_json);
const auto description = parseDescriptionJson(iar_nxp_1064_json);
QVERIFY(!description.freeRTOS.envVar.isEmpty());
QVERIFY(description.freeRTOS.boardSdkSubDir.isEmpty());
@@ -338,7 +343,7 @@ void McuSupportTest::test_parseBasicInfoFromJson()
void McuSupportTest::test_parseCmakeEntries()
{
const auto description{Sdk::parseDescriptionJson(iar_nxp_1064_json)};
const auto description{parseDescriptionJson(iar_nxp_1064_json)};
QVERIFY(!description.freeRTOS.packages.isEmpty());
auto &freeRtos = description.freeRTOS.packages[0];
@@ -379,30 +384,30 @@ void McuSupportTest::test_parseToolchainFromJSON()
QFETCH(QString, label);
QFETCH(QString, toolchainFile);
QFETCH(QString, id);
Sdk::McuTargetDescription description{Sdk::parseDescriptionJson(json.toLocal8Bit())};
McuTargetDescription description{parseDescriptionJson(json.toLocal8Bit())};
QCOMPARE(description.toolchain.id, id);
const Sdk::PackageDescription &compilerPackage{description.toolchain.compiler};
QCOMPARE(compilerPackage.cmakeVar, Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
const PackageDescription &compilerPackage{description.toolchain.compiler};
QCOMPARE(compilerPackage.cmakeVar, Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
QCOMPARE(compilerPackage.envVar, environmentVariable);
const Sdk::PackageDescription &toolchainFilePackage{description.toolchain.file};
const PackageDescription &toolchainFilePackage{description.toolchain.file};
QCOMPARE(toolchainFilePackage.label, cmakeToolchainLabel);
QCOMPARE(toolchainFilePackage.envVar, QString{});
QCOMPARE(toolchainFilePackage.cmakeVar, Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE);
QCOMPARE(toolchainFilePackage.cmakeVar, Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE);
QCOMPARE(toolchainFilePackage.defaultPath.cleanPath().toString(), toolchainFile);
}
void McuSupportTest::test_legacy_createIarToolchain()
{
McuToolChainPackagePtr iarToolchainPackage = Sdk::createIarToolChainPackage(settingsMockPtr,
iarVersions);
McuToolChainPackagePtr iarToolchainPackage = Legacy::createIarToolChainPackage(settingsMockPtr,
iarVersions);
verifyIarToolchain(iarToolchainPackage);
}
void McuSupportTest::test_createIarToolchain()
{
const auto description = Sdk::parseDescriptionJson(iar_stm32f469i_metal_json);
const auto description = parseDescriptionJson(iar_stm32f469i_metal_json);
McuToolChainPackagePtr iarToolchainPackage{targetFactory.createToolchain(description.toolchain)};
verifyIarToolchain(iarToolchainPackage);
@@ -410,14 +415,14 @@ void McuSupportTest::test_createIarToolchain()
void McuSupportTest::test_legacy_createDesktopGccToolchain()
{
McuToolChainPackagePtr gccPackage = Sdk::createGccToolChainPackage(settingsMockPtr,
{armGccNewVersion});
McuToolChainPackagePtr gccPackage = Legacy::createGccToolChainPackage(settingsMockPtr,
{armGccNewVersion});
verifyGccToolchain(gccPackage, {armGccNewVersion});
}
void McuSupportTest::test_createDesktopGccToolchain()
{
const auto description = Sdk::parseDescriptionJson(gcc_desktop_json);
const auto description = parseDescriptionJson(gcc_desktop_json);
McuToolChainPackagePtr gccPackage{targetFactory.createToolchain(description.toolchain)};
verifyGccToolchain(gccPackage, {});
}
@@ -429,8 +434,8 @@ void McuSupportTest::test_verifyManuallyCreatedArmGccToolchain()
void McuSupportTest::test_legacy_createArmGccToolchain()
{
McuToolChainPackagePtr armGccPackage = Sdk::createArmGccToolchainPackage(settingsMockPtr,
{armGccVersion});
McuToolChainPackagePtr armGccPackage = Legacy::createArmGccToolchainPackage(settingsMockPtr,
{armGccVersion});
verifyArmGccToolchain(armGccPackage, {armGccVersion});
}
@@ -450,27 +455,27 @@ void McuSupportTest::test_createArmGccToolchain()
{
QFETCH(QString, json);
const auto description = Sdk::parseDescriptionJson(json.toLocal8Bit());
const auto description = parseDescriptionJson(json.toLocal8Bit());
McuToolChainPackagePtr armGccPackage{targetFactory.createToolchain(description.toolchain)};
verifyArmGccToolchain(armGccPackage, description.toolchain.versions);
}
void McuSupportTest::test_mapParsedToolchainIdToCorrespondingType_data()
{
QTest::addColumn<Sdk::McuTargetDescription>("description");
QTest::addColumn<McuTargetDescription>("description");
QTest::addColumn<McuToolChainPackage::ToolChainType>("toolchainType");
QTest::newRow("armgcc_stm32h750b") << Sdk::parseDescriptionJson(armgcc_stm32h750b_metal_json)
QTest::newRow("armgcc_stm32h750b") << parseDescriptionJson(armgcc_stm32h750b_metal_json)
<< McuToolChainPackage::ToolChainType::ArmGcc;
QTest::newRow("iar_nxp1064") << Sdk::parseDescriptionJson(iar_nxp_1064_json)
QTest::newRow("iar_nxp1064") << parseDescriptionJson(iar_nxp_1064_json)
<< McuToolChainPackage::ToolChainType::IAR;
QTest::newRow("iar_stm32f469i") << Sdk::parseDescriptionJson(iar_stm32f469i_metal_json)
QTest::newRow("iar_stm32f469i") << parseDescriptionJson(iar_stm32f469i_metal_json)
<< McuToolChainPackage::ToolChainType::IAR;
}
void McuSupportTest::test_mapParsedToolchainIdToCorrespondingType()
{
QFETCH(Sdk::McuTargetDescription, description);
QFETCH(McuTargetDescription, description);
QFETCH(McuToolChainPackage::ToolChainType, toolchainType);
const McuToolChainPackage *toolchain{targetFactory.createToolchain(description.toolchain)};
@@ -491,7 +496,8 @@ void McuSupportTest::test_legacy_createPackagesWithCorrespondingSettings_data()
QTest::newRow("nxp1064") << iar_nxp_1064_json
<< QSet<QString>{{"EVK_MIMXRT1064_SDK_PATH"},
{QString{Constants::SETTINGS_KEY_FREERTOS_PREFIX}
{QString{
Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}
.append("IMXRT1064")},
"IARToolchain"}
.unite(commonSettings);
@@ -500,7 +506,8 @@ void McuSupportTest::test_legacy_createPackagesWithCorrespondingSettings_data()
commonSettings);
QTest::newRow("nxp1050") << armgcc_nxp_1050_json
<< QSet<QString>{{"EVKB_IMXRT1050_SDK_PATH"},
{QString{Constants::SETTINGS_KEY_FREERTOS_PREFIX}
{QString{
Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}
.append("IMXRT1050")},
"GNUArmEmbeddedToolchain"}
.unite(commonSettings);
@@ -520,9 +527,9 @@ void McuSupportTest::test_legacy_createPackagesWithCorrespondingSettings_data()
void McuSupportTest::test_legacy_createPackagesWithCorrespondingSettings()
{
QFETCH(QString, json);
const Sdk::McuTargetDescription description = Sdk::parseDescriptionJson(json.toLocal8Bit());
const McuTargetDescription description = parseDescriptionJson(json.toLocal8Bit());
const auto [targets, packages]{
Sdk::targetsFromDescriptions({description}, settingsMockPtr, qtForMcuSdkPath, runLegacy)};
targetsFromDescriptions({description}, settingsMockPtr, qtForMcuSdkPath, runLegacy)};
Q_UNUSED(targets);
QSet<QString> settings = transform<QSet<QString>>(packages, [](const auto &package) {
@@ -538,13 +545,17 @@ void McuSupportTest::test_createFreeRtosPackageWithCorrectSetting_data()
QTest::addColumn<QString>("expectedSettingsKey");
QTest::newRow("nxp1050") << nxp1050FreeRtosEnvVar
<< QString{Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(nxp1050);
<< QString{Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(
nxp1050);
QTest::newRow("nxp1064") << nxp1064FreeRtosEnvVar
<< QString{Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(nxp1064);
<< QString{Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(
nxp1064);
QTest::newRow("nxp1170") << nxp1170FreeRtosEnvVar
<< QString{Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(nxp1170);
<< QString{Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(
nxp1170);
QTest::newRow("stm32f7") << stm32f7FreeRtosEnvVar
<< QString{Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(stm32f7);
<< QString{Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(
stm32f7);
}
void McuSupportTest::test_createFreeRtosPackageWithCorrectSetting()
@@ -552,8 +563,10 @@ void McuSupportTest::test_createFreeRtosPackageWithCorrectSetting()
QFETCH(QString, freeRtosEnvVar);
QFETCH(QString, expectedSettingsKey);
McuPackagePtr package{
Sdk::createFreeRTOSSourcesPackage(settingsMockPtr, freeRtosEnvVar, FilePath{}, FilePath{})};
McuPackagePtr package{Legacy::createFreeRTOSSourcesPackage(settingsMockPtr,
freeRtosEnvVar,
FilePath{},
FilePath{})};
QVERIFY(package != nullptr);
QCOMPARE(package->settingsKey(), expectedSettingsKey);
@@ -561,15 +574,15 @@ void McuSupportTest::test_createFreeRtosPackageWithCorrectSetting()
void McuSupportTest::test_createTargets()
{
Sdk::PackageDescription packageDescription{id,
nxp1064FreeRtosEnvVar,
freeRtosCMakeVar,
freeRtosSetting,
freeRtosDescription,
freeRtosPath,
"",
{},
true};
PackageDescription packageDescription{id,
nxp1064FreeRtosEnvVar,
freeRtosCMakeVar,
freeRtosSetting,
freeRtosDescription,
freeRtosPath,
"",
{},
true};
targetDescription.freeRTOS.packages.append(packageDescription);
targetDescription.toolchain.id = armGcc;
@@ -590,38 +603,38 @@ void McuSupportTest::test_createTargets()
// all packages should contain target's tooclhain compiler package.
QVERIFY(anyOf(packages, [](const McuPackagePtr &pkg) {
return (pkg->cmakeVariableName() == Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
return (pkg->cmakeVariableName() == Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE);
}));
// target should contain tooclhain copmiler package.
QVERIFY(anyOf(tgtPackages, [](const McuPackagePtr &pkg) {
return (pkg->cmakeVariableName()
== Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE /*and pkg->disconnect*/);
== Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE /*and pkg->disconnect*/);
}));
// all packages should contain target's tooclhain file package.
QVERIFY(anyOf(packages, [](const McuPackagePtr &pkg) {
return (pkg->cmakeVariableName() == Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE);
return (pkg->cmakeVariableName() == Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE);
}));
// target should contain tooclhain file package.
QVERIFY(anyOf(tgtPackages, [](const McuPackagePtr &pkg) {
return (pkg->cmakeVariableName()
== Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE /*and pkg->disconnect*/);
== Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE /*and pkg->disconnect*/);
}));
}
void McuSupportTest::test_createPackages()
{
Sdk::PackageDescription packageDescription{id,
nxp1064FreeRtosEnvVar,
freeRtosCMakeVar,
freeRtosLabel,
freeRtosSetting,
freeRtosPath,
"",
{},
true};
PackageDescription packageDescription{id,
nxp1064FreeRtosEnvVar,
freeRtosCMakeVar,
freeRtosLabel,
freeRtosSetting,
freeRtosPath,
"",
{},
true};
targetDescription.freeRTOS.packages.append(packageDescription);
const auto packages{targetFactory.createPackages(targetDescription)};
@@ -658,16 +671,16 @@ void McuSupportTest::test_twoDotOneUsesLegacyImplementation()
}
void McuSupportTest::test_useFallbackPathForToolchainWhenPathFromSettingsIsNotAvailable()
{
Sdk::PackageDescription compilerDescription{armGcc,
armGccEnvVar,
Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE,
armGcc,
armGccDirectorySetting,
fallbackDir,
{},
{},
false};
Sdk::McuTargetDescription::Toolchain toolchainDescription{armGcc, {}, compilerDescription, {}};
PackageDescription compilerDescription{armGcc,
armGccEnvVar,
Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE,
armGcc,
armGccDirectorySetting,
fallbackDir,
{},
{},
false};
McuTargetDescription::Toolchain toolchainDescription{armGcc, {}, compilerDescription, {}};
EXPECT_CALL(*settingsMockPtr, getPath(QString{armGccDirectorySetting}, _, FilePath{fallbackDir}))
.Times(2)
@@ -680,16 +693,16 @@ void McuSupportTest::test_useFallbackPathForToolchainWhenPathFromSettingsIsNotAv
void McuSupportTest::test_usePathFromSettingsForToolchainPath()
{
Sdk::PackageDescription compilerDescription{{},
armGccEnvVar,
Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE,
armGcc,
armGccDirectorySetting,
empty,
{},
{},
false};
Sdk::McuTargetDescription::Toolchain toolchainDescription{armGcc, {}, compilerDescription, {}};
PackageDescription compilerDescription{{},
armGccEnvVar,
Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE,
armGcc,
armGccDirectorySetting,
empty,
{},
{},
false};
McuTargetDescription::Toolchain toolchainDescription{armGcc, {}, compilerDescription, {}};
EXPECT_CALL(*settingsMockPtr, getPath(QString{armGccDirectorySetting}, _, FilePath{empty}))
.Times(2)
@@ -719,7 +732,7 @@ void McuSupportTest::test_addNewKit()
QCOMPARE(createdKit, newKit);
const auto config = CMakeConfigurationKitAspect::configuration(newKit);
QVERIFY(config.size() > 0);
QVERIFY(!config.empty());
QVERIFY(
indexOf(config.toVector(),
[&cmakeVar](const CMakeConfigItem &item) { return item.key == cmakeVar.toUtf8(); })
@@ -734,12 +747,12 @@ void McuSupportTest::test_getFullToolchainFilePathFromTarget()
void McuSupportTest::test_legacy_getPredefinedToolchainFilePackage()
{
QHash<QString, ToolchainCompilerCreator> toolchainCreators{
QHash<QString, Legacy::ToolchainCompilerCreator> toolchainCreators{
{armGcc, [this](const QStringList & /*versions*/) { return armGccToolchainPackagePtr; }}};
McuTargetFactoryLegacy legacyTargetFactory{toolchainCreators,
{{armGcc, armGccToolchainFilePackagePtr}},
{},
settingsMockPtr};
Legacy::McuTargetFactory legacyTargetFactory{toolchainCreators,
{{armGcc, armGccToolchainFilePackagePtr}},
{},
settingsMockPtr};
auto armToolchainFile = legacyTargetFactory.getToolchainFile(qtForMcuSdkPath, armGcc);
QVERIFY(armToolchainFile);
QCOMPARE(armToolchainFile, armGccToolchainFilePackagePtr);
@@ -747,18 +760,18 @@ void McuSupportTest::test_legacy_getPredefinedToolchainFilePackage()
void McuSupportTest::test_legacy_createUnsupportedToolchainFilePackage()
{
QHash<QString, ToolchainCompilerCreator> toolchainCreators{
QHash<QString, Legacy::ToolchainCompilerCreator> toolchainCreators{
{armGcc, [this](const QStringList & /*versions*/) { return armGccToolchainPackagePtr; }}};
McuTargetFactoryLegacy legacyTargetFactory{toolchainCreators,
{{armGcc, armGccToolchainFilePackagePtr}},
{},
settingsMockPtr};
Legacy::McuTargetFactory legacyTargetFactory{toolchainCreators,
{{armGcc, armGccToolchainFilePackagePtr}},
{},
settingsMockPtr};
auto unsupportedToolchainFile = legacyTargetFactory.getToolchainFile(qtForMcuSdkPath, iar);
QVERIFY(unsupportedToolchainFile);
QCOMPARE(unsupportedToolchainFile->path().toString(), unsupportedToolchainFilePath);
QCOMPARE(unsupportedToolchainFile->cmakeVariableName(),
Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE);
Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE);
}
void McuSupportTest::test_legacy_createTargetWithToolchainPackages_data()
@@ -797,7 +810,7 @@ void McuSupportTest::test_legacy_createTargetWithToolchainPackages()
QFETCH(QString, compilerSetting);
QFETCH(QStringList, versions);
const Sdk::McuTargetDescription description = Sdk::parseDescriptionJson(json.toLocal8Bit());
const McuTargetDescription description = parseDescriptionJson(json.toLocal8Bit());
EXPECT_CALL(*settingsMockPtr,
getPath(QString{Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK}, _, _))
@@ -806,7 +819,7 @@ void McuSupportTest::test_legacy_createTargetWithToolchainPackages()
.WillRepeatedly(Return(FilePath::fromString(compilerPath)));
const auto [targets, packages]{
Sdk::targetsFromDescriptions({description}, settingsMockPtr, qtForMcuSdkPath, runLegacy)};
targetsFromDescriptions({description}, settingsMockPtr, qtForMcuSdkPath, runLegacy)};
Q_UNUSED(packages);
verifyTargetToolchains(targets, toolchainFilePath, compilerPath, compilerSetting, versions);
@@ -831,9 +844,9 @@ void McuSupportTest::test_createTargetWithToolchainPackages()
EXPECT_CALL(*settingsMockPtr, getPath(compilerSetting, _, _))
.WillRepeatedly(Return(FilePath::fromString(compilerPath)));
const Sdk::McuTargetDescription description = Sdk::parseDescriptionJson(json.toLocal8Bit());
const McuTargetDescription description = parseDescriptionJson(json.toLocal8Bit());
const auto [targets, packages]{
Sdk::targetsFromDescriptions({description}, settingsMockPtr, qtForMcuSdkPath, !runLegacy)};
targetsFromDescriptions({description}, settingsMockPtr, qtForMcuSdkPath, !runLegacy)};
Q_UNUSED(packages);
verifyTargetToolchains(targets, toolchainFilePath, compilerPath, compilerSetting, versions);
@@ -848,7 +861,8 @@ void McuSupportTest::test_addToolchainFileInfoToKit()
const auto &cmakeConfig{CMakeConfigurationKitAspect::configuration(&kit)};
QVERIFY(!cmakeConfig.empty());
QCOMPARE(cmakeConfig.valueOf(Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE), armGccToolchainFilePath);
QCOMPARE(cmakeConfig.valueOf(Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE),
armGccToolchainFilePath);
}
void McuSupportTest::test_legacy_createBoardSdk_data()
@@ -876,8 +890,8 @@ void McuSupportTest::test_legacy_createBoardSdk()
QFETCH(QString, environmentVariable);
QFETCH(QStringList, versions);
Sdk::McuTargetDescription target{Sdk::parseDescriptionJson(json.toLocal8Bit())};
McuPackagePtr boardSdk{Sdk::createBoardSdkPackage(settingsMockPtr, target)};
McuTargetDescription target{parseDescriptionJson(json.toLocal8Bit())};
McuPackagePtr boardSdk{Legacy::createBoardSdkPackage(settingsMockPtr, target)};
verifyBoardSdk(boardSdk, environmentVariable, versions);
}
@@ -893,7 +907,7 @@ void McuSupportTest::test_createBoardSdk()
QFETCH(QString, environmentVariable);
QFETCH(QStringList, versions);
Sdk::McuTargetDescription target{Sdk::parseDescriptionJson(json.toLocal8Bit())};
McuTargetDescription target{parseDescriptionJson(json.toLocal8Bit())};
McuPackagePtr boardSdk{targetFactory.createPackage(target.boardSdk)};
@@ -906,11 +920,12 @@ void McuSupportTest::test_legacy_createQtMCUsPackage()
getPath(QString{Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK}, _, _))
.WillRepeatedly(Return(FilePath::fromString(qtForMcuSdkPath)));
McuPackagePtr qtForMCUsSDK = Sdk::createQtForMCUsPackage(settingsMockPtr);
McuPackagePtr qtForMCUsSDK = createQtForMCUsPackage(settingsMockPtr);
QVERIFY(qtForMCUsSDK);
QCOMPARE(qtForMCUsSDK->settingsKey(), Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK);
QCOMPARE(qtForMCUsSDK->detectionPath(), Constants::QT_FOR_MCUS_SDK_PACKAGE_VALIDATION_PATH);
QCOMPARE(qtForMCUsSDK->detectionPath(),
Legacy::Constants::QT_FOR_MCUS_SDK_PACKAGE_VALIDATION_PATH);
QCOMPARE(qtForMCUsSDK->path().toString(), qtForMcuSdkPath);
}

View File

@@ -102,9 +102,9 @@ private:
QSharedPointer<SettingsHandlerMock> settingsMockPtr{new SettingsHandlerMock};
McuTargetFactory targetFactory;
Sdk::PackageDescription compilerDescription;
Sdk::PackageDescription toochainFileDescription;
Sdk::McuTargetDescription targetDescription;
PackageDescription compilerDescription;
PackageDescription toochainFileDescription;
McuTargetDescription targetDescription;
McuToolChainPackagePtr toolchainPackagePtr;
McuToolChainPackagePtr armGccToolchainPackagePtr;
McuToolChainPackagePtr iarToolchainPackagePtr;