diff --git a/docs/conf_common.py b/docs/conf_common.py index 17fcc7f0e..6153e51cc 100644 --- a/docs/conf_common.py +++ b/docs/conf_common.py @@ -63,6 +63,9 @@ call_with_python('../gen-dxd.py') def find_component_files(parent_dir, target_filename): parent_dir = os.path.abspath(parent_dir) result = [] + + component_files = dict() + for (dirpath, dirnames, filenames) in os.walk(parent_dir): try: # note: trimming "examples" dir as MQTT submodule @@ -71,8 +74,14 @@ def find_component_files(parent_dir, target_filename): except ValueError: pass if target_filename in filenames: - result.append(os.path.join(dirpath, target_filename)) - print("List of %s: %s" % (target_filename, ", ".join(result))) + component_files[os.path.basename(dirpath)] = os.path.join(dirpath, target_filename) + + components = sorted(component_files.keys()) + + for component in components: + result.append(component_files[component]) + + print("List of %s: %s" % (target_filename, ", ".join(components))) return result diff --git a/tools/cmake/kconfig.cmake b/tools/cmake/kconfig.cmake index 05976aca6..e2e05c107 100644 --- a/tools/cmake/kconfig.cmake +++ b/tools/cmake/kconfig.cmake @@ -77,9 +77,20 @@ function(kconfig_process_config) set(kconfigs) set(kconfigs_projbuild) + # Components are usually sorted (somewhat) topologically via their dependencies. This extends to the component + # paths list. Obtain an alphabetical list in order to present menus also in the same order. + set(components ${BUILD_COMPONENTS}) + list(SORT components) + + foreach(component ${components}) + list(FIND BUILD_COMPONENTS ${component} idx) + list(GET BUILD_COMPONENT_PATHS ${idx} component_path) + list(APPEND component_paths ${component_path}) + endforeach() + # Find Kconfig and Kconfig.projbuild for each component as applicable # if any of these change, cmake should rerun - foreach(dir ${BUILD_COMPONENT_PATHS}) + foreach(dir ${component_paths}) file(GLOB kconfig "${dir}/Kconfig") if(kconfig) set(kconfigs "${kconfigs} ${kconfig}")