McuSupport: Add handling of os-specific validation paths

Before the refactoring, the various third party packages had detection
paths set to facilitate picking the correct subdirectory in QtCreator.
Adding these paths to the JSONs prompts hints in the Devices>MCU UI to
which path to enter, and prevents the user from picking the wrong path

Since the paths might vary based on the host-os, it is necessary to
enable parsing this from JSONs, similar to how the "defaultValue" is
handled. The "detectionPath" entry can either be an object with
separate values in fields named "windows" and "linux", or a string.

Change-Id: I813affe856fe73f6cf34ea75850500b49a1b2b6a
Reviewed-by: Rainer Keller <Rainer.Keller@qt.io>
Reviewed-by: Kwangsub Kim <kwangsub.kim@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Yasser Grimes <yasser.grimes@qt.io>
This commit is contained in:
Sivert Krøvel
2022-10-18 14:51:42 +02:00
parent bf0d2426b8
commit b1a3e136b6
34 changed files with 287 additions and 96 deletions

View File

@@ -368,8 +368,8 @@ McuPackagePtr createStm32CubeProgrammerPackage(const SettingsHandler::Ptr &setti
FilePath defaultPath = {};
const FilePath detectionPath = FilePath::fromUserInput(
QLatin1String(Utils::HostOsInfo::isWindowsHost() ? "/bin/STM32_Programmer_CLI.exe"
: "/bin/STM32_Programmer.sh"));
QLatin1String(Utils::HostOsInfo::isWindowsHost() ? "bin/STM32_Programmer_CLI.exe"
: "bin/STM32_Programmer.sh"));
return McuPackagePtr{
new McuPackage(settingsHandler,
@@ -617,6 +617,16 @@ VersionDetection parseVersionDetection(const QJsonObject &packageEntry)
};
}
QString getOsSpecificValue(const QJsonValue &entry)
{
if (entry.isObject()) {
//The json entry has os-specific values
return entry[HostOsInfo::isWindowsHost() ? QString("windows") : QString("linux")].toString();
}
//The entry does not have os-specific values
return entry.toString();
}
static PackageDescription parsePackage(const QJsonObject &cmakeEntry)
{
const QVariantList versionsVariantList = cmakeEntry["versions"].toArray().toVariantList();
@@ -626,14 +636,8 @@ static PackageDescription parsePackage(const QJsonObject &cmakeEntry)
});
//Parse the default value depending on the operating system
QString defaultPathString;
if (cmakeEntry["defaultValue"].isObject())
defaultPathString
= cmakeEntry["defaultValue"]
.toObject()[HostOsInfo::isWindowsHost() ? QString("windows") : QString("unix")]
.toString("");
else
defaultPathString = cmakeEntry["defaultValue"].toString();
QString defaultPathString = getOsSpecificValue(cmakeEntry["defaultValue"]);
QString detectionPathString = getOsSpecificValue(cmakeEntry["detectionPath"]);
return {cmakeEntry["label"].toString(),
cmakeEntry["envVar"].toString(),
@@ -641,7 +645,7 @@ static PackageDescription parsePackage(const QJsonObject &cmakeEntry)
cmakeEntry["description"].toString(),
cmakeEntry["setting"].toString(),
FilePath::fromUserInput(defaultPathString),
FilePath::fromUserInput(cmakeEntry["validation"].toString()),
FilePath::fromUserInput(detectionPathString),
versions,
parseVersionDetection(cmakeEntry),
cmakeEntry["addToSystemPath"].toBool()};

View File

@@ -29,7 +29,7 @@ struct PackageDescription
QString description;
QString setting;
Utils::FilePath defaultPath;
Utils::FilePath validationPath;
Utils::FilePath detectionPath;
QStringList versions;
VersionDetection versionDetection;
bool shouldAddToSystemPath;

View File

@@ -131,7 +131,7 @@ McuPackagePtr McuTargetFactory::createPackage(const PackageDescription &pkgDesc)
return McuPackagePtr{new McuPackage{settingsHandler,
pkgDesc.label,
pkgDesc.defaultPath,
pkgDesc.validationPath,
pkgDesc.detectionPath,
pkgDesc.setting,
pkgDesc.cmakeVar,
pkgDesc.envVar,
@@ -166,7 +166,7 @@ McuToolChainPackage *McuTargetFactory::createToolchain(
return new McuToolChainPackage{settingsHandler,
compilerDescription.label,
compilerDescription.defaultPath,
compilerDescription.validationPath,
compilerDescription.detectionPath,
{},
toolchainType,
toolchain.versions,
@@ -206,7 +206,7 @@ McuToolChainPackage *McuTargetFactory::createToolchain(
return new McuToolChainPackage{settingsHandler,
compilerDescription.label,
compilerDescription.defaultPath,
compilerDescription.validationPath,
compilerDescription.detectionPath,
compilerDescription.setting,
toolchainType,
toolchain.versions,

View File

@@ -22,7 +22,7 @@ constexpr auto armgcc_ek_ra6m3g_baremetal_json = R"(
"type": "path",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/SEGGER/JLink",
"unix": "/opt/SEGGER/JLink"
"linux": "/opt/SEGGER/JLink"
},
"optional": true,
"addToSystemPath": true
@@ -46,6 +46,10 @@ constexpr auto armgcc_ek_ra6m3g_baremetal_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {

View File

@@ -22,7 +22,7 @@ constexpr auto armgcc_ek_ra6m3g_freertos_json = R"(
"type": "path",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/SEGGER/JLink",
"unix": "/opt/SEGGER/JLink"
"linux": "/opt/SEGGER/JLink"
},
"optional": true,
"addToSystemPath": true
@@ -46,6 +46,10 @@ constexpr auto armgcc_ek_ra6m3g_freertos_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {
@@ -74,7 +78,7 @@ constexpr auto armgcc_ek_ra6m3g_freertos_json = R"(
"label": "FreeRTOS SDK for EK-RA6M3G",
"cmakeVar": "FREERTOS_DIR",
"defaultValue": "%{Qul_ROOT}/platform/boards/renesas/ek-ra6m3g-common/3rdparty/freertos",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"type": "path",
"optional": false
}

View File

@@ -31,6 +31,10 @@ constexpr auto armgcc_example_baremetal_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {

View File

@@ -22,10 +22,11 @@ constexpr auto armgcc_mimxrt1050_evk_baremetal_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -49,6 +50,10 @@ constexpr auto armgcc_mimxrt1050_evk_baremetal_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {

View File

@@ -22,10 +22,11 @@ constexpr auto armgcc_mimxrt1050_evk_freertos_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -49,6 +50,10 @@ constexpr auto armgcc_mimxrt1050_evk_freertos_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {
@@ -80,7 +85,7 @@ constexpr auto armgcc_mimxrt1050_evk_freertos_json = R"(
"freeRTOS": {
"cmakeVar": "FREERTOS_DIR",
"defaultValue": "%{QUL_BOARD_SDK_DIR}/rtos/freertos/freertos_kernel",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"envVar": "IMXRT1050_FREERTOS_DIR",
"label": "FreeRTOS SDK for MIMXRT1050-EVK",
"optional": false,

View File

@@ -21,7 +21,11 @@ constexpr auto armgcc_mimxrt1060_evk_baremetal_json = R"(
"cmakeVar": "MCUXPRESSO_IDE_PATH",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -45,6 +49,10 @@ constexpr auto armgcc_mimxrt1060_evk_baremetal_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {

View File

@@ -22,10 +22,11 @@ constexpr auto armgcc_mimxrt1064_evk_baremetal_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -49,6 +50,10 @@ constexpr auto armgcc_mimxrt1064_evk_baremetal_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {

View File

@@ -22,10 +22,11 @@ constexpr auto armgcc_mimxrt1064_evk_freertos_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -49,6 +50,10 @@ constexpr auto armgcc_mimxrt1064_evk_freertos_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {
@@ -80,7 +85,7 @@ constexpr auto armgcc_mimxrt1064_evk_freertos_json = R"(
"freeRTOS": {
"cmakeVar": "FREERTOS_DIR",
"defaultValue": "%{QUL_BOARD_SDK_DIR}/rtos/freertos/freertos_kernel",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"envVar": "IMXRT1064_FREERTOS_DIR",
"label": "FreeRTOS SDK for MIMXRT1064-EVK",
"optional": false,

View File

@@ -22,10 +22,11 @@ constexpr auto armgcc_mimxrt1170_evk_freertos_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -49,6 +50,10 @@ constexpr auto armgcc_mimxrt1170_evk_freertos_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {
@@ -81,7 +86,7 @@ constexpr auto armgcc_mimxrt1170_evk_freertos_json = R"(
"envVar": "EVK_MIMXRT1170_FREERTOS_PATH",
"label": "FreeRTOS SDK for MIMXRT1170-EVK",
"defaultValue": "%{QUL_BOARD_SDK_DIR}/rtos/freertos/freertos_kernel",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"type": "path",
"optional": false
}

View File

@@ -21,7 +21,11 @@ constexpr auto armgcc_stm32f469i_discovery_baremetal_json = R"(
"setting": "Stm32CubeProgrammer",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/",
"unix": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
"linux": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
},
"detectionPath": {
"windows": "bin/STM32_Programmer_CLI.exe",
"linux": "bin/STM32_Programmer.sh"
},
"optional": false,
"addToSystemPath": true
@@ -45,6 +49,10 @@ constexpr auto armgcc_stm32f469i_discovery_baremetal_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {

View File

@@ -21,7 +21,11 @@ constexpr auto armgcc_stm32f769i_discovery_baremetal_json = R"(
"setting": "Stm32CubeProgrammer",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/",
"unix": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
"linux": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
},
"detectionPath": {
"windows": "bin/STM32_Programmer_CLI.exe",
"linux": "bin/STM32_Programmer.sh"
},
"optional": false,
"addToSystemPath": true
@@ -45,6 +49,10 @@ constexpr auto armgcc_stm32f769i_discovery_baremetal_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {

View File

@@ -21,7 +21,11 @@ constexpr auto armgcc_stm32f769i_discovery_freertos_json = R"(
"setting": "Stm32CubeProgrammer",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/",
"unix": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
"linux": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
},
"detectionPath": {
"windows": "bin/STM32_Programmer_CLI.exe",
"linux": "bin/STM32_Programmer.sh"
},
"optional": false,
"addToSystemPath": true
@@ -45,6 +49,10 @@ constexpr auto armgcc_stm32f769i_discovery_freertos_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {
@@ -78,7 +86,7 @@ constexpr auto armgcc_stm32f769i_discovery_freertos_json = R"(
"label": "FreeRTOS SDK for STM32F769I-Discovery",
"cmakeVar": "FREERTOS_DIR",
"defaultValue": "%{QUL_BOARD_SDK_DIR}/Middlewares/Third_Party/FreeRTOS/Source",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"type": "path",
"setting": "FreeRTOSSourcePackage_STM32F7",
"optional": false

View File

@@ -21,7 +21,11 @@ constexpr auto armgcc_stm32h750b_discovery_baremetal_json = R"(
"setting": "Stm32CubeProgrammer",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/",
"unix": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
"linux": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
},
"detectionPath": {
"windows": "bin/STM32_Programmer_CLI.exe",
"linux": "bin/STM32_Programmer.sh"
},
"optional": false,
"addToSystemPath": true
@@ -45,6 +49,10 @@ constexpr auto armgcc_stm32h750b_discovery_baremetal_json = R"(
"filePattern": "bin/arm-none-eabi-g++",
"executableArgs": "--version",
"regex": "\\bv(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {

View File

@@ -91,7 +91,7 @@ constexpr auto mulitple_toolchain_versions = R"(
"setting": "Stm32CubeProgrammer",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/",
"unix": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
"linux": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
},
"optional": false
}

View File

@@ -23,7 +23,11 @@ constexpr auto ghs_rh850_d1m1a_baremetal_json = R"(
"cmakeVar": "RENESAS_FLASH_PROGRAMMER_PATH",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/Renesas Electronics/Programming Tools/Renesas Flash Programmer V3.09",
"unix": "%{Env:HOME}"
"linux": "%{Env:HOME}"
},
"detectionPath": {
"windows": "rfp-cli.exe",
"linux": "rfp-cli"
},
"envVar": "RENESAS_FLASH_PROGRAMMER_PATH",
"optional": true,

View File

@@ -22,7 +22,7 @@ constexpr auto iar_ek_ra6m3g_baremetal_json = R"(
"type": "path",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/SEGGER/JLink",
"unix": "/opt/SEGGER/JLink"
"linux": "/opt/SEGGER/JLink"
},
"optional": true,
"addToSystemPath": true
@@ -45,7 +45,12 @@ constexpr auto iar_ek_ra6m3g_baremetal_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",

View File

@@ -22,7 +22,7 @@ constexpr auto iar_ek_ra6m3g_freertos_json = R"(
"type": "path",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/SEGGER/JLink",
"unix": "/opt/SEGGER/JLink"
"linux": "/opt/SEGGER/JLink"
},
"optional": true,
"addToSystemPath": true
@@ -45,7 +45,12 @@ constexpr auto iar_ek_ra6m3g_freertos_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",
@@ -73,7 +78,7 @@ constexpr auto iar_ek_ra6m3g_freertos_json = R"(
"label": "FreeRTOS SDK for EK-RA6M3G",
"cmakeVar": "FREERTOS_DIR",
"defaultValue": "%{Qul_ROOT}/platform/boards/renesas/ek-ra6m3g-common/3rdparty/freertos",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"type": "path",
"optional": false
}

View File

@@ -30,7 +30,12 @@ constexpr auto iar_example_baremetal_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",

View File

@@ -22,10 +22,11 @@ constexpr auto iar_mimxrt1050_evk_baremetal_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -48,7 +49,12 @@ constexpr auto iar_mimxrt1050_evk_baremetal_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",

View File

@@ -22,10 +22,11 @@ constexpr auto iar_mimxrt1050_evk_freertos_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -48,7 +49,12 @@ constexpr auto iar_mimxrt1050_evk_freertos_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",
@@ -79,7 +85,7 @@ constexpr auto iar_mimxrt1050_evk_freertos_json = R"(
"freeRTOS": {
"cmakeVar": "FREERTOS_DIR",
"defaultValue": "%{QUL_BOARD_SDK_DIR}/rtos/freertos/freertos_kernel",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"envVar": "IMXRT1050_FREERTOS_DIR",
"label": "FreeRTOS SDK for MIMXRT1050-EVK",
"optional": false,

View File

@@ -22,10 +22,11 @@ constexpr auto iar_mimxrt1060_evk_baremetal_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -48,7 +49,12 @@ constexpr auto iar_mimxrt1060_evk_baremetal_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",

View File

@@ -22,10 +22,11 @@ constexpr auto iar_mimxrt1064_evk_baremetal_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -48,7 +49,12 @@ constexpr auto iar_mimxrt1064_evk_baremetal_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",

View File

@@ -22,10 +22,11 @@ constexpr auto iar_mimxrt1064_evk_freertos_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -48,7 +49,12 @@ constexpr auto iar_mimxrt1064_evk_freertos_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",
@@ -79,7 +85,7 @@ constexpr auto iar_mimxrt1064_evk_freertos_json = R"(
"freeRTOS": {
"cmakeVar": "FREERTOS_DIR",
"defaultValue": "%{QUL_BOARD_SDK_DIR}/rtos/freertos/freertos_kernel",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"envVar": "IMXRT1064_FREERTOS_DIR",
"label": "FreeRTOS SDK for MIMXRT1064-EVK",
"optional": false,

View File

@@ -22,10 +22,11 @@ constexpr auto iar_mimxrt1170_evk_freertos_json = R"(
"setting": "MCUXpressoIDE",
"defaultValue": {
"windows": "%{Env:ROOT}/nxp/MCUXpressoIDE*",
"unix": "/usr/local/mcuxpressoide/"
"linux": "/usr/local/mcuxpressoide/"
},
"versionDetection": {
"filePattern": "ide/binaries/crt_emu_cm_redlink"
"detectionPath": {
"windows": "ide/binaries/crt_emu_cm_redlink.exe",
"linux": "ide/binaries/crt_emu_cm_redlink"
},
"optional": false,
"addToSystemPath": true
@@ -48,7 +49,12 @@ constexpr auto iar_mimxrt1170_evk_freertos_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",
@@ -80,7 +86,7 @@ constexpr auto iar_mimxrt1170_evk_freertos_json = R"(
"envVar": "EVK_MIMXRT1170_FREERTOS_PATH",
"label": "FreeRTOS SDK for MIMXRT1170-EVK",
"defaultValue": "%{QUL_BOARD_SDK_DIR}/rtos/freertos/freertos_kernel",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"type": "path",
"optional": false
}

View File

@@ -21,7 +21,11 @@ constexpr auto iar_stm32f469i_discovery_baremetal_json = R"(
"setting": "Stm32CubeProgrammer",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/",
"unix": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
"linux": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
},
"detectionPath": {
"windows": "bin/STM32_Programmer_CLI.exe",
"linux": "bin/STM32_Programmer.sh"
},
"optional": false,
"addToSystemPath": true
@@ -44,7 +48,12 @@ constexpr auto iar_stm32f469i_discovery_baremetal_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",

View File

@@ -21,7 +21,11 @@ constexpr auto iar_stm32f769i_discovery_baremetal_json = R"(
"setting": "Stm32CubeProgrammer",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/",
"unix": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
"linux": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
},
"detectionPath": {
"windows": "bin/STM32_Programmer_CLI.exe",
"linux": "bin/STM32_Programmer.sh"
},
"optional": false,
"addToSystemPath": true
@@ -44,7 +48,12 @@ constexpr auto iar_stm32f769i_discovery_baremetal_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",

View File

@@ -21,7 +21,11 @@ constexpr auto iar_stm32f769i_discovery_freertos_json = R"(
"setting": "Stm32CubeProgrammer",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/",
"unix": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
"linux": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
},
"detectionPath": {
"windows": "bin/STM32_Programmer_CLI.exe",
"linux": "bin/STM32_Programmer.sh"
},
"optional": false,
"addToSystemPath": true
@@ -44,7 +48,12 @@ constexpr auto iar_stm32f769i_discovery_freertos_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",
@@ -77,7 +86,7 @@ constexpr auto iar_stm32f769i_discovery_freertos_json = R"(
"label": "FreeRTOS SDK for STM32F769I-Discovery",
"cmakeVar": "FREERTOS_DIR",
"defaultValue": "%{QUL_BOARD_SDK_DIR}/Middlewares/Third_Party/FreeRTOS/Source",
"validation": "tasks.c",
"detectionPath": "tasks.c",
"type": "path",
"setting": "FreeRTOSSourcePackage_STM32F7",
"optional": false

View File

@@ -21,7 +21,11 @@ constexpr auto iar_stm32h750b_discovery_baremetal_json = R"(
"setting": "Stm32CubeProgrammer",
"defaultValue": {
"windows": "%{Env:PROGRAMSANDFILES}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/",
"unix": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
"linux": "%{Env:HOME}/STMicroelectronics/STM32Cube/STM32CubeProgrammer/"
},
"detectionPath": {
"windows": "bin/STM32_Programmer_CLI.exe",
"linux": "bin/STM32_Programmer.sh"
},
"optional": false,
"addToSystemPath": true
@@ -44,7 +48,12 @@ constexpr auto iar_stm32h750b_discovery_baremetal_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",

View File

@@ -40,7 +40,9 @@ constexpr auto iar_tviic2d6m_baremetal_json = R"(
"filePattern": "bin/iccarm",
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
}
},
"detectionPath": "bin/iccarm.exe",
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",

View File

@@ -132,18 +132,21 @@ const char xpressoIdeLabel[]{"MCUXpresso IDE"};
const char xpressoIdeSetting[]{"MCUXpressoIDE"};
const char xpressoIdeCmakeVar[]{"MCUXPRESSO_IDE_PATH"};
const char xpressoIdeEnvVar[]{"MCUXpressoIDE_PATH"};
const char xpressoIdeDetectionPath[]{"ide/binaries/crt_emu_cm_redlink"};
const QString xpressoIdeDetectionPath{
HostOsInfo::withExecutableSuffix("ide/binaries/crt_emu_cm_redlink")};
const char stmCubeProgrammerSetting[]{"Stm32CubeProgrammer"};
const char stmCubeProgrammerLabel[]{"STM32CubeProgrammer"};
const QString stmCubeProgrammerPath{QString{defaultToolPath} + "/bin"};
const QString stmCubeProgrammerDetectionPath{"/bin/STM32_Programmer.sh"};
const QString stmCubeProgrammerDetectionPath{HostOsInfo::isWindowsHost()
? QString("bin/STM32_Programmer_CLI.exe")
: QString("bin/STM32_Programmer.sh")};
const char renesasProgrammerSetting[]{"RenesasFlashProgrammer"};
const char renesasProgrammerCmakeVar[]{"RENESAS_FLASH_PROGRAMMER_PATH"};
const QString renesasProgrammerEnvVar{renesasProgrammerCmakeVar};
const char renesasProgrammerLabel[]{"Renesas Flash Programmer"};
const char renesasProgrammerDetectionPath[]{"rfp-cli"};
const QString renesasProgrammerDetectionPath{HostOsInfo::withExecutableSuffix("rfp-cli")};
const char renesasE2StudioCmakeVar[]{"EK_RA6M3G_E2_PROJECT_PATH"};
const char renesasE2StudioDefaultPath[]{"%{Env:HOME}/e2_studio/workspace"};
@@ -155,7 +158,7 @@ const char cypressProgrammerSetting[]{"CypressAutoFlashUtil"};
const char cypressProgrammerCmakeVar[]{"INFINEON_AUTO_FLASH_UTILITY_DIR"};
const char cypressProgrammerEnvVar[]{"CYPRESS_AUTO_FLASH_UTILITY_DIR"};
const char cypressProgrammerLabel[]{"Cypress Auto Flash Utility"};
const char cypressProgrammerDetectionPath[]{"/bin/openocd"};
const QString cypressProgrammerDetectionPath{HostOsInfo::withExecutableSuffix("/bin/openocd")};
const char jlinkPath[]{"/opt/SEGGER/JLink"};
const char jlinkSetting[]{"JLinkPath"};
@@ -1527,6 +1530,7 @@ void McuSupportTest::test_createThirdPartyPackage()
QFETCH(QString, cmakeVar);
QFETCH(QString, envVar);
QFETCH(QString, label);
QFETCH(QString, detectionPath);
McuTargetDescription targetDescription{parseDescriptionJson(json.toLocal8Bit())};
@@ -1544,7 +1548,15 @@ void McuSupportTest::test_createThirdPartyPackage()
return (pkg->settingsKey() == setting);
});
verifyPackage(thirdPartyPackage, path, defaultPath, setting, cmakeVar, envVar, label, {}, {});
verifyPackage(thirdPartyPackage,
path,
defaultPath,
setting,
cmakeVar,
envVar,
label,
detectionPath,
{});
}
void McuSupportTest::test_legacy_createCypressProgrammer3rdPartyPackage()
@@ -1594,15 +1606,20 @@ void McuSupportTest::test_createJLink3rdPartyPackage()
{});
}
void McuSupportTest::test_defaultValueForEachOperationSystem()
void McuSupportTest::test_differentValueForEachOperationSystem()
{
const auto packageDescription = parseDescriptionJson(armgcc_mimxrt1050_evk_freertos_json);
auto default_path_entry = packageDescription.platform.entries[0].defaultPath.toString();
auto validation_path_entry = packageDescription.platform.entries[0].detectionPath.toString();
if (HostOsInfo::isWindowsHost())
//TODO: Revisit whether this test is required and not currently covered by the third party packages
if (HostOsInfo::isWindowsHost()) {
QCOMPARE(QString("%{Env:ROOT}/nxp/MCUXpressoIDE*"), default_path_entry);
else
QCOMPARE(QString("ide/binaries/crt_emu_cm_redlink.exe"), validation_path_entry);
} else {
QCOMPARE(QString("/usr/local/mcuxpressoide"), default_path_entry);
QCOMPARE(QString("ide/binaries/crt_emu_cm_redlink"), validation_path_entry);
}
};
void McuSupportTest::test_addToSystemPathFlag()
{

View File

@@ -100,7 +100,7 @@ private slots:
void test_legacy_createCypressProgrammer3rdPartyPackage();
void test_createJLink3rdPartyPackage();
void test_defaultValueForEachOperationSystem();
void test_differentValueForEachOperationSystem();
void test_addToSystemPathFlag();
private: