forked from qt-creator/qt-creator
McuSupport: Evaluate cmake variables in paths
Change-Id: I04dd77bd5420e57903afe281e6e2601782795909 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -29,7 +29,8 @@ namespace McuSupport::Internal::Legacy::Constants {
|
|||||||
|
|
||||||
const char QT_FOR_MCUS_SDK_PACKAGE_VALIDATION_PATH[] = "bin/qmltocpp";
|
const char QT_FOR_MCUS_SDK_PACKAGE_VALIDATION_PATH[] = "bin/qmltocpp";
|
||||||
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_DIR";
|
||||||
|
const char QUL_CMAKE_VAR[] = "Qul_ROOT";
|
||||||
const char QUL_LABEL[] = "Qt for MCUs SDK";
|
const char QUL_LABEL[] = "Qt for MCUs SDK";
|
||||||
const char BOARD_SDK_CMAKE_VAR[] = "QUL_BOARD_SDK_DIR";
|
const char BOARD_SDK_CMAKE_VAR[] = "QUL_BOARD_SDK_DIR";
|
||||||
const char SETTINGS_KEY_FREERTOS_PREFIX[]{"FreeRTOSSourcePackage_"};
|
const char SETTINGS_KEY_FREERTOS_PREFIX[]{"FreeRTOSSourcePackage_"};
|
||||||
|
@@ -81,8 +81,8 @@ static void evaluateVariables(McuTarget &target)
|
|||||||
|
|
||||||
McuPackagePtr packageDefiningVariable{
|
McuPackagePtr packageDefiningVariable{
|
||||||
Utils::findOrDefault(target.packages(), [variable](const McuPackagePtr &pkg) {
|
Utils::findOrDefault(target.packages(), [variable](const McuPackagePtr &pkg) {
|
||||||
return pkg->cmakeVariableName() == variable;
|
return pkg->cmakeVariableName() == variable
|
||||||
// return pkg->cmakeVariableName() == variable || pkg->environmentVariableName() == variable;
|
|| pkg->environmentVariableName() == variable;
|
||||||
})};
|
})};
|
||||||
|
|
||||||
if (packageDefiningVariable == nullptr) // nothing provides the variable
|
if (packageDefiningVariable == nullptr) // nothing provides the variable
|
||||||
|
@@ -70,6 +70,27 @@
|
|||||||
|
|
||||||
namespace McuSupport::Internal::Test {
|
namespace McuSupport::Internal::Test {
|
||||||
|
|
||||||
|
using namespace Utils;
|
||||||
|
using Legacy::Constants::BOARD_SDK_CMAKE_VAR;
|
||||||
|
using Legacy::Constants::QT_FOR_MCUS_SDK_PACKAGE_VALIDATION_PATH;
|
||||||
|
using Legacy::Constants::QUL_CMAKE_VAR;
|
||||||
|
using Legacy::Constants::QUL_ENV_VAR;
|
||||||
|
using Legacy::Constants::QUL_LABEL;
|
||||||
|
using Legacy::Constants::SETTINGS_KEY_FREERTOS_PREFIX;
|
||||||
|
using Legacy::Constants::TOOLCHAIN_DIR_CMAKE_VARIABLE;
|
||||||
|
using Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE;
|
||||||
|
|
||||||
|
using CMakeProjectManager::CMakeConfigItem;
|
||||||
|
using CMakeProjectManager::CMakeConfigurationKitAspect;
|
||||||
|
using ProjectExplorer::EnvironmentKitAspect;
|
||||||
|
using ProjectExplorer::Kit;
|
||||||
|
using ProjectExplorer::KitManager;
|
||||||
|
using ProjectExplorer::ToolChain;
|
||||||
|
using ProjectExplorer::ToolChainManager;
|
||||||
|
|
||||||
|
using testing::_;
|
||||||
|
using testing::Return;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
const char empty[]{""};
|
const char empty[]{""};
|
||||||
const char armGcc[]{"armgcc"};
|
const char armGcc[]{"armgcc"};
|
||||||
@@ -157,19 +178,6 @@ const McuTargetDescription::Platform platformDescription{id,
|
|||||||
const Utils::Id cxxLanguageId{ProjectExplorer::Constants::CXX_LANGUAGE_ID};
|
const Utils::Id cxxLanguageId{ProjectExplorer::Constants::CXX_LANGUAGE_ID};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
using namespace Utils;
|
|
||||||
|
|
||||||
using CMakeProjectManager::CMakeConfigItem;
|
|
||||||
using CMakeProjectManager::CMakeConfigurationKitAspect;
|
|
||||||
using ProjectExplorer::EnvironmentKitAspect;
|
|
||||||
using ProjectExplorer::Kit;
|
|
||||||
using ProjectExplorer::KitManager;
|
|
||||||
using ProjectExplorer::ToolChain;
|
|
||||||
using ProjectExplorer::ToolChainManager;
|
|
||||||
|
|
||||||
using testing::_;
|
|
||||||
using testing::Return;
|
|
||||||
|
|
||||||
void verifyIarToolchain(const McuToolChainPackagePtr &iarToolchainPackage)
|
void verifyIarToolchain(const McuToolChainPackagePtr &iarToolchainPackage)
|
||||||
{
|
{
|
||||||
ProjectExplorer::ToolChainFactory toolchainFactory;
|
ProjectExplorer::ToolChainFactory toolchainFactory;
|
||||||
@@ -1143,24 +1151,25 @@ void McuSupportTest::test_passDirectoryVersionDetectorToRenesasBoardSdkPackage()
|
|||||||
QCOMPARE(typeid(*versionDetector).name(), typeid(McuPackageDirectoryVersionDetector).name());
|
QCOMPARE(typeid(*versionDetector).name(), typeid(McuPackageDirectoryVersionDetector).name());
|
||||||
}
|
}
|
||||||
|
|
||||||
void McuSupportTest::test_resolveEnvironmentVariablesInDefaultPaths()
|
void McuSupportTest::test_resolveEnvironmentVariablesInDefaultPath()
|
||||||
{
|
{
|
||||||
QVERIFY(qputenv(qulEnvVar, qtForMcuSdkPath));
|
QVERIFY(qputenv(QUL_ENV_VAR, qtForMcuSdkPath));
|
||||||
QCOMPARE(qEnvironmentVariable(qulEnvVar), qtForMcuSdkPath);
|
QCOMPARE(qEnvironmentVariable(QUL_ENV_VAR), qtForMcuSdkPath);
|
||||||
|
|
||||||
toochainFileDescription.defaultPath = "$Qul_ROOT/lib/cmake/Qul/toolchain/iar.cmake";
|
toochainFileDescription.defaultPath = FilePath::fromUserInput(
|
||||||
|
QString{"$"} + QUL_ENV_VAR + "/lib/cmake/Qul/toolchain/iar.cmake");
|
||||||
targetDescription.toolchain.file = toochainFileDescription;
|
targetDescription.toolchain.file = toochainFileDescription;
|
||||||
|
|
||||||
auto [targets, packages] = targetFactory.createTargets(targetDescription, qtForMcuSdkPath);
|
auto [targets, packages] = targetFactory.createTargets(targetDescription, qtForMcuSdkPath);
|
||||||
auto qtForMCUPkg = findOrDefault(packages, [](const McuPackagePtr &pkg) {
|
auto qtForMCUPkg = findOrDefault(packages, [](const McuPackagePtr &pkg) {
|
||||||
return (pkg->cmakeVariableName() == Legacy::Constants::QUL_ENV_VAR);
|
return pkg->environmentVariableName() == QUL_ENV_VAR;
|
||||||
});
|
});
|
||||||
|
|
||||||
QVERIFY(qtForMCUPkg);
|
QVERIFY(qtForMCUPkg);
|
||||||
QCOMPARE(qtForMCUPkg->path().toString(), qtForMcuSdkPath);
|
QCOMPARE(qtForMCUPkg->path().toString(), qtForMcuSdkPath);
|
||||||
|
|
||||||
auto toolchainFilePkg = findOrDefault(packages, [](const McuPackagePtr &pkg) {
|
auto toolchainFilePkg = findOrDefault(packages, [](const McuPackagePtr &pkg) {
|
||||||
return (pkg->cmakeVariableName() == Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE);
|
return (pkg->cmakeVariableName() == TOOLCHAIN_FILE_CMAKE_VARIABLE);
|
||||||
});
|
});
|
||||||
|
|
||||||
QVERIFY(toolchainFilePkg);
|
QVERIFY(toolchainFilePkg);
|
||||||
@@ -1171,7 +1180,34 @@ void McuSupportTest::test_resolveEnvironmentVariablesInDefaultPaths()
|
|||||||
QVERIFY(toolchainFilePkg->path().toString().startsWith(qtForMcuSdkPath));
|
QVERIFY(toolchainFilePkg->path().toString().startsWith(qtForMcuSdkPath));
|
||||||
QCOMPARE(toolchainFilePkg->defaultPath().toString(), expectedPkgPath);
|
QCOMPARE(toolchainFilePkg->defaultPath().toString(), expectedPkgPath);
|
||||||
|
|
||||||
QVERIFY(qunsetenv(qulEnvVar));
|
QVERIFY(qunsetenv(QUL_ENV_VAR));
|
||||||
|
}
|
||||||
|
|
||||||
|
void McuSupportTest::test_resolveCmakeVariablesInDefaultPath()
|
||||||
|
{
|
||||||
|
toochainFileDescription.defaultPath = FilePath::fromUserInput(
|
||||||
|
QString{"$"} + QUL_CMAKE_VAR + "/lib/cmake/Qul/toolchain/iar.cmake");
|
||||||
|
targetDescription.toolchain.file = toochainFileDescription;
|
||||||
|
|
||||||
|
auto [targets, packages] = targetFactory.createTargets(targetDescription, qtForMcuSdkPath);
|
||||||
|
auto qtForMCUPkg = findOrDefault(packages, [](const McuPackagePtr &pkg) {
|
||||||
|
return pkg->cmakeVariableName() == QUL_CMAKE_VAR;
|
||||||
|
});
|
||||||
|
|
||||||
|
QVERIFY(qtForMCUPkg);
|
||||||
|
QCOMPARE(qtForMCUPkg->path().toString(), qtForMcuSdkPath);
|
||||||
|
|
||||||
|
auto toolchainFilePkg = findOrDefault(packages, [](const McuPackagePtr &pkg) {
|
||||||
|
return (pkg->cmakeVariableName() == TOOLCHAIN_FILE_CMAKE_VARIABLE);
|
||||||
|
});
|
||||||
|
|
||||||
|
QVERIFY(toolchainFilePkg);
|
||||||
|
QVERIFY(targets.size() == 1);
|
||||||
|
|
||||||
|
QString expectedPkgPath = QString{qtForMcuSdkPath} + "/lib/cmake/Qul/toolchain/iar.cmake";
|
||||||
|
QCOMPARE(toolchainFilePkg->path().toString(), expectedPkgPath);
|
||||||
|
QVERIFY(toolchainFilePkg->path().toString().startsWith(qtForMcuSdkPath));
|
||||||
|
QCOMPARE(toolchainFilePkg->defaultPath().toString(), expectedPkgPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace McuSupport::Internal::Test
|
} // namespace McuSupport::Internal::Test
|
||||||
|
@@ -106,7 +106,8 @@ private slots:
|
|||||||
void test_createBoardSdk_data();
|
void test_createBoardSdk_data();
|
||||||
void test_createBoardSdk();
|
void test_createBoardSdk();
|
||||||
|
|
||||||
void test_resolveEnvironmentVariablesInDefaultPaths();
|
void test_resolveEnvironmentVariablesInDefaultPath();
|
||||||
|
void test_resolveCmakeVariablesInDefaultPath();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVersionNumber currentQulVersion{2, 0};
|
QVersionNumber currentQulVersion{2, 0};
|
||||||
|
Reference in New Issue
Block a user