From 2da68d41084e96930bf7d5902f2c2e5b6a981ad0 Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Mon, 31 Oct 2022 09:27:11 +0100 Subject: [PATCH] McuSupport: Only expand variables from the same target There are multiple packages in different targets that share the same variable name (eg. QUL_BOARD_SDK_DIR). Registering all packages into the same macro expander will make these packages overwrite the variables from other packages. The macro expander should only use packages included in a specific target to expand values from (plus the global ones). Change-Id: Ia2568696a54e48e4e77f81a9bb1a844f2910bb8d Reviewed-by: Yasser Grimes Reviewed-by: Eike Ziller Reviewed-by: Qt CI Bot --- src/plugins/mcusupport/mcusupportoptions.cpp | 13 ++++++++----- src/plugins/mcusupport/mcusupportoptions.h | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index 9dead1d5550..25d922bfe8d 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -38,17 +38,20 @@ Macros *McuSdkRepository::globalMacros() void McuSdkRepository::expandVariables() { - auto macroExpander = getMacroExpander(); - for (const auto &package : std::as_const(packages)) - package->setPath(macroExpander->expand(package->path())); + for (const auto &target : std::as_const(mcuTargets)) { + auto macroExpander = getMacroExpander(*target); + for (const auto &package : target->packages()) { + package->setPath(macroExpander->expand(package->path())); + } + } } -MacroExpanderPtr McuSdkRepository::getMacroExpander() +MacroExpanderPtr McuSdkRepository::getMacroExpander(const McuTarget &target) { auto macroExpander = std::make_shared(); //register the macros - for (const auto &package : std::as_const(packages)) { + for (const auto &package : target.packages()) { macroExpander->registerVariable(package->cmakeVariableName().toLocal8Bit(), package->label(), [package] { return package->path().toString(); }); diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h index 220fc54f125..8fddf21ab40 100644 --- a/src/plugins/mcusupport/mcusupportoptions.h +++ b/src/plugins/mcusupport/mcusupportoptions.h @@ -41,7 +41,7 @@ public: Packages packages; void expandVariables(); - MacroExpanderPtr getMacroExpander(); + MacroExpanderPtr getMacroExpander(const McuTarget &target); static Macros *globalMacros(); };