Start 1.33.0 development cycle
[oweals/busybox.git] / libbb / Config.src
1 #
2 # For a description of the syntax of this configuration file,
3 # see docs/Kconfig-language.txt.
4 #
5
6 comment "Library Tuning"
7
8 INSERT
9
10 choice
11         prompt "Buffer allocation policy"
12         default FEATURE_BUFFERS_USE_MALLOC
13         help
14         There are 3 ways busybox can handle buffer allocations:
15         - Use malloc. This costs code size for the call to xmalloc.
16         - Put them on stack. For some very small machines with limited stack
17         space, this can be deadly. For most folks, this works just fine.
18         - Put them in BSS. This works beautifully for computers with a real
19         MMU (and OS support), but wastes runtime RAM for uCLinux. This
20         behavior was the only one available for versions 0.48 and earlier.
21
22 config FEATURE_BUFFERS_USE_MALLOC
23         bool "Allocate with Malloc"
24
25 config FEATURE_BUFFERS_GO_ON_STACK
26         bool "Allocate on the Stack"
27
28 config FEATURE_BUFFERS_GO_IN_BSS
29         bool "Allocate in the .bss section"
30
31 endchoice
32
33 config PASSWORD_MINLEN
34         int "Minimum password length"
35         default 6
36         range 5 32
37         help
38         Minimum allowable password length.
39
40 config MD5_SMALL
41         int "MD5: Trade bytes for speed (0:fast, 3:slow)"
42         default 1  # all "fast or small" options default to small
43         range 0 3
44         help
45         Trade binary size versus speed for the md5sum algorithm.
46         Approximate values running uClibc and hashing
47         linux-2.4.4.tar.bz2 were:
48         value               user times (sec)  text size (386)
49         0 (fastest)         1.1                6144
50         1                   1.4                5392
51         2                   3.0                5088
52         3 (smallest)        5.1                4912
53
54 config SHA3_SMALL
55         int "SHA3: Trade bytes for speed (0:fast, 1:slow)"
56         default 1  # all "fast or small" options default to small
57         range 0 1
58         help
59         Trade binary size versus speed for the sha3sum algorithm.
60         SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate):
61         64-bit x86: +270 bytes of code, 45% faster
62         32-bit x86: +450 bytes of code, 75% faster
63
64 config FEATURE_FAST_TOP
65         bool "Faster /proc scanning code (+100 bytes)"
66         default n  # all "fast or small" options default to small
67         help
68         This option makes top and ps ~20% faster (or 20% less CPU hungry),
69         but code size is slightly bigger.
70
71 config FEATURE_ETC_NETWORKS
72         bool "Support /etc/networks"
73         default n
74         help
75         Enable support for network names in /etc/networks. This is
76         a rarely used feature which allows you to use names
77         instead of IP/mask pairs in route command.
78
79 config FEATURE_ETC_SERVICES
80         bool "Consult /etc/services even for well-known ports"
81         default n
82         help
83         Look up e.g. "telnet" and "http" in /etc/services file
84         instead of assuming ports 23 and 80.
85         This is almost never necessary (everybody uses standard ports),
86         and it makes sense to avoid reading this file.
87         If you disable this option, in the cases where port is explicitly
88         specified as a service name (e.g. "telnet HOST PORTNAME"),
89         it will still be looked up in /etc/services.
90
91 config FEATURE_EDITING
92         bool "Command line editing"
93         default y
94         help
95         Enable line editing (mainly for shell command line).
96
97 config FEATURE_EDITING_MAX_LEN
98         int "Maximum length of input"
99         range 128 8192
100         default 1024
101         depends on FEATURE_EDITING
102         help
103         Line editing code uses on-stack buffers for storage.
104         You may want to decrease this parameter if your target machine
105         benefits from smaller stack usage.
106
107 config FEATURE_EDITING_VI
108         bool "vi-style line editing commands"
109         default n
110         depends on FEATURE_EDITING
111         help
112         Enable vi-style line editing. In shells, this mode can be
113         turned on and off with "set -o vi" and "set +o vi".
114
115 config FEATURE_EDITING_HISTORY
116         int "History size"
117         # Don't allow way too big values here, code uses fixed "char *history[N]" struct member
118         range 0 9999
119         default 255
120         depends on FEATURE_EDITING
121         help
122         Specify command history size (0 - disable).
123
124 config FEATURE_EDITING_SAVEHISTORY
125         bool "History saving"
126         default y
127         depends on FEATURE_EDITING
128         help
129         Enable history saving in shells.
130
131 config FEATURE_EDITING_SAVE_ON_EXIT
132         bool "Save history on shell exit, not after every command"
133         default n
134         depends on FEATURE_EDITING_SAVEHISTORY
135         help
136         Save history on shell exit, not after every command.
137
138 config FEATURE_REVERSE_SEARCH
139         bool "Reverse history search"
140         default y
141         depends on FEATURE_EDITING
142         help
143         Enable readline-like Ctrl-R combination for reverse history search.
144         Increases code by about 0.5k.
145
146 config FEATURE_TAB_COMPLETION
147         bool "Tab completion"
148         default y
149         depends on FEATURE_EDITING
150
151 config FEATURE_USERNAME_COMPLETION
152         bool "Username completion"
153         default y
154         depends on FEATURE_TAB_COMPLETION
155
156 config FEATURE_EDITING_FANCY_PROMPT
157         bool "Fancy shell prompts"
158         default y
159         depends on FEATURE_EDITING
160         help
161         Setting this option allows for prompts to use things like \w and
162         \$ and escape codes.
163
164 config FEATURE_EDITING_WINCH
165         bool "Enable automatic tracking of window size changes"
166         default y
167         depends on FEATURE_EDITING
168
169 config FEATURE_EDITING_ASK_TERMINAL
170         bool "Query cursor position from terminal"
171         default n
172         depends on FEATURE_EDITING
173         help
174         Allow usage of "ESC [ 6 n" sequence. Terminal answers back with
175         current cursor position. This information is used to make line
176         editing more robust in some cases.
177         If you are not sure whether your terminals respond to this code
178         correctly, or want to save on code size (about 400 bytes),
179         then do not turn this option on.
180
181 config LOCALE_SUPPORT
182         bool "Enable locale support (system needs locale for this to work)"
183         default n
184         help
185         Enable this if your system has locale support and you would like
186         busybox to support locale settings.
187
188 config UNICODE_SUPPORT
189         bool "Support Unicode"
190         default y
191         help
192         This makes various applets aware that one byte is not
193         one character on screen.
194
195         Busybox aims to eventually work correctly with Unicode displays.
196         Any older encodings are not guaranteed to work.
197         Probably by the time when busybox will be fully Unicode-clean,
198         other encodings will be mainly of historic interest.
199
200 config UNICODE_USING_LOCALE
201         bool "Use libc routines for Unicode (else uses internal ones)"
202         default n
203         depends on UNICODE_SUPPORT && LOCALE_SUPPORT
204         help
205         With this option on, Unicode support is implemented using libc
206         routines. Otherwise, internal implementation is used.
207         Internal implementation is smaller.
208
209 config FEATURE_CHECK_UNICODE_IN_ENV
210         bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
211         default n
212         depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
213         help
214         With this option on, Unicode support is activated
215         only if locale-related variables have the value of the form
216         "xxxx.utf8"
217
218         Otherwise, Unicode support will be always enabled and active.
219
220 config SUBST_WCHAR
221         int "Character code to substitute unprintable characters with"
222         depends on UNICODE_SUPPORT
223         default 63
224         help
225         Typical values are 63 for '?' (works with any output device),
226         30 for ASCII substitute control code,
227         65533 (0xfffd) for Unicode replacement character.
228
229 config LAST_SUPPORTED_WCHAR
230         int "Range of supported Unicode characters"
231         depends on UNICODE_SUPPORT
232         default 767
233         help
234         Any character with Unicode value bigger than this is assumed
235         to be non-printable on output device. Many applets replace
236         such characters with substitution character.
237
238         The idea is that many valid printable Unicode chars
239         nevertheless are not displayed correctly. Think about
240         combining charachers, double-wide hieroglyphs, obscure
241         characters in dozens of ancient scripts...
242         Many terminals, terminal emulators, xterms etc will fail
243         to handle them correctly. Choose the smallest value
244         which suits your needs.
245
246         Typical values are:
247         126 - ASCII only
248         767 (0x2ff) - there are no combining chars in [0..767] range
249                         (the range includes Latin 1, Latin Ext. A and B),
250                         code is ~700 bytes smaller for this case.
251         4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
252                         code is ~300 bytes smaller for this case.
253         12799 (0x31ff) - nearly all non-ideographic characters are
254                         available in [0..12799] range, including
255                         East Asian scripts like katakana, hiragana, hangul,
256                         bopomofo...
257         0 - off, any valid printable Unicode character will be printed.
258
259 config UNICODE_COMBINING_WCHARS
260         bool "Allow zero-width Unicode characters on output"
261         default n
262         depends on UNICODE_SUPPORT
263         help
264         With this option off, any Unicode char with width of 0
265         is substituted on output.
266
267 config UNICODE_WIDE_WCHARS
268         bool "Allow wide Unicode characters on output"
269         default n
270         depends on UNICODE_SUPPORT
271         help
272         With this option off, any Unicode char with width > 1
273         is substituted on output.
274
275 config UNICODE_BIDI_SUPPORT
276         bool "Bidirectional character-aware line input"
277         default n
278         depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
279         help
280         With this option on, right-to-left Unicode characters
281         are treated differently on input (e.g. cursor movement).
282
283 config UNICODE_NEUTRAL_TABLE
284         bool "In bidi input, support non-ASCII neutral chars too"
285         default n
286         depends on UNICODE_BIDI_SUPPORT
287         help
288         In most cases it's enough to treat only ASCII non-letters
289         (i.e. punctuation, numbers and space) as characters
290         with neutral directionality.
291         With this option on, more extensive (and bigger) table
292         of neutral chars will be used.
293
294 config UNICODE_PRESERVE_BROKEN
295         bool "Make it possible to enter sequences of chars which are not Unicode"
296         default n
297         depends on UNICODE_SUPPORT
298         help
299         With this option on, on line-editing input (such as used by shells)
300         invalid UTF-8 bytes are not substituted with the selected
301         substitution character.
302         For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
303         at shell prompt will list file named 0xff (single char name
304         with char value 255), not file named '?'.
305
306 config FEATURE_NON_POSIX_CP
307         bool "Non-POSIX, but safer, copying to special nodes"
308         default y
309         help
310         With this option, "cp file symlink" will delete symlink
311         and create a regular file. This does not conform to POSIX,
312         but prevents a symlink attack.
313         Similarly, "cp file device" will not send file's data
314         to the device. (To do that, use "cat file >device")
315
316 config FEATURE_VERBOSE_CP_MESSAGE
317         bool "Give more precise messages when copy fails (cp, mv etc)"
318         default n
319         help
320         Error messages with this feature enabled:
321
322         $ cp file /does_not_exist/file
323         cp: cannot create '/does_not_exist/file': Path does not exist
324         $ cp file /vmlinuz/file
325         cp: cannot stat '/vmlinuz/file': Path has non-directory component
326
327         If this feature is not enabled, they will be, respectively:
328
329         cp: cannot create '/does_not_exist/file': No such file or directory
330         cp: cannot stat '/vmlinuz/file': Not a directory
331
332         This will cost you ~60 bytes.
333
334 config FEATURE_USE_SENDFILE
335         bool "Use sendfile system call"
336         default y
337         select PLATFORM_LINUX
338         help
339         When enabled, busybox will use the kernel sendfile() function
340         instead of read/write loops to copy data between file descriptors
341         (for example, cp command does this a lot).
342         If sendfile() doesn't work, copying code falls back to read/write
343         loop. sendfile() was originally implemented for faster I/O
344         from files to sockets, but since Linux 2.6.33 it was extended
345         to work for many more file types.
346
347 config FEATURE_COPYBUF_KB
348         int "Copy buffer size, in kilobytes"
349         range 1 1024
350         default 4
351         help
352         Size of buffer used by cp, mv, install, wget etc.
353         Buffers which are 4 kb or less will be allocated on stack.
354         Bigger buffers will be allocated with mmap, with fallback to 4 kb
355         stack buffer if mmap fails.
356
357 config FEATURE_SKIP_ROOTFS
358         bool "Skip rootfs in mount table"
359         default y
360         help
361         Ignore rootfs entry in mount table.
362
363         In Linux, kernel has a special filesystem, rootfs, which is initially
364         mounted on /. It contains initramfs data, if kernel is configured
365         to have one. Usually, another file system is mounted over / early
366         in boot process, and therefore most tools which manipulate
367         mount table, such as df, will skip rootfs entry.
368
369         However, some systems do not mount anything on /.
370         If you need to configure busybox for one of these systems,
371         you may find it useful to turn this option off to make df show
372         initramfs statistics.
373
374         Otherwise, choose Y.
375
376 config MONOTONIC_SYSCALL
377         bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
378         default y
379         select PLATFORM_LINUX
380         help
381         Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
382         time intervals (time, ping, traceroute etc need this).
383         Probably requires Linux 2.6+. If not selected, gettimeofday
384         will be used instead (which gives wrong results if date/time
385         is reset).
386
387 config IOCTL_HEX2STR_ERROR
388         bool "Use ioctl names rather than hex values in error messages"
389         default y
390         help
391         Use ioctl names rather than hex values in error messages
392         (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
393         saves about 1400 bytes.
394
395 config FEATURE_HWIB
396         bool "Support infiniband HW"
397         default y
398         help
399         Support for printing infiniband addresses in network applets.