cmake: shields: escaping and quoting list when used for env settings
Fixes: #30553
The `;` in a list must be escaped when used as for execute_process and
add_custom_target, as those functions are using `cmake -E env` to setup
correct environment before executing kconfig and menuconfig.
This commits escapes `SHIELD_AS_LIST` variable list correctly before
using it.
Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
diff --git a/cmake/kconfig.cmake b/cmake/kconfig.cmake
index 5cffa64..f6fda19 100644
--- a/cmake/kconfig.cmake
+++ b/cmake/kconfig.cmake
@@ -85,6 +85,8 @@
# A list of common environment settings used when invoking Kconfig during CMake
# configure time or menuconfig and related build target.
+string(REPLACE ";" "\\\;" SHIELD_AS_LIST_ESCAPED "${SHIELD_AS_LIST}")
+
set(COMMON_KCONFIG_ENV_SETTINGS
PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
srctree=${ZEPHYR_BASE}
@@ -95,7 +97,6 @@
ARCH=${ARCH}
ARCH_DIR=${ARCH_DIR}
BOARD_DIR=${BOARD_DIR}
- SHIELD_AS_LIST=${SHIELD_AS_LIST}
KCONFIG_BINARY_DIR=${KCONFIG_BINARY_DIR}
TOOLCHAIN_KCONFIG_DIR=${TOOLCHAIN_KCONFIG_DIR}
EDT_PICKLE=${EDT_PICKLE}
@@ -136,6 +137,7 @@
ZEPHYR_BASE=${ZEPHYR_BASE}
ZEPHYR_TOOLCHAIN_VARIANT=${ZEPHYR_TOOLCHAIN_VARIANT}
${COMMON_KCONFIG_ENV_SETTINGS}
+ "SHIELD_AS_LIST=${SHIELD_AS_LIST_ESCAPED}"
EXTRA_DTC_FLAGS=${EXTRA_DTC_FLAGS}
DTS_POST_CPP=${DTS_POST_CPP}
DTS_ROOT_BINDINGS=${DTS_ROOT_BINDINGS}
@@ -244,6 +246,7 @@
execute_process(
COMMAND ${CMAKE_COMMAND} -E env
${COMMON_KCONFIG_ENV_SETTINGS}
+ SHIELD_AS_LIST=${SHIELD_AS_LIST_ESCAPED}
${PYTHON_EXECUTABLE}
${ZEPHYR_BASE}/scripts/kconfig/kconfig.py
--zephyr-base=${ZEPHYR_BASE}