xref: /linux/Documentation/kbuild/kconfig.rst (revision 3d0fe49454652117522f60bfbefb978ba0e5300b)
1===================
2Kconfig make config
3===================
4
5This file contains some assistance for using `make *config`.
6
7Use "make help" to list all of the possible configuration targets.
8
9The xconfig ('qconf'), menuconfig ('mconf'), and nconfig ('nconf')
10programs also have embedded help text.  Be sure to check that for
11navigation, search, and other general help text.
12
13The gconfig ('gconf') program has limited help text.
14
15General
16-------
17
18New kernel releases often introduce new config symbols.  Often more
19important, new kernel releases may rename config symbols.  When
20this happens, using a previously working .config file and running
21"make oldconfig" won't necessarily produce a working new kernel
22for you, so you may find that you need to see what NEW kernel
23symbols have been introduced.
24
25To see a list of new config symbols, use::
26
27	cp user/some/old.config .config
28	make listnewconfig
29
30and the config program will list any new symbols, one per line.
31
32Alternatively, you can use the brute force method::
33
34	make oldconfig
35	scripts/diffconfig .config.old .config | less
36
37----------------------------------------------------------------------
38
39Environment variables for `*config`
40
41KCONFIG_CONFIG
42--------------
43This environment variable can be used to specify a default kernel config
44file name to override the default name of ".config".
45
46KCONFIG_DEFCONFIG_LIST
47----------------------
48
49This environment variable specifies a list of config files which can be used
50as a base configuration in case the .config does not exist yet. Entries in
51the list are separated with whitespaces to each other, and the first one
52that exists is used.
53
54KCONFIG_OVERWRITECONFIG
55-----------------------
56If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not
57break symlinks when .config is a symlink to somewhere else.
58
59KCONFIG_WARN_UNKNOWN_SYMBOLS
60----------------------------
61This environment variable makes Kconfig warn about all unrecognized
62symbols in the config input.
63
64KCONFIG_WERROR
65--------------
66If set, Kconfig treats warnings as errors.
67
68`CONFIG_`
69---------
70If you set `CONFIG_` in the environment, Kconfig will prefix all symbols
71with its value when saving the configuration, instead of using the default,
72`CONFIG_`.
73
74----------------------------------------------------------------------
75
76Environment variables for '{allyes/allmod/allno/rand}config'
77
78KCONFIG_ALLCONFIG
79-----------------
80(partially based on lkml email from/by Rob Landley, re: miniconfig)
81
82--------------------------------------------------
83
84The allyesconfig/allmodconfig/allnoconfig/randconfig variants can also
85use the environment variable KCONFIG_ALLCONFIG as a flag or a filename
86that contains config symbols that the user requires to be set to a
87specific value.  If KCONFIG_ALLCONFIG is used without a filename where
88KCONFIG_ALLCONFIG == "" or KCONFIG_ALLCONFIG == "1", `make *config`
89checks for a file named "all{yes/mod/no/def/random}.config"
90(corresponding to the `*config` command that was used) for symbol values
91that are to be forced.  If this file is not found, it checks for a
92file named "all.config" to contain forced values.
93
94This enables you to create "miniature" config (miniconfig) or custom
95config files containing just the config symbols that you are interested
96in.  Then the kernel config system generates the full .config file,
97including symbols of your miniconfig file.
98
99This 'KCONFIG_ALLCONFIG' file is a config file which contains
100(usually a subset of all) preset config symbols.  These variable
101settings are still subject to normal dependency checks.
102
103Examples::
104
105	KCONFIG_ALLCONFIG=custom-notebook.config make allnoconfig
106
107or::
108
109	KCONFIG_ALLCONFIG=mini.config make allnoconfig
110
111or::
112
113	make KCONFIG_ALLCONFIG=mini.config allnoconfig
114
115These examples will disable most options (allnoconfig) but enable or
116disable the options that are explicitly listed in the specified
117mini-config files.
118
119----------------------------------------------------------------------
120
121Environment variables for 'randconfig'
122
123KCONFIG_SEED
124------------
125You can set this to the integer value used to seed the RNG, if you want
126to somehow debug the behaviour of the kconfig parser/frontends.
127If not set, the current time will be used.
128
129KCONFIG_PROBABILITY
130-------------------
131This variable can be used to skew the probabilities. This variable can
132be 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
143where N, M and L are integers (in base 10) in the range [0,100], and so
144that:
145
146    [1] N+M is in the range [0,100]
147
148    [2] M+L is in the range [0,100]
149
150Examples::
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
164Environment variables for 'syncconfig'
165
166KCONFIG_NOSILENTUPDATE
167----------------------
168If this variable has a non-blank value, it prevents silent kernel
169config updates (requires explicit updates).
170
171KCONFIG_AUTOCONFIG
172------------------
173This 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
176KCONFIG_AUTOHEADER
177------------------
178This environment variable can be set to specify the path & name of the
179"autoconf.h" (header) file.
180Its default value is "include/generated/autoconf.h".
181
182
183----------------------------------------------------------------------
184
185menuconfig
186----------
187
188SEARCHING for CONFIG symbols
189
190Searching 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
230User interface options for 'menuconfig'
231
232MENUCONFIG_COLOR
233----------------
234It is possible to select different color themes using the variable
235MENUCONFIG_COLOR.  To select a theme use::
236
237	make MENUCONFIG_COLOR=<theme> menuconfig
238
239Available 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
246MENUCONFIG_MODE
247---------------
248This mode shows all sub-menus in one large tree.
249
250Example::
251
252	make MENUCONFIG_MODE=single_menu menuconfig
253
254----------------------------------------------------------------------
255
256nconfig
257-------
258
259nconfig is an alternate text-based configurator.  It lists function
260keys across the bottom of the terminal (window) that execute commands.
261You can also just use the corresponding numeric key to execute the
262commands unless you are in a data entry window.  E.g., instead of F6
263for Save, you can just press 6.
264
265Use F1 for Global help or F3 for the Short help menu.
266
267Searching 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
284NCONFIG_MODE
285------------
286This mode shows all sub-menus in one large tree.
287
288Example::
289
290	make NCONFIG_MODE=single_menu nconfig
291
292----------------------------------------------------------------------
293
294xconfig
295-------
296
297Searching 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
320gconfig
321-------
322
323Searching in gconfig:
324
325	There is no search command in gconfig.  However, gconfig does
326	have several different viewing choices, modes, and options.
327