diff --git a/tools/cmakev2/compat.cmake b/tools/cmakev2/compat.cmake index fdc8df19309..8b3e80f6638 100644 --- a/tools/cmakev2/compat.cmake +++ b/tools/cmakev2/compat.cmake @@ -922,3 +922,27 @@ function(idf_build_component component_dir) PREFIX "${component_prefix}" SOURCE "${component_source}") endfunction() + +#[[ + __import_sdkconfig_as_build_properties() + + Mirror every CONFIG_* symbol from the generated sdkconfig.cmake onto the + build-properties target so that the + `idf_build_get_property(var CONFIG_FOO)` idiom keeps working under the + compatibility shim. Called from kconfig.cmake::__generate_sdkconfig after + each kconfgen run. +#]] +function(__import_sdkconfig_as_build_properties) + idf_build_get_property(sdkconfig_cmake __SDKCONFIG_CMAKE) + if(NOT sdkconfig_cmake OR NOT EXISTS "${sdkconfig_cmake}") + return() + endif() + include("${sdkconfig_cmake}") + if(NOT DEFINED CONFIGS_LIST) + return() + endif() + idf_build_set_property(__CONFIG_VARIABLES "${CONFIGS_LIST}") + foreach(config IN LISTS CONFIGS_LIST) + idf_build_set_property("${config}" "${${config}}") + endforeach() +endfunction() diff --git a/tools/cmakev2/kconfig.cmake b/tools/cmakev2/kconfig.cmake index a5b219bbced..37b3fad896c 100644 --- a/tools/cmakev2/kconfig.cmake +++ b/tools/cmakev2/kconfig.cmake @@ -208,6 +208,10 @@ function(__generate_sdkconfig) # Generate Kconfig outputs __generate_kconfig_outputs() + # Mirror CONFIG_* values onto build properties so + # `idf_build_get_property(var CONFIG_FOO)` keeps working. + __import_sdkconfig_as_build_properties() + idf_msg("Generated sdkconfig configuration") endfunction()