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}