[Buildroot] Kconfig - how to implement hierarchical (un-)select trees?

Alexander Kriegisch Alexander at Kriegisch.name
Fri Apr 13 18:07:20 UTC 2007

I read the very concise, but nonetheless puzzling kconfig-language.txt
to understand how to optimise the awfully mis-structured menuconfig of a
project I am participating in. I experimented with an own set of minimal
Config.in files, but still do not understand the ins and outs of this tool.

Does anybody know of a tutorial (incl. samples!) for kconfig? What I
want to achieve is something like this:

Main menu
[ ] global setting a
[x] global setting b
packages -->

Packages menu
[ ] package a
[ ] package b
[ ] package n
    kernel modules -->
    shared libs -->
    [ ] sub-package n1

Kernel modules
[ ] kernel module a
[ ] kernel module b
[ ] kernel module n

Shared libs
[ ] shared lib a
[ ] shared lib b
[ ] shared lib n

My goals & problems:

  - If package n is unselected, I want everything below it (sub-package,
    shared libs, kernel modules) unselected, too. this is the most
    important point.

  - Some kernel modules (or shared libs, respectively) in the same
    hierarchy may be interdependent. I want to auto-(un)select dependent
    modules. I got part of this working with "select", but unselecting
    works strangely. I cannot describe it any better. Somebody knowing
    the kconfig language and its tricks and tweaks may know what I mean.

  - It is necessary to auto-(un)select several shared libs if related
    kernel modules are (un)selected.

  - Sub-package n1 from the example above automatically selects a number
    of kernel modules and shared libs. They don't get unselected cleanly
    if I define additional interdependencies between elements on the
    same hierarchy level.

  - Muli-level hierarchies as such seem to be problematic anyway.

I know I would express most of the dependencies in a common programming
language such as Java, but the kconfig "language" somehow defies my
thorough understanding.

Alexander Kriegisch

More information about the buildroot mailing list