sched/doc: Update documentation for base_slice_ns and CONFIG_HZ relation
[sfrench/cifs-2.6.git] / Documentation / kbuild / kconfig.rst
1 ===================
2 Kconfig make config
3 ===================
4
5 This file contains some assistance for using `make *config`.
6
7 Use "make help" to list all of the possible configuration targets.
8
9 The xconfig ('qconf'), menuconfig ('mconf'), and nconfig ('nconf')
10 programs also have embedded help text.  Be sure to check that for
11 navigation, search, and other general help text.
12
13 The gconfig ('gconf') program has limited help text.
14
15 General
16 -------
17
18 New kernel releases often introduce new config symbols.  Often more
19 important, new kernel releases may rename config symbols.  When
20 this happens, using a previously working .config file and running
21 "make oldconfig" won't necessarily produce a working new kernel
22 for you, so you may find that you need to see what NEW kernel
23 symbols have been introduced.
24
25 To see a list of new config symbols, use::
26
27         cp user/some/old.config .config
28         make listnewconfig
29
30 and the config program will list any new symbols, one per line.
31
32 Alternatively, you can use the brute force method::
33
34         make oldconfig
35         scripts/diffconfig .config.old .config | less
36
37 ----------------------------------------------------------------------
38
39 Environment variables for `*config`
40
41 KCONFIG_CONFIG
42 --------------
43 This environment variable can be used to specify a default kernel config
44 file name to override the default name of ".config".
45
46 KCONFIG_DEFCONFIG_LIST
47 ----------------------
48
49 This environment variable specifies a list of config files which can be used
50 as a base configuration in case the .config does not exist yet. Entries in
51 the list are separated with whitespaces to each other, and the first one
52 that exists is used.
53
54 KCONFIG_OVERWRITECONFIG
55 -----------------------
56 If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not
57 break symlinks when .config is a symlink to somewhere else.
58
59 KCONFIG_WARN_UNKNOWN_SYMBOLS
60 ----------------------------
61 This environment variable makes Kconfig warn about all unrecognized
62 symbols in the config input.
63
64 KCONFIG_WERROR
65 --------------
66 If set, Kconfig treats warnings as errors.
67
68 `CONFIG_`
69 ---------
70 If you set `CONFIG_` in the environment, Kconfig will prefix all symbols
71 with its value when saving the configuration, instead of using the default,
72 `CONFIG_`.
73
74 ----------------------------------------------------------------------
75
76 Environment variables for '{allyes/allmod/allno/rand}config'
77
78 KCONFIG_ALLCONFIG
79 -----------------
80 (partially based on lkml email from/by Rob Landley, re: miniconfig)
81
82 --------------------------------------------------
83
84 The allyesconfig/allmodconfig/allnoconfig/randconfig variants can also
85 use the environment variable KCONFIG_ALLCONFIG as a flag or a filename
86 that contains config symbols that the user requires to be set to a
87 specific value.  If KCONFIG_ALLCONFIG is used without a filename where
88 KCONFIG_ALLCONFIG == "" or KCONFIG_ALLCONFIG == "1", `make *config`
89 checks for a file named "all{yes/mod/no/def/random}.config"
90 (corresponding to the `*config` command that was used) for symbol values
91 that are to be forced.  If this file is not found, it checks for a
92 file named "all.config" to contain forced values.
93
94 This enables you to create "miniature" config (miniconfig) or custom
95 config files containing just the config symbols that you are interested
96 in.  Then the kernel config system generates the full .config file,
97 including symbols of your miniconfig file.
98
99 This 'KCONFIG_ALLCONFIG' file is a config file which contains
100 (usually a subset of all) preset config symbols.  These variable
101 settings are still subject to normal dependency checks.
102
103 Examples::
104
105         KCONFIG_ALLCONFIG=custom-notebook.config make allnoconfig
106
107 or::
108
109         KCONFIG_ALLCONFIG=mini.config make allnoconfig
110
111 or::
112
113         make KCONFIG_ALLCONFIG=mini.config allnoconfig
114
115 These examples will disable most options (allnoconfig) but enable or
116 disable the options that are explicitly listed in the specified
117 mini-config files.
118
119 ----------------------------------------------------------------------
120
121 Environment variables for 'randconfig'
122
123 KCONFIG_SEED
124 ------------
125 You can set this to the integer value used to seed the RNG, if you want
126 to somehow debug the behaviour of the kconfig parser/frontends.
127 If not set, the current time will be used.
128
129 KCONFIG_PROBABILITY
130 -------------------
131 This variable can be used to skew the probabilities. This variable can
132 be unset or empty, or set to three different formats:
133
134     =======================     ==================  =====================
135         KCONFIG_PROBABILITY     y:n split           y:m:n split
136     =======================     ==================  =====================
137         unset or empty          50  : 50            33  : 33  : 34
138         N                        N  : 100-N         N/2 : N/2 : 100-N
139     [1] N:M                     N+M : 100-(N+M)      N  :  M  : 100-(N+M)
140     [2] N:M:L                    N  : 100-N          M  :  L  : 100-(M+L)
141     =======================     ==================  =====================
142
143 where N, M and L are integers (in base 10) in the range [0,100], and so
144 that:
145
146     [1] N+M is in the range [0,100]
147
148     [2] M+L is in the range [0,100]
149
150 Examples::
151
152         KCONFIG_PROBABILITY=10
153                 10% of booleans will be set to 'y', 90% to 'n'
154                 5% of tristates will be set to 'y', 5% to 'm', 90% to 'n'
155         KCONFIG_PROBABILITY=15:25
156                 40% of booleans will be set to 'y', 60% to 'n'
157                 15% of tristates will be set to 'y', 25% to 'm', 60% to 'n'
158         KCONFIG_PROBABILITY=10:15:15
159                 10% of booleans will be set to 'y', 90% to 'n'
160                 15% of tristates will be set to 'y', 15% to 'm', 70% to 'n'
161
162 ----------------------------------------------------------------------
163
164 Environment variables for 'syncconfig'
165
166 KCONFIG_NOSILENTUPDATE
167 ----------------------
168 If this variable has a non-blank value, it prevents silent kernel
169 config updates (requires explicit updates).
170
171 KCONFIG_AUTOCONFIG
172 ------------------
173 This environment variable can be set to specify the path & name of the
174 "auto.conf" file.  Its default value is "include/config/auto.conf".
175
176 KCONFIG_AUTOHEADER
177 ------------------
178 This environment variable can be set to specify the path & name of the
179 "autoconf.h" (header) file.
180 Its default value is "include/generated/autoconf.h".
181
182
183 ----------------------------------------------------------------------
184
185 menuconfig
186 ----------
187
188 SEARCHING for CONFIG symbols
189
190 Searching in menuconfig:
191
192         The Search function searches for kernel configuration symbol
193         names, so you have to know something close to what you are
194         looking for.
195
196         Example::
197
198                 /hotplug
199                 This lists all config symbols that contain "hotplug",
200                 e.g., HOTPLUG_CPU, MEMORY_HOTPLUG.
201
202         For search help, enter / followed by TAB-TAB (to highlight
203         <Help>) and Enter.  This will tell you that you can also use
204         regular expressions (regexes) in the search string, so if you
205         are not interested in MEMORY_HOTPLUG, you could try::
206
207                 /^hotplug
208
209         When searching, symbols are sorted thus:
210
211           - first, exact matches, sorted alphabetically (an exact match
212             is when the search matches the complete symbol name);
213           - then, other matches, sorted alphabetically.
214
215         For example: ^ATH.K matches:
216
217             ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG
218             [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...]
219
220         of which only ATH5K and ATH9K match exactly and so are sorted
221         first (and in alphabetical order), then come all other symbols,
222         sorted in alphabetical order.
223
224         In this menu, pressing the key in the (#) prefix will jump
225         directly to that location. You will be returned to the current
226         search results after exiting this new menu.
227
228 ----------------------------------------------------------------------
229
230 User interface options for 'menuconfig'
231
232 MENUCONFIG_COLOR
233 ----------------
234 It is possible to select different color themes using the variable
235 MENUCONFIG_COLOR.  To select a theme use::
236
237         make MENUCONFIG_COLOR=<theme> menuconfig
238
239 Available themes are::
240
241   - mono       => selects colors suitable for monochrome displays
242   - blackbg    => selects a color scheme with black background
243   - classic    => theme with blue background. The classic look
244   - bluetitle  => a LCD friendly version of classic. (default)
245
246 MENUCONFIG_MODE
247 ---------------
248 This mode shows all sub-menus in one large tree.
249
250 Example::
251
252         make MENUCONFIG_MODE=single_menu menuconfig
253
254 ----------------------------------------------------------------------
255
256 nconfig
257 -------
258
259 nconfig is an alternate text-based configurator.  It lists function
260 keys across the bottom of the terminal (window) that execute commands.
261 You can also just use the corresponding numeric key to execute the
262 commands unless you are in a data entry window.  E.g., instead of F6
263 for Save, you can just press 6.
264
265 Use F1 for Global help or F3 for the Short help menu.
266
267 Searching in nconfig:
268
269         You can search either in the menu entry "prompt" strings
270         or in the configuration symbols.
271
272         Use / to begin a search through the menu entries.  This does
273         not support regular expressions.  Use <Down> or <Up> for
274         Next hit and Previous hit, respectively.  Use <Esc> to
275         terminate the search mode.
276
277         F8 (SymSearch) searches the configuration symbols for the
278         given string or regular expression (regex).
279
280         In the SymSearch, pressing the key in the (#) prefix will
281         jump directly to that location. You will be returned to the
282         current search results after exiting this new menu.
283
284 NCONFIG_MODE
285 ------------
286 This mode shows all sub-menus in one large tree.
287
288 Example::
289
290         make NCONFIG_MODE=single_menu nconfig
291
292 ----------------------------------------------------------------------
293
294 xconfig
295 -------
296
297 Searching in xconfig:
298
299         The Search function searches for kernel configuration symbol
300         names, so you have to know something close to what you are
301         looking for.
302
303         Example::
304
305                 Ctrl-F hotplug
306
307         or::
308
309                 Menu: File, Search, hotplug
310
311         lists all config symbol entries that contain "hotplug" in
312         the symbol name.  In this Search dialog, you may change the
313         config setting for any of the entries that are not grayed out.
314         You can also enter a different search string without having
315         to return to the main menu.
316
317
318 ----------------------------------------------------------------------
319
320 gconfig
321 -------
322
323 Searching in gconfig:
324
325         There is no search command in gconfig.  However, gconfig does
326         have several different viewing choices, modes, and options.