diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp index 9b01ceefe57..f3d54d99398 100644 --- a/src/plugins/mcusupport/mcusupportsdk.cpp +++ b/src/plugins/mcusupport/mcusupportsdk.cpp @@ -144,7 +144,7 @@ McuPackagePtr createFreeRTOSSourcesPackage(const SettingsHandler::Ptr &settingsH new McuPackage(settingsHandler, QString::fromLatin1("FreeRTOS Sources (%1)").arg(envVarPrefix), defaultPath, - {}, // detection path + "tasks.c", // detection path QString{Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(envVarPrefix), "FREERTOS_DIR", // cmake var envVar, // env var diff --git a/src/plugins/mcusupport/test/armgcc_nxp_1050_json.h b/src/plugins/mcusupport/test/armgcc_nxp_1050_json.h index 8638c5ede6f..d153add6c1c 100644 --- a/src/plugins/mcusupport/test/armgcc_nxp_1050_json.h +++ b/src/plugins/mcusupport/test/armgcc_nxp_1050_json.h @@ -80,6 +80,7 @@ constexpr auto armgcc_nxp_1050_json = R"({ "freeRTOS": { "cmakeVar": "FREERTOS_DIR", "defaultValue": "%{QUL_BOARD_SDK_DIR}/rtos/freertos/freertos_kernel", + "validation": "tasks.c", "envVar": "IMXRT1050_FREERTOS_DIR", "label": "FreeRTOS SDK for MIMXRT1050-EVK", "optional": false, diff --git a/src/plugins/mcusupport/test/armgcc_nxp_1064_json.h b/src/plugins/mcusupport/test/armgcc_nxp_1064_json.h index 6a95c243059..294b7734f42 100644 --- a/src/plugins/mcusupport/test/armgcc_nxp_1064_json.h +++ b/src/plugins/mcusupport/test/armgcc_nxp_1064_json.h @@ -18,6 +18,7 @@ constexpr auto armgcc_nxp_1064_json = R"( "freeRTOS": { "cmakeVar": "FREERTOS_DIR", "defaultValue": "%{QUL_BOARD_SDK_DIR}/rtos/freertos/freertos_kernel", + "validation": "tasks.c", "envVar": "IMXRT1064_FREERTOS_DIR", "label": "FreeRTOS SDK for MIMXRT1064-EVK", "optional": false, diff --git a/src/plugins/mcusupport/test/armgcc_stm32f769i_freertos_json.h b/src/plugins/mcusupport/test/armgcc_stm32f769i_freertos_json.h index c25eaf87bb6..6a64bca784a 100644 --- a/src/plugins/mcusupport/test/armgcc_stm32f769i_freertos_json.h +++ b/src/plugins/mcusupport/test/armgcc_stm32f769i_freertos_json.h @@ -86,6 +86,7 @@ constexpr auto armgcc_stm32f769i_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", "type": "path", "setting": "FreeRTOSSourcePackage_STM32F7", "optional": false diff --git a/src/plugins/mcusupport/test/iar_nxp_1064_json.h b/src/plugins/mcusupport/test/iar_nxp_1064_json.h index 8e8fdc4c953..2c34bc2a544 100644 --- a/src/plugins/mcusupport/test/iar_nxp_1064_json.h +++ b/src/plugins/mcusupport/test/iar_nxp_1064_json.h @@ -25,6 +25,7 @@ constexpr auto iar_nxp_1064_json = R"({ "freeRTOS": { "cmakeVar": "FREERTOS_DIR", "defaultValue": "%{QUL_BOARD_SDK_DIR}/rtos/freertos/freertos_kernel", + "validation": "tasks.c", "envVar": "IMXRT1064_FREERTOS_DIR", "id": "NXP_FREERTOS_DIR", "label": "FreeRTOS SDK for MIMXRT1064-EVK", diff --git a/src/plugins/mcusupport/test/unittest.cpp b/src/plugins/mcusupport/test/unittest.cpp index ce2122dc0cd..59280f97e1c 100644 --- a/src/plugins/mcusupport/test/unittest.cpp +++ b/src/plugins/mcusupport/test/unittest.cpp @@ -97,6 +97,7 @@ const char freeRtosCMakeVar[]{"FREERTOS_DIR"}; const char freeRtosEnvVar[]{"EVK_MIMXRT1170_FREERTOS_PATH"}; const char freeRtosLabel[]{"FreeRTOS directory"}; const char freeRtosPath[]{"/opt/freertos/default"}; +const char freeRtosDetectionPath[]{"tasks.c"}; const char freeRtosNxpPathSuffix[]{"rtos/freertos/freertos_kernel"}; const char freeRtosStmPathSuffix[]{"/Middlewares/Third_Party/FreeRTOS/Source"}; const char freeRtosSetting[]{"Freertos"}; @@ -273,6 +274,7 @@ void verifyFreeRtosPackage(const McuPackagePtr &freeRtos, const QString &envVar, const FilePath &boardSdkDir, const QString &freeRtosPath, + const QString &freeRtosDetectionPath, const QString &expectedSettingsKey) { QVERIFY(freeRtos); @@ -280,6 +282,7 @@ void verifyFreeRtosPackage(const McuPackagePtr &freeRtos, QCOMPARE(freeRtos->cmakeVariableName(), freeRtosCMakeVar); QCOMPARE(freeRtos->settingsKey(), expectedSettingsKey); QCOMPARE(freeRtos->path().cleanPath().toString(), freeRtosPath); + QCOMPARE(freeRtos->detectionPath().cleanPath().toString(), freeRtosDetectionPath); QVERIFY(freeRtos->path().toString().startsWith(boardSdkDir.cleanPath().toString())); } @@ -613,7 +616,7 @@ void McuSupportTest::test_createTargets() freeRtosSetting, freeRtosLabel, freeRtosPath, - "", + freeRtosDetectionPath, {}, VersionDetection{}, true}; @@ -665,7 +668,7 @@ void McuSupportTest::test_createPackages() freeRtosLabel, freeRtosSetting, freeRtosPath, - "", + freeRtosDetectionPath, {}, VersionDetection{}, true}; @@ -962,23 +965,28 @@ void McuSupportTest::test_legacy_createFreeRtosPackage_data() QTest::addColumn("versions"); QTest::addColumn("expectedSettingsKey"); QTest::addColumn("expectedPath"); + QTest::addColumn("expectedDetectionPath"); QTest::newRow("armgcc_nxp_1050_json") << armgcc_nxp_1050_json << QStringList{boardSdkVersion} << QString{Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(nxp1050) - << FilePath::fromUserInput(boardSdkDir) / freeRtosNxpPathSuffix; + << FilePath::fromUserInput(boardSdkDir) / freeRtosNxpPathSuffix + << FilePath::fromUserInput(freeRtosDetectionPath); QTest::newRow("armgcc_nxp_1064_json") << armgcc_nxp_1064_json << QStringList{boardSdkVersion} << QString{Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(nxp1064) - << FilePath::fromUserInput(boardSdkDir) / freeRtosNxpPathSuffix; + << FilePath::fromUserInput(boardSdkDir) / freeRtosNxpPathSuffix + << FilePath::fromUserInput(freeRtosDetectionPath); QTest::newRow("iar_nxp_1064_json") << iar_nxp_1064_json << QStringList{boardSdkVersion} << QString{Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(nxp1064) - << FilePath::fromUserInput(boardSdkDir) / freeRtosNxpPathSuffix; + << FilePath::fromUserInput(boardSdkDir) / freeRtosNxpPathSuffix + << FilePath::fromUserInput(freeRtosDetectionPath); QTest::newRow("armgcc_stm32f769i_freertos_json") << armgcc_stm32f769i_freertos_json << QStringList{"1.16.0"} << QString{Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX}.append(stm32f7) - << FilePath::fromUserInput(boardSdkDir) / freeRtosStmPathSuffix; + << FilePath::fromUserInput(boardSdkDir) / freeRtosStmPathSuffix + << FilePath::fromUserInput(freeRtosDetectionPath); } void McuSupportTest::test_legacy_createFreeRtosPackage() @@ -987,6 +995,7 @@ void McuSupportTest::test_legacy_createFreeRtosPackage() QFETCH(QStringList, versions); QFETCH(QString, expectedSettingsKey); QFETCH(FilePath, expectedPath); + QFETCH(FilePath, expectedDetectionPath); McuTargetDescription targetDescription{parseDescriptionJson(json.toLocal8Bit())}; @@ -1000,6 +1009,7 @@ void McuSupportTest::test_legacy_createFreeRtosPackage() targetDescription.freeRTOS.envVar, boardSdkDir, expectedPath.toUserOutput(), + expectedDetectionPath.toUserOutput(), expectedSettingsKey); } @@ -1014,6 +1024,7 @@ void McuSupportTest::test_createFreeRtosPackage() QFETCH(QStringList, versions); QFETCH(QString, expectedSettingsKey); QFETCH(FilePath, expectedPath); + QFETCH(FilePath, expectedDetectionPath); McuTargetDescription targetDescription{parseDescriptionJson(json.toLocal8Bit())}; @@ -1030,6 +1041,7 @@ void McuSupportTest::test_createFreeRtosPackage() targetDescription.freeRTOS.envVar, boardSdkDir, expectedPath.toUserOutput(), + expectedDetectionPath.toUserOutput(), expectedSettingsKey); }