forked from qt-creator/qt-creator
McuSupport: Read RGL configuration from json
Previously whole SDK configuration for Renesas RH850 was hard coded. Now configuration is read form the json file - same as for the other SDKs. This changes adds new boardSdk params: - name: sets the name for the SDK. If not set existing logic for generating name as "MCU SDK()" is used - defaultPath: path where to look for the SDK if env variable is not set Change-Id: Ia4b92c95bdc3302309cea4b935afbdd2e0bcadbe Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
committed by
Alessandro Portale
parent
c3641b02e4
commit
4f595be64a
@@ -201,24 +201,52 @@ static McuPackage *createMcuXpressoIdePackage()
|
||||
return result;
|
||||
}
|
||||
|
||||
static McuPackage *createBoardSdkPackage(const QString &envVar)
|
||||
struct McuTargetDescription
|
||||
{
|
||||
auto postfixPos = envVar.indexOf("_SDK_PATH");
|
||||
if (postfixPos < 0) {
|
||||
postfixPos = envVar.indexOf("_DIR");
|
||||
}
|
||||
const QString sdkName = postfixPos > 0 ? envVar.left(postfixPos) : envVar;
|
||||
QString qulVersion;
|
||||
QString platform;
|
||||
QString platformVendor;
|
||||
QVector<int> colorDepths;
|
||||
QString toolchainId;
|
||||
QString boardSdkEnvVar;
|
||||
QString boardSdkName;
|
||||
QString boardSdkDefaultPath;
|
||||
QString freeRTOSEnvVar;
|
||||
QString freeRTOSBoardSdkSubDir;
|
||||
};
|
||||
|
||||
const QString defaultPath =
|
||||
qEnvironmentVariableIsSet(envVar.toLatin1()) ?
|
||||
qEnvironmentVariable(envVar.toLatin1()) : QDir::homePath();
|
||||
static McuPackage *createBoardSdkPackage(const McuTargetDescription& desc)
|
||||
{
|
||||
const auto generateSdkName = [](const QString& envVar) {
|
||||
auto postfixPos = envVar.indexOf("_SDK_PATH");
|
||||
if (postfixPos < 0) {
|
||||
postfixPos = envVar.indexOf("_DIR");
|
||||
}
|
||||
auto sdkName = postfixPos > 0 ? envVar.left(postfixPos) : envVar;
|
||||
return QString::fromLatin1("MCU SDK (%1)").arg(sdkName);
|
||||
};
|
||||
const QString sdkName = desc.boardSdkName.isEmpty() ? generateSdkName(desc.boardSdkEnvVar) : desc.boardSdkName;
|
||||
|
||||
const QString defaultPath = [&] {
|
||||
const auto envVar = desc.boardSdkEnvVar.toLatin1();
|
||||
if (qEnvironmentVariableIsSet(envVar)) {
|
||||
return qEnvironmentVariable(envVar);
|
||||
}
|
||||
if (!desc.boardSdkDefaultPath.isEmpty()) {
|
||||
QString defaultPath = QDir::rootPath() + desc.boardSdkDefaultPath;
|
||||
if (QFileInfo::exists(defaultPath)) {
|
||||
return defaultPath;
|
||||
}
|
||||
}
|
||||
return QDir::homePath();
|
||||
}();
|
||||
|
||||
auto result = new McuPackage(
|
||||
QString::fromLatin1("MCU SDK (%1)").arg(sdkName),
|
||||
sdkName,
|
||||
defaultPath,
|
||||
{},
|
||||
envVar);
|
||||
result->setEnvironmentVariableName(envVar);
|
||||
desc.boardSdkEnvVar);
|
||||
result->setEnvironmentVariableName(desc.boardSdkEnvVar);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -245,18 +273,6 @@ static McuPackage *createFreeRTOSSourcesPackage(const QString &envVar, const QSt
|
||||
return result;
|
||||
}
|
||||
|
||||
struct McuTargetDescription
|
||||
{
|
||||
QString qulVersion;
|
||||
QString platform;
|
||||
QString platformVendor;
|
||||
QVector<int> colorDepths;
|
||||
QString toolchainId;
|
||||
QString boardSdkEnvVar;
|
||||
QString freeRTOSEnvVar;
|
||||
QString freeRTOSBoardSdkSubDir;
|
||||
};
|
||||
|
||||
struct McuTargetFactory
|
||||
{
|
||||
McuTargetFactory(const QHash<QString, McuToolChainPackage *> &tcPkgs,
|
||||
@@ -295,14 +311,16 @@ protected:
|
||||
auto tcPkg = tcPkgs.value(desc.toolchainId);
|
||||
for (auto os : {McuTarget::OS::BareMetal, McuTarget::OS::FreeRTOS}) {
|
||||
for (int colorDepth : desc.colorDepths) {
|
||||
QVector<McuPackage*> required3rdPartyPkgs = {
|
||||
vendorPkgs.value(desc.platformVendor), tcPkg
|
||||
};
|
||||
QVector<McuPackage*> required3rdPartyPkgs = { tcPkg };
|
||||
if (vendorPkgs.contains(desc.platformVendor)) {
|
||||
required3rdPartyPkgs.push_back(vendorPkgs.value(desc.platformVendor));
|
||||
}
|
||||
QString boardSdkDefaultPath;
|
||||
if (!desc.boardSdkEnvVar.isEmpty()
|
||||
&& desc.boardSdkEnvVar != "RGL_DIR") { // Already included in vendorPkgs
|
||||
if (!desc.boardSdkEnvVar.isEmpty()) {
|
||||
if (!boardSdkPkgs.contains(desc.boardSdkEnvVar)) {
|
||||
auto boardSdkPkg = createBoardSdkPackage(desc.boardSdkEnvVar);
|
||||
auto boardSdkPkg = desc.boardSdkEnvVar != "RGL_DIR"
|
||||
? createBoardSdkPackage(desc)
|
||||
: createRGLPackage();
|
||||
boardSdkPkgs.insert(desc.boardSdkEnvVar, boardSdkPkg);
|
||||
}
|
||||
auto boardSdkPkg = boardSdkPkgs.value(desc.boardSdkEnvVar);
|
||||
@@ -338,14 +356,14 @@ protected:
|
||||
QVector<McuTarget *> mcuTargets;
|
||||
auto tcPkg = tcPkgs.value(desc.toolchainId);
|
||||
for (int colorDepth : desc.colorDepths) {
|
||||
QVector<McuPackage*> required3rdPartyPkgs = {
|
||||
vendorPkgs.value(desc.platformVendor), tcPkg
|
||||
};
|
||||
QVector<McuPackage*> required3rdPartyPkgs = { tcPkg };
|
||||
if (vendorPkgs.contains(desc.platformVendor)) {
|
||||
required3rdPartyPkgs.push_back(vendorPkgs.value(desc.platformVendor));
|
||||
}
|
||||
QString boardSdkDefaultPath;
|
||||
if (!desc.boardSdkEnvVar.isEmpty()
|
||||
&& desc.boardSdkEnvVar != "RGL_DIR") { // Already included in vendorPkgs
|
||||
if (!desc.boardSdkEnvVar.isEmpty()) {
|
||||
if (!boardSdkPkgs.contains(desc.boardSdkEnvVar)) {
|
||||
auto boardSdkPkg = createBoardSdkPackage(desc.boardSdkEnvVar);
|
||||
auto boardSdkPkg = createBoardSdkPackage(desc);
|
||||
boardSdkPkgs.insert(desc.boardSdkEnvVar, boardSdkPkg);
|
||||
}
|
||||
auto boardSdkPkg = boardSdkPkgs.value(desc.boardSdkEnvVar);
|
||||
@@ -402,7 +420,6 @@ static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescrip
|
||||
const QHash<QString, McuPackage *> vendorPkgs = {
|
||||
{{"ST"}, createStm32CubeProgrammerPackage()},
|
||||
{{"NXP"}, createMcuXpressoIdePackage()},
|
||||
{{"Renesas"}, createRGLPackage()}
|
||||
};
|
||||
|
||||
McuTargetFactory targetFactory(tcPkgs, vendorPkgs);
|
||||
@@ -448,6 +465,8 @@ static McuTargetDescription parseDescriptionJson(const QByteArray &data)
|
||||
colorDepthsVector,
|
||||
toolchain.value("id").toString(),
|
||||
boardSdk.value("envVar").toString(),
|
||||
boardSdk.value("name").toString(),
|
||||
boardSdk.value("defaultPath").toString(),
|
||||
freeRTOS.value("envVar").toString(),
|
||||
freeRTOS.value("boardSdkSubDir").toString()
|
||||
};
|
||||
|
Reference in New Issue
Block a user