forked from qt-creator/qt-creator
McuSupport: Create board sdk packages
Adapt legacy implementation and pass appropriate data to new implementation in McuTargetFactory::createPackage. Change-Id: I13e0896e219cea2629e15de2a6885df457249790 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -29,5 +29,6 @@ namespace McuSupport::Constants {
|
|||||||
|
|
||||||
const char QUL_TOOLCHAIN_CMAKE_DIR[] = "lib/cmake/Qul/toolchain/";
|
const char QUL_TOOLCHAIN_CMAKE_DIR[] = "lib/cmake/Qul/toolchain/";
|
||||||
const char QUL_ENV_VAR[] = "Qul_ROOT";
|
const char QUL_ENV_VAR[] = "Qul_ROOT";
|
||||||
|
const char BOARD_SDK_CMAKE_VAR[] = "QUL_BOARD_SDK_DIR";
|
||||||
|
|
||||||
} // namespace McuSupport::Constants
|
} // namespace McuSupport::Constants
|
||||||
|
@@ -120,8 +120,7 @@ McuPackagePtr createBoardSdkPackage(const SettingsHandler::Ptr &settingsHandler,
|
|||||||
const QString sdkName = postfixPos > 0 ? envVar.left(postfixPos) : envVar;
|
const QString sdkName = postfixPos > 0 ? envVar.left(postfixPos) : envVar;
|
||||||
return QString{"MCU SDK (%1)"}.arg(sdkName);
|
return QString{"MCU SDK (%1)"}.arg(sdkName);
|
||||||
};
|
};
|
||||||
const QString sdkName = desc.boardSdk.name.isEmpty() ? generateSdkName(desc.boardSdk.envVar)
|
const QString sdkName = generateSdkName(desc.boardSdk.envVar);
|
||||||
: desc.boardSdk.name;
|
|
||||||
|
|
||||||
const FilePath defaultPath = [&] {
|
const FilePath defaultPath = [&] {
|
||||||
const auto envVar = desc.boardSdk.envVar.toLatin1();
|
const auto envVar = desc.boardSdk.envVar.toLatin1();
|
||||||
@@ -143,7 +142,7 @@ McuPackagePtr createBoardSdkPackage(const SettingsHandler::Ptr &settingsHandler,
|
|||||||
defaultPath,
|
defaultPath,
|
||||||
{}, // detection path
|
{}, // detection path
|
||||||
desc.boardSdk.envVar, // settings key
|
desc.boardSdk.envVar, // settings key
|
||||||
"QUL_BOARD_SDK_DIR", // cmake var
|
Constants::BOARD_SDK_CMAKE_VAR, // cmake var
|
||||||
desc.boardSdk.envVar, // env var
|
desc.boardSdk.envVar, // env var
|
||||||
desc.boardSdk.versions,
|
desc.boardSdk.versions,
|
||||||
{}, // download URL
|
{}, // download URL
|
||||||
@@ -625,8 +624,7 @@ McuTargetDescription parseDescriptionJson(const QByteArray &data)
|
|||||||
|
|
||||||
const PackageDescription toolchainPackage = parsePackage(compiler);
|
const PackageDescription toolchainPackage = parsePackage(compiler);
|
||||||
const PackageDescription toolchainFilePackage = parsePackage(toolchainFile);
|
const PackageDescription toolchainFilePackage = parsePackage(toolchainFile);
|
||||||
const QList<PackageDescription> boardSDKEntries = parsePackages(
|
const PackageDescription boardSdkPackage{parsePackage(boardSdk)};
|
||||||
boardSdk.value(CMAKE_ENTRIES).toArray());
|
|
||||||
const QList<PackageDescription> freeRtosEntries = parsePackages(
|
const QList<PackageDescription> freeRtosEntries = parsePackages(
|
||||||
freeRTOS.value(CMAKE_ENTRIES).toArray());
|
freeRTOS.value(CMAKE_ENTRIES).toArray());
|
||||||
|
|
||||||
@@ -662,13 +660,7 @@ McuTargetDescription parseDescriptionJson(const QByteArray &data)
|
|||||||
toolchainVersionsList,
|
toolchainVersionsList,
|
||||||
toolchainPackage,
|
toolchainPackage,
|
||||||
toolchainFilePackage},
|
toolchainFilePackage},
|
||||||
{
|
boardSdkPackage,
|
||||||
boardSdk.value("name").toString(),
|
|
||||||
FilePath::fromString(boardSdk.value("defaultPath").toString()),
|
|
||||||
boardSdk.value("envVar").toString(),
|
|
||||||
boardSdkVersionsList,
|
|
||||||
boardSDKEntries,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
freeRTOS.value("envVar").toString(),
|
freeRTOS.value("envVar").toString(),
|
||||||
FilePath::fromString(freeRTOS.value("boardSdkSubDir").toString()),
|
FilePath::fromString(freeRTOS.value("boardSdkSubDir").toString()),
|
||||||
|
@@ -67,14 +67,7 @@ struct McuTargetDescription
|
|||||||
PackageDescription compiler;
|
PackageDescription compiler;
|
||||||
PackageDescription file;
|
PackageDescription file;
|
||||||
} toolchain;
|
} toolchain;
|
||||||
struct BoardSdk
|
PackageDescription boardSdk;
|
||||||
{
|
|
||||||
QString name;
|
|
||||||
Utils::FilePath defaultPath;
|
|
||||||
QString envVar;
|
|
||||||
QStringList versions;
|
|
||||||
QList<PackageDescription> packages;
|
|
||||||
} boardSdk;
|
|
||||||
struct FreeRTOS
|
struct FreeRTOS
|
||||||
{
|
{
|
||||||
QString envVar;
|
QString envVar;
|
||||||
|
@@ -97,7 +97,7 @@ QPair<Targets, Packages> McuTargetFactory::createTargets(const McuTargetDescript
|
|||||||
QList<PackageDescription> aggregatePackageEntries(const McuTargetDescription &desc)
|
QList<PackageDescription> aggregatePackageEntries(const McuTargetDescription &desc)
|
||||||
{
|
{
|
||||||
QList<PackageDescription> result;
|
QList<PackageDescription> result;
|
||||||
result.append(desc.boardSdk.packages);
|
result.append(desc.boardSdk);
|
||||||
result.append(desc.freeRTOS.packages);
|
result.append(desc.freeRTOS.packages);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@@ -85,23 +85,14 @@ constexpr auto armgcc_nxp_1050_json = R"({
|
|||||||
},
|
},
|
||||||
"boardSdk": {
|
"boardSdk": {
|
||||||
"envVar": "EVKB_IMXRT1050_SDK_PATH",
|
"envVar": "EVKB_IMXRT1050_SDK_PATH",
|
||||||
"versions": [
|
"versions": [ "2.11.0" ],
|
||||||
"2.11.0"
|
|
||||||
],
|
|
||||||
"cmakeEntries": [
|
|
||||||
{
|
|
||||||
"id": "NXP_SDK_DIR",
|
"id": "NXP_SDK_DIR",
|
||||||
"label": "Board SDK for MIMXRT1050-EVK",
|
"label": "Board SDK for MIMXRT1050-EVK",
|
||||||
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
||||||
"envVar": "EVKB_IMXRT1050_SDK_PATH",
|
"envVar": "EVKB_IMXRT1050_SDK_PATH",
|
||||||
"setting": "EVKB_IMXRT1050_SDK_PATH",
|
"setting": "EVKB_IMXRT1050_SDK_PATH",
|
||||||
"versions": [
|
|
||||||
"2.11.0"
|
|
||||||
],
|
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"freeRTOS": {
|
"freeRTOS": {
|
||||||
"envVar": "IMXRT1050_FREERTOS_DIR",
|
"envVar": "IMXRT1050_FREERTOS_DIR",
|
||||||
|
@@ -85,18 +85,15 @@ constexpr auto armgcc_stm32f769i_freertos_json = R"({
|
|||||||
},
|
},
|
||||||
"boardSdk": {
|
"boardSdk": {
|
||||||
"envVar": "STM32Cube_FW_F7_SDK_PATH",
|
"envVar": "STM32Cube_FW_F7_SDK_PATH",
|
||||||
|
"setting": "STM32Cube_FW_F7_SDK_PATH",
|
||||||
"versions": [
|
"versions": [
|
||||||
"1.16.0"
|
"1.16.0"
|
||||||
],
|
],
|
||||||
"cmakeEntries": [
|
|
||||||
{
|
|
||||||
"id": "ST_SDK_DIR",
|
"id": "ST_SDK_DIR",
|
||||||
"label": "Board SDK for STM32F769I-Discovery",
|
"label": "Board SDK for STM32F769I-Discovery",
|
||||||
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"freeRTOS": {
|
"freeRTOS": {
|
||||||
"envVar": "STM32F7_FREERTOS_DIR",
|
"envVar": "STM32F7_FREERTOS_DIR",
|
||||||
|
@@ -83,17 +83,14 @@ constexpr auto armgcc_stm32h750b_metal_json = R"({
|
|||||||
},
|
},
|
||||||
"boardSdk": {
|
"boardSdk": {
|
||||||
"envVar": "STM32Cube_FW_H7_SDK_PATH",
|
"envVar": "STM32Cube_FW_H7_SDK_PATH",
|
||||||
|
"setting": "STM32Cube_FW_H7_SDK_PATH",
|
||||||
"versions": [
|
"versions": [
|
||||||
"1.5.0"
|
"1.5.0"
|
||||||
],
|
],
|
||||||
"cmakeEntries": [
|
|
||||||
{
|
|
||||||
"id": "ST_SDK_DIR",
|
"id": "ST_SDK_DIR",
|
||||||
"label": "Board SDK for STM32H750B-Discovery",
|
"label": "Board SDK for STM32H750B-Discovery",
|
||||||
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
}
|
||||||
]
|
|
||||||
}
|
|
||||||
})";
|
})";
|
||||||
|
@@ -70,11 +70,8 @@ constexpr auto ghs_rh850_d1m1a_baremetal_json = R"({
|
|||||||
},
|
},
|
||||||
"boardSdk": {
|
"boardSdk": {
|
||||||
"envVar": "RGL_DIR",
|
"envVar": "RGL_DIR",
|
||||||
"versions": [
|
"setting": "RGL_DIR",
|
||||||
"2.0.0a"
|
"versions": [ "2.0.0a" ],
|
||||||
],
|
|
||||||
"cmakeEntries": [
|
|
||||||
{
|
|
||||||
"id": "RGL_DIR",
|
"id": "RGL_DIR",
|
||||||
"description": "Renesas Graphics Library",
|
"description": "Renesas Graphics Library",
|
||||||
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
||||||
@@ -82,6 +79,4 @@ constexpr auto ghs_rh850_d1m1a_baremetal_json = R"({
|
|||||||
"defaultValue": "/Renesas_Electronics/D1x_RGL/rgl_ghs_D1Mx_obj_V.2.0.0a",
|
"defaultValue": "/Renesas_Electronics/D1x_RGL/rgl_ghs_D1Mx_obj_V.2.0.0a",
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
}
|
||||||
]
|
|
||||||
}
|
|
||||||
})";
|
})";
|
||||||
|
@@ -29,18 +29,14 @@ constexpr auto iar_nxp_1064_json = R"({
|
|||||||
"compatVersion": "1",
|
"compatVersion": "1",
|
||||||
"qulVersion": "2.0.0",
|
"qulVersion": "2.0.0",
|
||||||
"boardSdk": {
|
"boardSdk": {
|
||||||
"cmakeEntries": [
|
|
||||||
{
|
|
||||||
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
||||||
"label": "Board SDK for MIMXRT1064-EVK",
|
"label": "Board SDK for MIMXRT1064-EVK",
|
||||||
"id": "NXP_SDK_DIR",
|
"id": "NXP_SDK_DIR",
|
||||||
"optional": false,
|
"optional": false,
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"versions": ["2.10.0"]
|
"versions": ["2.11.0"],
|
||||||
}
|
|
||||||
],
|
|
||||||
"envVar": "EVK_MIMXRT1064_SDK_PATH",
|
"envVar": "EVK_MIMXRT1064_SDK_PATH",
|
||||||
"versions": ["2.10.0"]
|
"setting": "EVK_MIMXRT1064_SDK_PATH"
|
||||||
},
|
},
|
||||||
"freeRTOS": {
|
"freeRTOS": {
|
||||||
"cmakeEntries": [
|
"cmakeEntries": [
|
||||||
|
@@ -83,17 +83,12 @@ constexpr auto iar_stm32f469i_metal_json = R"({
|
|||||||
},
|
},
|
||||||
"boardSdk": {
|
"boardSdk": {
|
||||||
"envVar": "STM32Cube_FW_F4_SDK_PATH",
|
"envVar": "STM32Cube_FW_F4_SDK_PATH",
|
||||||
"versions": [
|
"setting": "STM32Cube_FW_F4_SDK_PATH",
|
||||||
"1.25.0"
|
"versions": [ "1.25.0" ],
|
||||||
],
|
|
||||||
"cmakeEntries": [
|
|
||||||
{
|
|
||||||
"id": "ST_SDK_DIR",
|
"id": "ST_SDK_DIR",
|
||||||
"label": "Board SDK for STM32F469I-Discovery",
|
"label": "Board SDK for STM32F469I-Discovery",
|
||||||
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
"cmakeVar": "QUL_BOARD_SDK_DIR",
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
}
|
||||||
]
|
|
||||||
}
|
|
||||||
})";
|
})";
|
||||||
|
@@ -219,6 +219,18 @@ void verifyTargetToolchains(const Targets &targets,
|
|||||||
QCOMPARE(toolchainCompiler->versions(), versions);
|
QCOMPARE(toolchainCompiler->versions(), versions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void verifyBoardSdk(const McuPackagePtr &boardSdk,
|
||||||
|
const QString &environmentVariable,
|
||||||
|
const QStringList &versions)
|
||||||
|
{
|
||||||
|
QVERIFY(boardSdk);
|
||||||
|
QCOMPARE(boardSdk->cmakeVariableName(), Constants::BOARD_SDK_CMAKE_VAR);
|
||||||
|
QCOMPARE(boardSdk->environmentVariableName(), environmentVariable);
|
||||||
|
QCOMPARE(boardSdk->settingsKey(), environmentVariable);
|
||||||
|
QCOMPARE(boardSdk->detectionPath().toString(), empty);
|
||||||
|
QCOMPARE(boardSdk->versions(), versions);
|
||||||
|
}
|
||||||
|
|
||||||
McuSupportTest::McuSupportTest()
|
McuSupportTest::McuSupportTest()
|
||||||
: targetFactory{settingsMockPtr}
|
: targetFactory{settingsMockPtr}
|
||||||
, toolchainPackagePtr{new McuToolChainPackage{
|
, toolchainPackagePtr{new McuToolChainPackage{
|
||||||
@@ -267,7 +279,7 @@ void McuSupportTest::initTestCase()
|
|||||||
"2",
|
"2",
|
||||||
platformDescription,
|
platformDescription,
|
||||||
Sdk::McuTargetDescription::Toolchain{},
|
Sdk::McuTargetDescription::Toolchain{},
|
||||||
Sdk::McuTargetDescription::BoardSdk{},
|
Sdk::PackageDescription{},
|
||||||
Sdk::McuTargetDescription::FreeRTOS{},
|
Sdk::McuTargetDescription::FreeRTOS{},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -813,4 +825,53 @@ void McuSupportTest::test_addToolchainFileInfoToKit()
|
|||||||
QCOMPARE(cmakeConfig.valueOf(Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE), armGccToolchainFilePath);
|
QCOMPARE(cmakeConfig.valueOf(Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE), armGccToolchainFilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void McuSupportTest::test_legacy_createBoardSdk_data()
|
||||||
|
{
|
||||||
|
QTest::addColumn<QString>("json");
|
||||||
|
QTest::addColumn<QString>("environmentVariable");
|
||||||
|
QTest::addColumn<QStringList>("versions");
|
||||||
|
|
||||||
|
QTest::newRow("armgcc_nxp_1050_json")
|
||||||
|
<< armgcc_nxp_1050_json << "EVKB_IMXRT1050_SDK_PATH" << boardSdkVersions;
|
||||||
|
QTest::newRow("stm32h750b") << armgcc_stm32h750b_metal_json << "STM32Cube_FW_H7_SDK_PATH"
|
||||||
|
<< QStringList{"1.5.0"};
|
||||||
|
QTest::newRow("stm32f769i") << armgcc_stm32f769i_freertos_json << "STM32Cube_FW_F7_SDK_PATH"
|
||||||
|
<< QStringList{"1.16.0"};
|
||||||
|
QTest::newRow("stm32f469i") << iar_stm32f469i_metal_json << "STM32Cube_FW_F4_SDK_PATH"
|
||||||
|
<< QStringList{"1.25.0"};
|
||||||
|
QTest::newRow("nxp1064") << iar_nxp_1064_json << "EVK_MIMXRT1064_SDK_PATH" << boardSdkVersions;
|
||||||
|
QTest::newRow("ghs_rh850_d1m1a_baremetal_json")
|
||||||
|
<< ghs_rh850_d1m1a_baremetal_json << "RGL_DIR" << QStringList{"2.0.0a"};
|
||||||
|
}
|
||||||
|
|
||||||
|
void McuSupportTest::test_legacy_createBoardSdk()
|
||||||
|
{
|
||||||
|
QFETCH(QString, json);
|
||||||
|
QFETCH(QString, environmentVariable);
|
||||||
|
QFETCH(QStringList, versions);
|
||||||
|
|
||||||
|
Sdk::McuTargetDescription target{Sdk::parseDescriptionJson(json.toLocal8Bit())};
|
||||||
|
McuPackagePtr boardSdk{Sdk::createBoardSdkPackage(settingsMockPtr, target)};
|
||||||
|
|
||||||
|
verifyBoardSdk(boardSdk, environmentVariable, versions);
|
||||||
|
}
|
||||||
|
|
||||||
|
void McuSupportTest::test_createBoardSdk_data()
|
||||||
|
{
|
||||||
|
test_legacy_createBoardSdk_data();
|
||||||
|
}
|
||||||
|
|
||||||
|
void McuSupportTest::test_createBoardSdk()
|
||||||
|
{
|
||||||
|
QFETCH(QString, json);
|
||||||
|
QFETCH(QString, environmentVariable);
|
||||||
|
QFETCH(QStringList, versions);
|
||||||
|
|
||||||
|
Sdk::McuTargetDescription target{Sdk::parseDescriptionJson(json.toLocal8Bit())};
|
||||||
|
|
||||||
|
McuPackagePtr boardSdk{targetFactory.createPackage(target.boardSdk)};
|
||||||
|
|
||||||
|
verifyBoardSdk(boardSdk, environmentVariable, versions);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace McuSupport::Internal::Test
|
} // namespace McuSupport::Internal::Test
|
||||||
|
@@ -87,6 +87,11 @@ private slots:
|
|||||||
void test_legacy_getPredefinedToolchainFilePackage();
|
void test_legacy_getPredefinedToolchainFilePackage();
|
||||||
void test_legacy_createUnsupportedToolchainFilePackage();
|
void test_legacy_createUnsupportedToolchainFilePackage();
|
||||||
|
|
||||||
|
void test_legacy_createBoardSdk_data();
|
||||||
|
void test_legacy_createBoardSdk();
|
||||||
|
void test_createBoardSdk_data();
|
||||||
|
void test_createBoardSdk();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVersionNumber currentQulVersion{2, 0};
|
QVersionNumber currentQulVersion{2, 0};
|
||||||
PackageMock *freeRtosPackage{new PackageMock};
|
PackageMock *freeRtosPackage{new PackageMock};
|
||||||
|
Reference in New Issue
Block a user