Diffstat (limited to 'scripts/kconfig/lkc-language.txt') (more/less context) (ignore whitespace changes)
-rw-r--r-- | scripts/kconfig/lkc-language.txt | 52 |
1 files changed, 38 insertions, 14 deletions
diff --git a/scripts/kconfig/lkc-language.txt b/scripts/kconfig/lkc-language.txt index a3037ff..40f8583 100644 --- a/scripts/kconfig/lkc-language.txt +++ b/scripts/kconfig/lkc-language.txt | |||
@@ -1,255 +1,279 @@ | |||
1 | Introduction | 1 | Introduction |
2 | ------------ | 2 | ------------ |
3 | 3 | ||
4 | The configuration database is collection of configuration options | 4 | The configuration database is collection of configuration options |
5 | organized in a tree structure: | 5 | organized in a tree structure: |
6 | 6 | ||
7 | +- Code maturity level options | 7 | +- Code maturity level options |
8 | | +- Prompt for development and/or incomplete code/drivers | 8 | | +- Prompt for development and/or incomplete code/drivers |
9 | +- General setup | 9 | +- General setup |
10 | | +- Networking support | 10 | | +- Networking support |
11 | | +- System V IPC | 11 | | +- System V IPC |
12 | | +- BSD Process Accounting | 12 | | +- BSD Process Accounting |
13 | | +- Sysctl support | 13 | | +- Sysctl support |
14 | +- Loadable module support | 14 | +- Loadable module support |
15 | | +- Enable loadable module support | 15 | | +- Enable loadable module support |
16 | | +- Set version information on all module symbols | 16 | | +- Set version information on all module symbols |
17 | | +- Kernel module loader | 17 | | +- Kernel module loader |
18 | +- ... | 18 | +- ... |
19 | 19 | ||
20 | Every entry has its own dependencies. These dependencies are used | 20 | Every entry has its own dependencies. These dependencies are used |
21 | to determine the visible of an entry. Any child entry is only | 21 | to determine the visibility of an entry. Any child entry is only |
22 | visible if its parent entry is also visible. | 22 | visible if its parent entry is also visible. |
23 | 23 | ||
24 | Menu entries | 24 | Menu entries |
25 | ------------ | 25 | ------------ |
26 | 26 | ||
27 | Most entries define a config option, all other entries help to organize | 27 | Most entries define a config option, all other entries help to organize |
28 | them. A single configuration option is defined like this: | 28 | them. A single configuration option is defined like this: |
29 | 29 | ||
30 | config MODVERSIONS | 30 | config MODVERSIONS |
31 | bool "Set version information on all module symbols" | 31 | bool "Set version information on all module symbols" |
32 | depends MODULES | 32 | depends MODULES |
33 | help | 33 | help |
34 | Usually, modules have to be recompiled whenever you switch to a new | 34 | Usually, modules have to be recompiled whenever you switch to a new |
35 | kernel. ... | 35 | kernel. ... |
36 | 36 | ||
37 | Every line starts with a key word and can be followed by multiple | 37 | Every line starts with a key word and can be followed by multiple |
38 | arguments. "config" starts a new config entry. The following lines | 38 | arguments. "config" starts a new config entry. The following lines |
39 | define attributes for this config option. Attributes can be the type of | 39 | define attributes for this config option. Attributes can be the type of |
40 | the config option, input prompt, dependencies, help text and default | 40 | the config option, input prompt, dependencies, help text and default |
41 | values. A config option can be defined multiple times with the same | 41 | values. A config option can be defined multiple times with the same |
42 | name, but every definition can have only a single input prompt and the | 42 | name, but every definition can have only a single input prompt and the |
43 | type must not conflict. | 43 | type must not conflict. |
44 | 44 | ||
45 | Menu attributes | 45 | Menu attributes |
46 | --------------- | 46 | --------------- |
47 | 47 | ||
48 | A menu entry can have a number of attributes. Not all of them are | 48 | A menu entry can have a number of attributes. Not all of them are |
49 | applicable everywhere (see syntax). | 49 | applicable everywhere (see syntax). |
50 | 50 | ||
51 | - type definition: "bool"/"tristate"/"string"/"hex"/"integer" | 51 | - type definition: "bool"/"tristate"/"string"/"hex"/"integer" |
52 | Every config option must have a type. There are only two basic types: | 52 | Every config option must have a type. There are only two basic types: |
53 | tristate and string, the other types base on these two. The type | 53 | tristate and string, the other types are based on these two. The type |
54 | definition optionally accepts an input prompt, so these two examples | 54 | definition optionally accepts an input prompt, so these two examples |
55 | are equivalent: | 55 | are equivalent: |
56 | 56 | ||
57 | bool "Networking support" | 57 | bool "Networking support" |
58 | and | 58 | and |
59 | bool | 59 | bool |
60 | prompt "Networking support" | 60 | prompt "Networking support" |
61 | 61 | ||
62 | - input prompt: "prompt" <prompt> ["if" <expr>] | 62 | - input prompt: "prompt" <prompt> ["if" <expr>] |
63 | Every menu entry can have at most one prompt, which is used to display | 63 | Every menu entry can have at most one prompt, which is used to display |
64 | to the user. Optionally dependencies only for this prompt can be added | 64 | to the user. Optionally dependencies only for this prompt can be added |
65 | with "if". | 65 | with "if". |
66 | 66 | ||
67 | - default value: "default" <symbol> ["if" <expr>] | 67 | - default value: "default" <expr> ["if" <expr>] |
68 | A config option can have any number of default values. If multiple | 68 | A config option can have any number of default values. If multiple |
69 | default values are visible, only the first defined one is active. | 69 | default values are visible, only the first defined one is active. |
70 | Default values are not limited to the menu entry, where they are | 70 | Default values are not limited to the menu entry, where they are |
71 | defined, this means the default can be defined somewhere else or be | 71 | defined, this means the default can be defined somewhere else or be |
72 | overriden by an earlier definition. | 72 | overridden by an earlier definition. |
73 | The default value is only assigned to the config symbol if no other | 73 | The default value is only assigned to the config symbol if no other |
74 | value was set by the user (via the input prompt above). If an input | 74 | value was set by the user (via the input prompt above). If an input |
75 | prompt is visible the default value is presented to the user and can | 75 | prompt is visible the default value is presented to the user and can |
76 | be overridden by him. | 76 | be overridden by him. |
77 | Optionally dependencies only for this default value can be added with | 77 | Optionally dependencies only for this default value can be added with |
78 | "if". | 78 | "if". |
79 | 79 | ||
80 | - dependencies: "depends on"/"requires" <expr> | 80 | - dependencies: "depends on"/"requires" <expr> |
81 | This defines a dependency for this menu entry. If multiple | 81 | This defines a dependency for this menu entry. If multiple |
82 | dependencies are defined they are connected with '&&'. Dependencies | 82 | dependencies are defined they are connected with '&&'. Dependencies |
83 | are applied to all other options within this menu entry (which also | 83 | are applied to all other options within this menu entry (which also |
84 | accept "if" expression), so these two examples are equivalent: | 84 | accept an "if" expression), so these two examples are equivalent: |
85 | 85 | ||
86 | bool "foo" if BAR | 86 | bool "foo" if BAR |
87 | default y if BAR | 87 | default y if BAR |
88 | and | 88 | and |
89 | depends on BAR | 89 | depends on BAR |
90 | bool "foo" | 90 | bool "foo" |
91 | default y | 91 | default y |
92 | 92 | ||
93 | - reverse dependencies: "select" <symbol> ["if" <expr>] | ||
94 | While normal dependencies reduce the upper limit of a symbol (see | ||
95 | below), reverse dependencies can be used to force a lower limit of | ||
96 | another symbol. The value of the current menu symbol is used as the | ||
97 | minimal value <symbol> can be set to. If <symbol> is selected multiple | ||
98 | times, the limit is set to the largest selection. | ||
99 | Reverse dependencies can only be used with boolean or tristate | ||
100 | symbols. | ||
101 | |||
102 | - numerical ranges: "range" <symbol> <symbol> ["if" <expr>] | ||
103 | This allows to limit the range of possible input values for integer | ||
104 | and hex symbols. The user can only input a value which is larger than | ||
105 | or equal to the first symbol and smaller than or equal to the second | ||
106 | symbol. | ||
107 | |||
93 | - help text: "help" | 108 | - help text: "help" |
94 | This defines a help text. The end of the help text is determined by | 109 | This defines a help text. The end of the help text is determined by |
95 | the level indentation, this means it ends at the first line which has | 110 | the indentation level, this means it ends at the first line which has |
96 | a smaller indentation than the first line of the help text. | 111 | a smaller indentation than the first line of the help text. |
97 | 112 | ||
98 | 113 | ||
99 | Menu dependencies | 114 | Menu dependencies |
100 | ----------------- | 115 | ----------------- |
101 | 116 | ||
102 | Dependencies define the visibility of a menu entry and can also reduce | 117 | Dependencies define the visibility of a menu entry and can also reduce |
103 | the input range of tristate symbols. The tristate logic used in the | 118 | the input range of tristate symbols. The tristate logic used in the |
104 | expressions uses one more state than normal boolean logic to express the | 119 | expressions uses one more state than normal boolean logic to express the |
105 | module state. Dependency expressions have the following syntax: | 120 | module state. Dependency expressions have the following syntax: |
106 | 121 | ||
107 | <expr> ::= <symbol> (1) | 122 | <expr> ::= <symbol> (1) |
108 | <symbol> '=' <symbol> (2) | 123 | <symbol> '=' <symbol> (2) |
109 | <symbol> '!=' <symbol> (3) | 124 | <symbol> '!=' <symbol> (3) |
110 | '(' <expr> ')' (4) | 125 | '(' <expr> ')' (4) |
111 | '!' <expr> (5) | 126 | '!' <expr> (5) |
112 | <expr> '||' <expr> (6) | 127 | <expr> '||' <expr> (6) |
113 | <expr> '&&' <expr> (7) | 128 | <expr> '&&' <expr> (7) |
114 | 129 | ||
115 | Expressions are listed in decreasing order of precedence. | 130 | Expressions are listed in decreasing order of precedence. |
116 | 131 | ||
117 | (1) Convert the symbol into an expression. Boolean and tristate symbols | 132 | (1) Convert the symbol into an expression. Boolean and tristate symbols |
118 | are simply converted into the respective expression values. All | 133 | are simply converted into the respective expression values. All |
119 | other symbol types result in 'n'. | 134 | other symbol types result in 'n'. |
120 | (2) If the values of both symbols are equal, it returns 'y', | 135 | (2) If the values of both symbols are equal, it returns 'y', |
121 | otherwise 'n'. | 136 | otherwise 'n'. |
122 | (3) If the values of both symbols are equal, it returns 'n', | 137 | (3) If the values of both symbols are equal, it returns 'n', |
123 | otherwise 'y'. | 138 | otherwise 'y'. |
124 | (4) Returns the value of the expression. Used to override precedence. | 139 | (4) Returns the value of the expression. Used to override precedence. |
125 | (5) Returns the result of (2-/expr/). | 140 | (5) Returns the result of (2-/expr/). |
126 | (6) Returns the result of min(/expr/, /expr/). | 141 | (6) Returns the result of max(/expr/, /expr/). |
127 | (7) Returns the result of max(/expr/, /expr/). | 142 | (7) Returns the result of min(/expr/, /expr/). |
128 | 143 | ||
129 | An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2 | 144 | An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2 |
130 | respectively for calculations). A menu entry becomes visible when it's | 145 | respectively for calculations). A menu entry becomes visible when it's |
131 | expression evaluates to 'm' or 'y'. | 146 | expression evaluates to 'm' or 'y'. |
132 | 147 | ||
133 | There are two type of symbols: constant and nonconstant symbols. | 148 | There are two types of symbols: constant and nonconstant symbols. |
134 | Nonconstant symbols are the most common ones and are defined with the | 149 | Nonconstant symbols are the most common ones and are defined with the |
135 | 'config' statement. Nonconstant symbols consist entirely of alphanumeric | 150 | 'config' statement. Nonconstant symbols consist entirely of alphanumeric |
136 | characters or underscores. | 151 | characters or underscores. |
137 | Constant symbols are only part of expressions. Constant symbols are | 152 | Constant symbols are only part of expressions. Constant symbols are |
138 | always surrounded by single or double quotes. Within the quote any | 153 | always surrounded by single or double quotes. Within the quote any |
139 | other character is allowed and the quotes can be escaped using '\'. | 154 | other character is allowed and the quotes can be escaped using '\'. |
140 | 155 | ||
141 | Menu structure | 156 | Menu structure |
142 | -------------- | 157 | -------------- |
143 | 158 | ||
144 | The position of a menu entry in the tree is determined in two ways. First | 159 | The position of a menu entry in the tree is determined in two ways. First |
145 | it can be specified explicitely: | 160 | it can be specified explicitly: |
146 | 161 | ||
147 | menu "Network device support" | 162 | menu "Network device support" |
148 | depends NET | 163 | depends NET |
149 | 164 | ||
150 | config NETDEVICES | 165 | config NETDEVICES |
151 | ... | 166 | ... |
152 | 167 | ||
153 | endmenu | 168 | endmenu |
154 | 169 | ||
155 | All entries within the "menu" ... "endmenu" block become a submenu of | 170 | All entries within the "menu" ... "endmenu" block become a submenu of |
156 | "Network device support". All subentries inherit the dependencies from | 171 | "Network device support". All subentries inherit the dependencies from |
157 | the menu entry, e.g. this means the dependency "NET" is added to the | 172 | the menu entry, e.g. this means the dependency "NET" is added to the |
158 | dependency list of the config option NETDEVICES. | 173 | dependency list of the config option NETDEVICES. |
159 | 174 | ||
160 | The other way to generate the menu structure is done by analyzing the | 175 | The other way to generate the menu structure is done by analyzing the |
161 | dependencies. If a menu entry somehow depends on the previous entry, it | 176 | dependencies. If a menu entry somehow depends on the previous entry, it |
162 | can be made a submenu of it. First the the previous (parent) symbol must | 177 | can be made a submenu of it. First, the previous (parent) symbol must |
163 | be part of the dependency list and then one of these two condititions | 178 | be part of the dependency list and then one of these two conditions |
164 | must be true: | 179 | must be true: |
165 | - the child entry must become invisible, if the parent is set to 'n' | 180 | - the child entry must become invisible, if the parent is set to 'n' |
166 | - the child entry must only be visible, if the parent is visible | 181 | - the child entry must only be visible, if the parent is visible |
167 | 182 | ||
168 | config MODULES | 183 | config MODULES |
169 | bool "Enable loadable module support" | 184 | bool "Enable loadable module support" |
170 | 185 | ||
171 | config MODVERSIONS | 186 | config MODVERSIONS |
172 | bool "Set version information on all module symbols" | 187 | bool "Set version information on all module symbols" |
173 | depends MODULES | 188 | depends MODULES |
174 | 189 | ||
175 | comment "module support disabled" | 190 | comment "module support disabled" |
176 | depends !MODULES | 191 | depends !MODULES |
177 | 192 | ||
178 | MODVERSIONS directly depends on MODULES, this means it's only visible if | 193 | MODVERSIONS directly depends on MODULES, this means it's only visible if |
179 | MODULES is different from 'n'. The comment on the other hand is always | 194 | MODULES is different from 'n'. The comment on the other hand is always |
180 | visible when MODULES it's visible (the (empty) dependency of MODULES is | 195 | visible when MODULES is visible (the (empty) dependency of MODULES is |
181 | also part of the comment dependencies). | 196 | also part of the comment dependencies). |
182 | 197 | ||
183 | 198 | ||
184 | Kconfig syntax | 199 | Kconfig syntax |
185 | -------------- | 200 | -------------- |
186 | 201 | ||
187 | The configuration file describes a series of menu entries, where every | 202 | The configuration file describes a series of menu entries, where every |
188 | line starts with a keyword (except help texts). The following keywords | 203 | line starts with a keyword (except help texts). The following keywords |
189 | end a menu entry: | 204 | end a menu entry: |
190 | - config | 205 | - config |
206 | - menuconfig | ||
191 | - choice/endchoice | 207 | - choice/endchoice |
192 | - comment | 208 | - comment |
193 | - menu/endmenu | 209 | - menu/endmenu |
194 | - if/endif | 210 | - if/endif |
195 | - source | 211 | - source |
196 | The first four also start the definition of a menu entry. | 212 | The first five also start the definition of a menu entry. |
197 | 213 | ||
198 | config: | 214 | config: |
199 | 215 | ||
200 | "config" <symbol> | 216 | "config" <symbol> |
201 | <config options> | 217 | <config options> |
202 | 218 | ||
203 | This defines a config symbol <symbol> and accepts any of above | 219 | This defines a config symbol <symbol> and accepts any of above |
204 | attributes as options. | 220 | attributes as options. |
205 | 221 | ||
222 | menuconfig: | ||
223 | "menuconfig" <symbol> | ||
224 | <config options> | ||
225 | |||
226 | This is similiar to the simple config entry above, but it also gives a | ||
227 | hint to front ends, that all suboptions should be displayed as a | ||
228 | separate list of options. | ||
229 | |||
206 | choices: | 230 | choices: |
207 | 231 | ||
208 | "choice" | 232 | "choice" |
209 | <choice options> | 233 | <choice options> |
210 | <choice block> | 234 | <choice block> |
211 | "endchoice" | 235 | "endchoice" |
212 | 236 | ||
213 | This defines a choice group and accepts any of above attributes as | 237 | This defines a choice group and accepts any of above attributes as |
214 | options. A choice can only be of type bool or tristate, while a boolean | 238 | options. A choice can only be of type bool or tristate, while a boolean |
215 | choice only allows a single config entry to be selected, a tristate | 239 | choice only allows a single config entry to be selected, a tristate |
216 | choice also allows any number of config entries to be set to 'm'. This | 240 | choice also allows any number of config entries to be set to 'm'. This |
217 | can be used if multiple drivers for a single hardware exists and only a | 241 | can be used if multiple drivers for a single hardware exists and only a |
218 | single driver can be compiled/loaded into the kernel, but all drivers | 242 | single driver can be compiled/loaded into the kernel, but all drivers |
219 | can be compiled as modules. | 243 | can be compiled as modules. |
220 | A choice accepts another option "optional", which allows to set the | 244 | A choice accepts another option "optional", which allows to set the |
221 | choice to 'n' and no entry needs to be selected. | 245 | choice to 'n' and no entry needs to be selected. |
222 | 246 | ||
223 | comment: | 247 | comment: |
224 | 248 | ||
225 | "comment" <prompt> | 249 | "comment" <prompt> |
226 | <comment options> | 250 | <comment options> |
227 | 251 | ||
228 | This defines a comment which is displayed to the user during the | 252 | This defines a comment which is displayed to the user during the |
229 | configuration process and is also echoed to the output files. The only | 253 | configuration process and is also echoed to the output files. The only |
230 | possible options are dependencies. | 254 | possible options are dependencies. |
231 | 255 | ||
232 | menu: | 256 | menu: |
233 | 257 | ||
234 | "menu" <prompt> | 258 | "menu" <prompt> |
235 | <menu options> | 259 | <menu options> |
236 | <menu block> | 260 | <menu block> |
237 | "endmenu" | 261 | "endmenu" |
238 | 262 | ||
239 | This defines a menu block, see "Menu structure" above for more | 263 | This defines a menu block, see "Menu structure" above for more |
240 | information. The only possible options are dependencies. | 264 | information. The only possible options are dependencies. |
241 | 265 | ||
242 | if: | 266 | if: |
243 | 267 | ||
244 | "if" <expr> | 268 | "if" <expr> |
245 | <if block> | 269 | <if block> |
246 | "endif" | 270 | "endif" |
247 | 271 | ||
248 | This defines an if block. The dependency expression <expr> is appended | 272 | This defines an if block. The dependency expression <expr> is appended |
249 | to all enclosed menu entries. | 273 | to all enclosed menu entries. |
250 | 274 | ||
251 | source: | 275 | source: |
252 | 276 | ||
253 | "source" <prompt> | 277 | "source" <prompt> |
254 | 278 | ||
255 | This reads the specified configuration file. This file is always parsed. | 279 | This reads the specified configuration file. This file is always parsed. |