diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp index a00d542027c..7509fefba37 100644 --- a/src/plugins/mcusupport/mcusupportsdk.cpp +++ b/src/plugins/mcusupport/mcusupportsdk.cpp @@ -202,6 +202,23 @@ static McuPackage *createMcuXpressoIdePackage() return result; } +static McuPackage *createBoardSdkPackage(const QString &envVar) +{ + const QString envVarPrefix = envVar.chopped(strlen("_SDK_PATH")); + + const QString defaultPath = + qEnvironmentVariableIsSet(envVar.toLatin1()) ? + qEnvironmentVariable(envVar.toLatin1()) : QDir::homePath(); + + auto result = new McuPackage( + QString::fromLatin1("MCU SDK (%1)").arg(envVarPrefix), + defaultPath, + {}, + envVar); + result->setEnvironmentVariableName(envVar); + return result; +} + static McuPackage *createFreeRTOSSourcesPackage(const QString &envVar) { const QString envVarPrefix = envVar.chopped(strlen("_FREERTOS_DIR")); @@ -246,6 +263,7 @@ static QVector targetsFromDescriptions(const QList boardSdkPkgs; QHash freeRTOSPkgs; QVector mcuTargets; @@ -262,6 +280,13 @@ static QVector targetsFromDescriptions(const QList required3rdPartyPkgs = { vendorPkgs.value(desc.platformVendor), tcPkg }; + if (!desc.boardSdkEnvVar.isEmpty()) { + if (!boardSdkPkgs.contains(desc.boardSdkEnvVar)) { + auto boardSdkPkg = createBoardSdkPackage(desc.boardSdkEnvVar); + boardSdkPkgs.insert(desc.boardSdkEnvVar, boardSdkPkg); + } + required3rdPartyPkgs.append(boardSdkPkgs.value(desc.boardSdkEnvVar)); + } if (os == McuTarget::OS::FreeRTOS) { if (desc.freeRTOSEnvVar.isEmpty()) { continue; @@ -286,6 +311,7 @@ static QVector targetsFromDescriptions(const QListappend(Utils::transform >( tcPkgs.values(), [&](McuToolChainPackage *tcPkg) { return tcPkg; })); packages->append(vendorPkgs.values().toVector()); + packages->append(boardSdkPkgs.values().toVector()); packages->append(freeRTOSPkgs.values().toVector()); return mcuTargets; @@ -328,7 +354,7 @@ static McuTargetDescription parseDescriptionJson(const QByteArray &data) target.value("platformVendor").toString(), colorDepthsVector, toolchain.value("id").toString(), - boardSdk.value("boardSdkEnvVar").toString(), + boardSdk.value("envVar").toString(), freeRTOSEnvVarForPlatform(platform) // Workaround for UL-2514: Missing FreeRTOS information }; }