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