restore documentation on the build config language
authorKartik Agaram <akkartik@gmail.com>
Fri, 1 Jun 2018 05:15:55 +0000 (22:15 -0700)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 6 Jun 2018 13:16:48 +0000 (15:16 +0200)
Kconfig-language.txt was deleted in commit 4fa499a17b52b back in 2006.
Move to docs/ as suggested by Xabier Oneca:
  http://lists.busybox.net/pipermail/busybox/2014-May/080914.html
Also update references to it everywhere.

Signed-off-by: Kartik Agaram <akkartik@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
25 files changed:
Config.in
archival/Config.src
console-tools/Config.src
coreutils/Config.src
debianutils/Config.src
docs/Kconfig-language.txt [new file with mode: 0644]
e2fsprogs/Config.src
editors/Config.src
findutils/Config.src
init/Config.src
klibc-utils/Config.src
libbb/Config.src
loginutils/Config.src
miscutils/Config.src
modutils/Config.src
networking/Config.src
networking/udhcp/Config.src
printutils/Config.src
procps/Config.src
runit/Config.src
selinux/Config.src
shell/Config.src
sysklogd/Config.src
util-linux/Config.src
util-linux/volume_id/Config.src

index 51ff01ef4a933d1b9342e44d56a97e2b1e7c7b0c..ae21f52ef43fdbc9a644fdcb0ae0465a912679e2 100644 (file)
--- a/Config.in
+++ b/Config.in
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 mainmenu "Configuration"
index 44991456534cefe9f6c7d25babc5b34037dbe880..6f4f30c43d86fdb0d9e1c4b9730906bef9dbbbae 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Archival Utilities"
index e6587ade4718ba03a17091271aac2ad37cc1f47b..c30caf0e1ccbd6b3b4945a9f5997046f6aa691fe 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Console Utilities"
index 7a8a3a634f3910f3494358af4688f8623f76d538..1bded03a687aba8250b26b89cfece5385e05a1f9 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Coreutils"
index 61daeb04783012d97fb0484458c7bd69f2d1a311..17b0d89453ff8c1cfe5fe2380b0601167a225365 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Debian Utilities"
diff --git a/docs/Kconfig-language.txt b/docs/Kconfig-language.txt
new file mode 100644 (file)
index 0000000..0ba8932
--- /dev/null
@@ -0,0 +1,255 @@
+Introduction
+------------
+
+The configuration database is collection of configuration options
+organized in a tree structure:
+
+    +- Code maturity level options
+    |  +- Prompt for development and/or incomplete code/drivers
+    +- General setup
+    |  +- Networking support
+    |  +- System V IPC
+    |  +- BSD Process Accounting
+    |  +- Sysctl support
+    +- Loadable module support
+    |  +- Enable loadable module support
+    |     +- Set version information on all module symbols
+    |     +- Kernel module loader
+    +- ...
+
+Every entry has its own dependencies. These dependencies are used
+to determine the visible of an entry. Any child entry is only
+visible if its parent entry is also visible.
+
+Menu entries
+------------
+
+Most entries define a config option, all other entries help to organize
+them. A single configuration option is defined like this:
+
+config MODVERSIONS
+    bool "Set version information on all module symbols"
+    depends MODULES
+    help
+      Usually, modules have to be recompiled whenever you switch to a new
+      kernel.  ...
+
+Every line starts with a key word and can be followed by multiple
+arguments.  "config" starts a new config entry. The following lines
+define attributes for this config option. Attributes can be the type of
+the config option, input prompt, dependencies, help text and default
+values. A config option can be defined multiple times with the same
+name, but every definition can have only a single input prompt and the
+type must not conflict.
+
+Menu attributes
+---------------
+
+A menu entry can have a number of attributes. Not all of them are
+applicable everywhere (see syntax).
+
+- type definition: "bool"/"tristate"/"string"/"hex"/"integer"
+  Every config option must have a type. There are only two basic types:
+  tristate and string, the other types base on these two. The type
+  definition optionally accepts an input prompt, so these two examples
+  are equivalent:
+
+    bool "Networking support"
+  and
+    bool
+    prompt "Networking support"
+
+- input prompt: "prompt" <prompt> ["if" <expr>]
+  Every menu entry can have at most one prompt, which is used to display
+  to the user. Optionally dependencies only for this prompt can be added
+  with "if".
+
+- default value: "default" <symbol> ["if" <expr>]
+  A config option can have any number of default values. If multiple
+  default values are visible, only the first defined one is active.
+  Default values are not limited to the menu entry, where they are
+  defined, this means the default can be defined somewhere else or be
+  overridden by an earlier definition.
+  The default value is only assigned to the config symbol if no other
+  value was set by the user (via the input prompt above). If an input
+  prompt is visible the default value is presented to the user and can
+  be overridden by him.
+  Optionally dependencies only for this default value can be added with
+  "if".
+
+- dependencies: "depends on"/"requires" <expr>
+  This defines a dependency for this menu entry. If multiple
+  dependencies are defined they are connected with '&&'. Dependencies
+  are applied to all other options within this menu entry (which also
+  accept "if" expression), so these two examples are equivalent:
+
+    bool "foo" if BAR
+    default y if BAR
+  and
+    depends on BAR
+    bool "foo"
+    default y
+
+- help text: "help"
+  This defines a help text. The end of the help text is determined by
+  the level indentation, this means it ends at the first line which has
+  a smaller indentation than the first line of the help text.
+
+
+Menu dependencies
+-----------------
+
+Dependencies define the visibility of a menu entry and can also reduce
+the input range of tristate symbols. The tristate logic used in the
+expressions uses one more state than normal boolean logic to express the
+module state. Dependency expressions have the following syntax:
+
+<expr> ::= <symbol>                             (1)
+           <symbol> '=' <symbol>                (2)
+           <symbol> '!=' <symbol>               (3)
+           '(' <expr> ')'                       (4)
+           '!' <expr>                           (5)
+           <expr> '||' <expr>                   (6)
+           <expr> '&&' <expr>                   (7)
+
+Expressions are listed in decreasing order of precedence.
+
+(1) Convert the symbol into an expression. Boolean and tristate symbols
+    are simply converted into the respective expression values. All
+    other symbol types result in 'n'.
+(2) If the values of both symbols are equal, it returns 'y',
+    otherwise 'n'.
+(3) If the values of both symbols are equal, it returns 'n',
+    otherwise 'y'.
+(4) Returns the value of the expression. Used to override precedence.
+(5) Returns the result of (2-/expr/).
+(6) Returns the result of min(/expr/, /expr/).
+(7) Returns the result of max(/expr/, /expr/).
+
+An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2
+respectively for calculations). A menu entry becomes visible when it's
+expression evaluates to 'm' or 'y'.
+
+There are two type of symbols: constant and nonconstant symbols.
+Nonconstant symbols are the most common ones and are defined with the
+'config' statement. Nonconstant symbols consist entirely of alphanumeric
+characters or underscores.
+Constant symbols are only part of expressions. Constant symbols are
+always surrounded by single or double quotes. Within the quote any
+other character is allowed and the quotes can be escaped using '\'.
+
+Menu structure
+--------------
+
+The position of a menu entry in the tree is determined in two ways. First
+it can be specified explicitely:
+
+menu "Network device support"
+    depends NET
+
+config NETDEVICES
+    ...
+
+endmenu
+
+All entries within the "menu" ... "endmenu" block become a submenu of
+"Network device support". All subentries inherit the dependencies from
+the menu entry, e.g. this means the dependency "NET" is added to the
+dependency list of the config option NETDEVICES.
+
+The other way to generate the menu structure is done by analyzing the
+dependencies. If a menu entry somehow depends on the previous entry, it
+can be made a submenu of it. First the the previous (parent) symbol must
+be part of the dependency list and then one of these two condititions
+must be true:
+- the child entry must become invisible, if the parent is set to 'n'
+- the child entry must only be visible, if the parent is visible
+
+config MODULES
+    bool "Enable loadable module support"
+
+config MODVERSIONS
+    bool "Set version information on all module symbols"
+    depends MODULES
+
+comment "module support disabled"
+    depends !MODULES
+
+MODVERSIONS directly depends on MODULES, this means it's only visible if
+MODULES is different from 'n'. The comment on the other hand is always
+visible when MODULES it's visible (the (empty) dependency of MODULES is
+also part of the comment dependencies).
+
+
+Kconfig syntax
+--------------
+
+The configuration file describes a series of menu entries, where every
+line starts with a keyword (except help texts). The following keywords
+end a menu entry:
+- config
+- choice/endchoice
+- comment
+- menu/endmenu
+- if/endif
+- source
+The first four also start the definition of a menu entry.
+
+config:
+
+    "config" <symbol>
+    <config options>
+
+This defines a config symbol <symbol> and accepts any of above
+attributes as options.
+
+choices:
+
+    "choice"
+    <choice options>
+    <choice block>
+    "endchoice"
+
+This defines a choice group and accepts any of above attributes as
+options. A choice can only be of type bool or tristate, while a boolean
+choice only allows a single config entry to be selected, a tristate
+choice also allows any number of config entries to be set to 'm'. This
+can be used if multiple drivers for a single hardware exists and only a
+single driver can be compiled/loaded into the kernel, but all drivers
+can be compiled as modules.
+A choice accepts another option "optional", which allows to set the
+choice to 'n' and no entry needs to be selected.
+
+comment:
+
+    "comment" <prompt>
+    <comment options>
+
+This defines a comment which is displayed to the user during the
+configuration process and is also echoed to the output files. The only
+possible options are dependencies.
+
+menu:
+
+    "menu" <prompt>
+    <menu options>
+    <menu block>
+    "endmenu"
+
+This defines a menu block, see "Menu structure" above for more
+information. The only possible options are dependencies.
+
+if:
+
+    "if" <expr>
+    <if block>
+    "endif"
+
+This defines an if block. The dependency expression <expr> is appended
+to all enclosed menu entries.
+
+source:
+
+    "source" <prompt>
+
+This reads the specified configuration file. This file is always parsed.
index a20d849e6f7d817470ca3fb88f378f56cbc60a00..ad15f470cc617e4781a64d820b102a64ce02055c 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Linux Ext2 FS Progs"
index 0920bc4940e31d48568455b951225445a5954a16..3b2e4a6c0d8a99502d47962a4a799fbbba60b728 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Editors"
index 9ee71a8450e23ec4e69ec305dba04a238bf240af..c28c5844e66f272be4a3149e5095d1445e7cc149 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Finding Utilities"
index 5767c93f053cee5ca9451424341d3f70bc5f5a7b..b19b0bea15a470e6a3492743a5e9b2ee7c7bdf72 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Init Utilities"
index fe7cb13154148533003527cf82d8f1f127da512d..cf4552e51a5df10523bafc80a4604ba32b5ab8d4 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "klibc-utils"
index 16e16480b120f7643b5d0d1efb1cb7f1fbb3184e..312aa183132a9271e57354dd935633d780723c5b 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 comment "Library Tuning"
index 680f42118884c09e5544d09b6aa6668f9a28fe13..cbb09646bde28b01692904d6b3062cee99f23567 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Login/Password Management Utilities"
index 7325fb8fa2257a06fea935d11a57ced4b6f37aa3..d10b00b28ebd2995d76ac58e821cbfe207eefc0b 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Miscellaneous Utilities"
index e413702bbe491d8184e21bee2f2e4822d1e76178..18829681445399467e16d8a94999221bc29011b4 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Linux Module Utilities"
index 492c60da4e2d280a8f0f5554fac9d1e51df8347a..2ce5287de83b6544c8c8ff3f465bea10d401ffe4 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Networking Utilities"
index 50bff2e8ca4c00170fa41ccca00613ff22fa0e1d..e5958804b8edd68e34316c43ce4d8069f2763770 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 config UDHCPD
index e53b9d09357904a668d2195d23c2299056e705b6..5f1d65f6ccf980f1087abd10130f5066eaa9edad 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Print Utilities"
index 515d79938374e6ad1e402108f61a353302eb0b65..2b1b8ab1176e7eb0af5a521cee8f669a7ac36368 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Process Utilities"
index 8cde89680b2dd18d2df04892b06f54e8f76fbacc..403ec872409aeb330a0f9979d19dcd759d6fe5f2 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Runit Utilities"
index 9cb755a0f5bd92d05836ea5b949b31640a0fdd8a..f8fcdadf9fa0e46b41feae16869a853a4031e849 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "SELinux Utilities"
index 81c4ec87450d474d2e971daf761d59985060f23f..959d3cb42dfc8ffa3e9f5e2541ff82d4d9ce7cf9 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Shells"
index 684e7d4140310c7fc28a5acac7178b50441b214c..321be01177686a93c398b403f53e64e1c57e4649 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "System Logging Utilities"
index 68fcc266f710b9cc21d900d99ac10299e0e34357..0fad3e5c0dff202524ced19ef4a789fc212694ef 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Linux System Utilities"
index ac208c9ccbac63d4276e1a51c106f77e01b7c109..fe3b14a711f3e2c4c7f4b209b27fd7fdc1dcc658 100644 (file)
@@ -1,6 +1,6 @@
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 config VOLUMEID