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>
This commit is contained in:
Torsten Rasmussen 2021-01-26 20:29:03 +01:00 committed by Anas Nashif
commit d24ca1be1b

View file

@ -85,6 +85,8 @@ endforeach()
# A list of common environment settings used when invoking Kconfig during CMake # A list of common environment settings used when invoking Kconfig during CMake
# configure time or menuconfig and related build target. # configure time or menuconfig and related build target.
string(REPLACE ";" "\\\;" SHIELD_AS_LIST_ESCAPED "${SHIELD_AS_LIST}")
set(COMMON_KCONFIG_ENV_SETTINGS set(COMMON_KCONFIG_ENV_SETTINGS
PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
srctree=${ZEPHYR_BASE} srctree=${ZEPHYR_BASE}
@ -95,7 +97,6 @@ set(COMMON_KCONFIG_ENV_SETTINGS
ARCH=${ARCH} ARCH=${ARCH}
ARCH_DIR=${ARCH_DIR} ARCH_DIR=${ARCH_DIR}
BOARD_DIR=${BOARD_DIR} BOARD_DIR=${BOARD_DIR}
SHIELD_AS_LIST=${SHIELD_AS_LIST}
KCONFIG_BINARY_DIR=${KCONFIG_BINARY_DIR} KCONFIG_BINARY_DIR=${KCONFIG_BINARY_DIR}
TOOLCHAIN_KCONFIG_DIR=${TOOLCHAIN_KCONFIG_DIR} TOOLCHAIN_KCONFIG_DIR=${TOOLCHAIN_KCONFIG_DIR}
EDT_PICKLE=${EDT_PICKLE} EDT_PICKLE=${EDT_PICKLE}
@ -136,6 +137,7 @@ foreach(kconfig_target
ZEPHYR_BASE=${ZEPHYR_BASE} ZEPHYR_BASE=${ZEPHYR_BASE}
ZEPHYR_TOOLCHAIN_VARIANT=${ZEPHYR_TOOLCHAIN_VARIANT} ZEPHYR_TOOLCHAIN_VARIANT=${ZEPHYR_TOOLCHAIN_VARIANT}
${COMMON_KCONFIG_ENV_SETTINGS} ${COMMON_KCONFIG_ENV_SETTINGS}
"SHIELD_AS_LIST=${SHIELD_AS_LIST_ESCAPED}"
EXTRA_DTC_FLAGS=${EXTRA_DTC_FLAGS} EXTRA_DTC_FLAGS=${EXTRA_DTC_FLAGS}
DTS_POST_CPP=${DTS_POST_CPP} DTS_POST_CPP=${DTS_POST_CPP}
DTS_ROOT_BINDINGS=${DTS_ROOT_BINDINGS} DTS_ROOT_BINDINGS=${DTS_ROOT_BINDINGS}
@ -244,6 +246,7 @@ endif()
execute_process( execute_process(
COMMAND ${CMAKE_COMMAND} -E env COMMAND ${CMAKE_COMMAND} -E env
${COMMON_KCONFIG_ENV_SETTINGS} ${COMMON_KCONFIG_ENV_SETTINGS}
SHIELD_AS_LIST=${SHIELD_AS_LIST_ESCAPED}
${PYTHON_EXECUTABLE} ${PYTHON_EXECUTABLE}
${ZEPHYR_BASE}/scripts/kconfig/kconfig.py ${ZEPHYR_BASE}/scripts/kconfig/kconfig.py
--zephyr-base=${ZEPHYR_BASE} --zephyr-base=${ZEPHYR_BASE}