From c32488f97bd2a681bf7a8663193b7aaebb60d983 Mon Sep 17 00:00:00 2001 From: Chris Friedt Date: Mon, 12 May 2025 22:32:06 -0400 Subject: [PATCH] cmake: kconfig: auto-generate boolean board revision option Automatically generate a boolean CONFIG_BOARD_REVISION_FOO=y Kconfig option based on e.g. CONFIG_BOARD_REVISION="foo". Signed-off-by: Chris Friedt --- cmake/modules/kconfig.cmake | 8 ++++++++ scripts/ci/check_compliance.py | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cmake/modules/kconfig.cmake b/cmake/modules/kconfig.cmake index d4d22508d0b..65b3bbb0382 100644 --- a/cmake/modules/kconfig.cmake +++ b/cmake/modules/kconfig.cmake @@ -66,6 +66,14 @@ if(DEFINED BOARD_REVISION) message(DEPRECATION "Use of '${board_rev_file}.conf' is deprecated, please switch to '${board_rev_file}_defconfig'") set_ifndef(BOARD_REVISION_CONFIG ${BOARD_DIR}/${board_rev_file}.conf) endif() + + # Generate boolean board revision kconfig option + zephyr_string(SANITIZE TOUPPER BOARD_REVISION_GEN_CONFIG_VAR "BOARD_REVISION_${BOARD_REVISION}") + + file(APPEND ${KCONFIG_BOARD_DIR}/Kconfig + "config ${BOARD_REVISION_GEN_CONFIG_VAR}\n" + "\tdef_bool y\n" + ) endif() set(DOTCONFIG ${PROJECT_BINARY_DIR}/.config) diff --git a/scripts/ci/check_compliance.py b/scripts/ci/check_compliance.py index 427bd2acdf1..cd97ea96717 100755 --- a/scripts/ci/check_compliance.py +++ b/scripts/ci/check_compliance.py @@ -971,7 +971,8 @@ Missing SoC names or CONFIG_SOC vs soc.yml out of sync: sym_name = sym_name[len(self.CONFIG_):] # Strip CONFIG_ if sym_name not in defined_syms and \ sym_name not in self.UNDEF_KCONFIG_ALLOWLIST and \ - not (sym_name.endswith("_MODULE") and sym_name[:-7] in defined_syms): + not (sym_name.endswith("_MODULE") and sym_name[:-7] in defined_syms) \ + and not sym_name.startswith("BOARD_REVISION_"): undef_to_locs[sym_name].append(f"{path}:{lineno}")