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 | |||
@@ -9,25 +9,25 @@ organized in a tree structure: | |||
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 |
@@ -41,67 +41,82 @@ 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) |
@@ -114,104 +129,113 @@ module state. Dependency expressions have the following syntax: | |||
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 |