patch-2.3.20 linux/Documentation/kbuild/config-language.txt

Next file: linux/Documentation/kernel-parameters.txt
Previous file: linux/Documentation/devices.txt
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.19/linux/Documentation/kbuild/config-language.txt linux/Documentation/kbuild/config-language.txt
@@ -1,5 +1,5 @@
 Config Language Specification
-21 January 1999
+28 September 1999
 Michael Elizabeth Chastain, <mailto:mec@shout.net>
 
 
@@ -82,7 +82,10 @@
     double-quoted string.  If the word is unquoted or double quoted,
     then $-substition will be performed on the word.
 
-    A /symbol/ is a single unquoted word.
+    A /symbol/ is a single unquoted word.  A symbol must have a name of
+    the form CONFIG_*.  scripts/mkdep.c relies on this convention in order
+    to generate dependencies on individual CONFIG_* symbols instead of
+    making one massive dependency on include/linux/autoconf.h.
 
     A /dep/ is a dependency.  Syntactically, it is a /word/.  At run
     time, a /dep/ must evaluate to "y", "m", "n", or "".
@@ -355,8 +358,8 @@
 number is a legal value.
 
 Configure:  implemented
-Menuconfig: not implemented
-Xconfig:    not implemented
+Menuconfig: implemented
+Xconfig:    implemented
 mconfig:    implemented
 
 Example:
@@ -377,8 +380,8 @@
 legal value.
 
 Configure:  implemented
-Menuconfig: not implemented
-Xconfig:    not implemented
+Menuconfig: implemented
+Xconfig:    implemented
 mconfig:    implemented
 
 Example:
@@ -394,8 +397,8 @@
 are any ASCII string, except for the characters '"' and '\\'.
 
 Configure:  implemented
-Menuconfig: not implemented
-Xconfig:    not implemented
+Menuconfig: implemented
+Xconfig:    implemented
 mconfig:    implemented
 
 Example
@@ -414,9 +417,9 @@
 instead of define_bool to define tristate values.  This aids in static
 type checking.
 
-Configure:  not implemented
-Menuconfig: not implemented
-Xconfig:    not implemented
+Configure:  implemented
+Menuconfig: implemented
+Xconfig:    implemented
 mconfig:    implemented
 
 Example:
@@ -433,22 +436,27 @@
 
 This verb evaluates all of the dependencies in the dependency list.
 Any dependency which has a value of "y" does not restrict the input
-range.  Any dependency which has a value of "n", or which has some
-other value, restricts the input range to "n".
+range.  Any dependency which has an empty value is ignored.
+Any dependency which has a value of "n", or which has some other value,
+restricts the input range to "n".  Quoting dependencies is not allowed.
+Using dependencies with an empty value possible is not recommended.
 
 If the input range is restricted to the single choice "n", dep_bool
 silently assigns "n" to /symbol/.  If the input range has more than
 one choice, dep_bool displays /prompt/ to the user, accepts a value
 from the user, and assigns that value to /symbol/.
 
-Configure:  not implemented
-Menuconfig: not implemented
-XConfig:    not implemented
+Configure:  implemented
+Menuconfig: implemented
+XConfig:    implemented
 mconfig:    implemented
 
     # not from the corpus
     dep_bool 'RZ1000 chipset bugfix/support' CONFIG_BLK_DEV_RZ1000 $CONFIG_PCI
 
+Known bugs:
+- Xconfig does not write "# foo is not set" to .config (as well as
+  "#unset foo" to autoconf.h) if command is disabled by its dependencies.
 
 
 === dep_hex /prompt/ /symbol/ /word/ /dep/ ...
@@ -464,13 +472,15 @@
 
 
 
-=== dep_tristate /prompt/ /symbol /dep/ ...
+=== dep_tristate /prompt/ /symbol/ /dep/ ...
 
 This verb evaluates all of the dependencies in the dependency list.
-Any dependency which as a value of "y" does not restrict the input range.
+Any dependency which has a value of "y" does not restrict the input range.
 Any dependency which has a value of "m" restricts the input range to
-"m" or "n".  Any dependency which has a value of "n", or which has some
-other value, restricts the input range to "n".
+"m" or "n".  Any dependency which has an empty value is ignored.
+Any dependency which has a value of "n", or which has some other value,
+restricts the input range to "n".  Quoting dependencies is not allowed.
+Using dependencies with an empty value possible is not recommended.
 
 If the input range is restricted to the single choice "n", dep_tristate
 silently assigns "n" to /symbol/.  If the input range has more than
@@ -478,10 +488,13 @@
 from the user, and assigns that value to /symbol/.
 
 Configure:  implemented
-Menuconfig: implemented (but silently ignores dependencies after the first)
-Xconfig:    implemented (but silently ignores dependencies after the first)
+Menuconfig: implemented
+Xconfig:    implemented
 mconfig:    implemented
 
+Known bugs:
+- Xconfig does not write "# foo is not set" to .config (as well as
+  "#unset foo" to autoconf.h) if command is disabled by its dependencies.
 
 
 === unset /symbol/ ...
@@ -492,7 +505,7 @@
 
 Configure:  implemented
 Menuconfig: implemented
-Xconfig:    not implemented
+Xconfig:    implemented (with bugs)
 mconfig:    implemented
 
 
@@ -570,14 +583,9 @@
 XConfig:    implemented, with bugs
 mconfig:    implemented
 
-Xconfig has several known bugs, and probably some unknown bugs too:
-
-- In a comparison, if the left-hand atom is a variable and that variable
-  is from a choice list, the right-hand atom must be "y".
+Xconfig has some known bugs, and probably some unknown bugs too:
 
-- In a comparison, if the right-hand atom is a variable and that variable
-  is from a choice list, you lose.  tkparse will throw a segmentation
-  violation, silently generate bizarre TCL code, or something else.
+- literals with an empty "" value are not properly handled.
 
 - tkparse gives the wrong precedence to -o, -a, and !.  Don't use both
   -o and -a in an expression.  Don't use ! at all.

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)