Merge branch 'bugfix/cmake_list_component_config_alphabetically' into 'master'

List menuconfig component config items alphabetically via component name

See merge request idf/esp-idf!3939
This commit is contained in:
Angus Gratton 2018-12-21 07:50:31 +08:00
commit 16854e1f40
2 changed files with 23 additions and 3 deletions

View file

@ -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

View file

@ -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}")