This adds a new GEN_ABSOLUTE_SYM_KCONFIG() specifically for generating absolute symbols in assembly for kconfig values. This is needed as the existing GEN_ABSOLUTE_SYM() with constraints in extended assembly parses the "value" as signed 32-bit integers. An unsigned 32-bit integer with MSB set results in a negative number in the final binary. This also prevents integers larger than 32-bit. So this new macro simply puts the value inline within the assembly instrcution instead of having it as parameter. Fixes #31562 Signed-off-by: Daniel Leung <daniel.leung@intel.com>
19 lines
620 B
CMake
19 lines
620 B
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
set(CONFIGS_C ${CMAKE_CURRENT_BINARY_DIR}/misc/generated/configs.c)
|
|
|
|
file(STRINGS
|
|
${AUTOCONF_H}
|
|
LIST_OF_CONFIGS
|
|
REGEX "^#define CONFIG_"
|
|
ENCODING "UTF-8"
|
|
)
|
|
foreach (CONFIG ${LIST_OF_CONFIGS})
|
|
string(REGEX REPLACE "#define (CONFIG_[A-Z|_|0-9]*) (.*)" "GEN_ABSOLUTE_SYM_KCONFIG(\\1, \\2)" CONFIG ${CONFIG})
|
|
string(REGEX REPLACE "\"(.*)\"" "1" CONFIG ${CONFIG})
|
|
set(GEN_ABS_SYM_LIST "${GEN_ABS_SYM_LIST}${CONFIG};\n")
|
|
endforeach()
|
|
|
|
configure_file(${CMAKE_CURRENT_LIST_DIR}/configs.c.in ${CONFIGS_C})
|
|
zephyr_sources( ${CONFIGS_C})
|