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