diff --git a/tools/cmake/build.cmake b/tools/cmake/build.cmake index 1aa70adfec..b57be974f3 100644 --- a/tools/cmake/build.cmake +++ b/tools/cmake/build.cmake @@ -222,6 +222,15 @@ function(__build_expand_requirements component_target) get_property(reqs TARGET ${component_target} PROPERTY REQUIRES) get_property(priv_reqs TARGET ${component_target} PROPERTY PRIV_REQUIRES) + __component_get_property(component_name ${component_target} COMPONENT_NAME) + __component_get_property(component_alias ${component_target} COMPONENT_ALIAS) + idf_build_get_property(common_reqs __COMPONENT_REQUIRES_COMMON) + list(APPEND reqs ${common_reqs}) + + if(reqs) + list(REMOVE_DUPLICATES reqs) + list(REMOVE_ITEM reqs ${component_alias} ${component_name}) + endif() foreach(req ${reqs}) __build_resolve_and_add_req(_component_target ${component_target} ${req} __REQUIRES) diff --git a/tools/cmake/project.cmake b/tools/cmake/project.cmake index 60a1d73a0e..ae08d07456 100644 --- a/tools/cmake/project.cmake +++ b/tools/cmake/project.cmake @@ -408,8 +408,7 @@ macro(project project_name) __component_get_target(main_target idf::main) __component_get_property(reqs ${main_target} REQUIRES) __component_get_property(priv_reqs ${main_target} PRIV_REQUIRES) - idf_build_get_property(common_reqs __COMPONENT_REQUIRES_COMMON) - if(reqs STREQUAL common_reqs AND NOT priv_reqs) #if user has not set any requirements + if(NOT reqs AND NOT priv_reqs) #if user has not set any requirements if(test_components) list(REMOVE_ITEM build_components ${test_components}) endif() diff --git a/tools/cmake/scripts/component_get_requirements.cmake b/tools/cmake/scripts/component_get_requirements.cmake index aa294c6f0e..8a8c857fbf 100644 --- a/tools/cmake/scripts/component_get_requirements.cmake +++ b/tools/cmake/scripts/component_get_requirements.cmake @@ -123,8 +123,6 @@ foreach(__component_target ${__component_targets}) __component_get_requirements() - list(APPEND __component_requires "${__common_reqs}") - # Remove duplicates and the component itself from its requirements __component_get_property(__component_alias ${__component_target} COMPONENT_ALIAS) __component_get_property(__component_name ${__component_target} COMPONENT_NAME)