zephyr/misc/generated/CMakeLists.txt
Torsten Rasmussen 52301d97c5 cmake: kconfig: fix issue if Kconfig symbol name contains lower case
Fixes: #40420

If a Kconfig has lower case in its symbol name, then the file configs.c
is wrongly generated.

For example a Kconfig snippet like this:
> config FAIL_this
> 	bool "Test fail"
> 	default y

will create an autoconf.h containing this:
> #define CONFIG_FAIL_this 1

but the configs.c will wrongly contain the same
> #define CONFIG_FAIL_this 1

instead of:
> GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FAIL_this, 1);

which results in following error at compile time
.../build/zephyr/misc/generated/configs.c: In function '_ConfigAbsSyms':
.../build/zephyr/misc/generated/configs.c:309: warning:
    "CONFIG_FAIL_this" redefined
  309 | #define CONFIG_FAIL_this 1;
      |
In file included from <command-line>:
.../build/zephyr/include/generated/autoconf.h:299: note: this is the
  location of the previous definition
  299 | #define CONFIG_FAIL_this 1
      |

The file misc/generated/CMakeLists.txt has been updated to correctly
handled lower casing in Kconfig symbol names.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-11-18 13:56:07 +01:00

19 lines
623 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-Za-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})