forked from qt-creator/qt-creator
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:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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()) {
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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))
|
||||
|
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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();
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user