more fine-grained Unicode support
[oweals/busybox.git] / Config.in
1 #
2 # For a description of the syntax of this configuration file,
3 # see scripts/kbuild/config-language.txt.
4 #
5
6 mainmenu "BusyBox Configuration"
7
8 config HAVE_DOT_CONFIG
9         bool
10         default y
11
12 menu "Busybox Settings"
13
14 menu "General Configuration"
15
16 config DESKTOP
17         bool "Enable options for full-blown desktop systems"
18         default n
19         help
20           Enable options and features which are not essential.
21           Select this only if you plan to use busybox on full-blown
22           desktop machine with common Linux distro, not on an embedded box.
23
24 config EXTRA_COMPAT
25         bool "Provide compatible behavior for rare corner cases (bigger code)"
26         default n
27         help
28           This option makes grep, sed etc handle rare corner cases
29           (embedded NUL bytes and such). This makes code bigger and uses
30           some GNU extensions in libc. You probably only need this option
31           if you plan to run busybox on desktop.
32
33 config INCLUDE_SUSv2
34         bool "Enable obsolete features removed before SUSv3"
35         default y
36         help
37           This option will enable backwards compatibility with SuSv2,
38           specifically, old-style numeric options ('command -1 <file>')
39           will be supported in head, tail, and fold. (Note: should
40           affect renice too.)
41
42 config USE_PORTABLE_CODE
43         bool "Avoid using GCC-specific code constructs"
44         default n
45         help
46           Use this option if you are trying to compile busybox with
47           compiler other than gcc.
48           If you do use gcc, this option may needlessly increase code size.
49
50 choice
51         prompt "Buffer allocation policy"
52         default FEATURE_BUFFERS_USE_MALLOC
53         help
54           There are 3 ways BusyBox can handle buffer allocations:
55           - Use malloc. This costs code size for the call to xmalloc.
56           - Put them on stack. For some very small machines with limited stack
57             space, this can be deadly. For most folks, this works just fine.
58           - Put them in BSS. This works beautifully for computers with a real
59             MMU (and OS support), but wastes runtime RAM for uCLinux. This
60             behavior was the only one available for BusyBox versions 0.48 and
61             earlier.
62
63 config FEATURE_BUFFERS_USE_MALLOC
64         bool "Allocate with Malloc"
65
66 config FEATURE_BUFFERS_GO_ON_STACK
67         bool "Allocate on the Stack"
68
69 config FEATURE_BUFFERS_GO_IN_BSS
70         bool "Allocate in the .bss section"
71
72 endchoice
73
74 config SHOW_USAGE
75         bool "Show terse applet usage messages"
76         default y
77         help
78           All BusyBox applets will show help messages when invoked with
79           wrong arguments. You can turn off printing these terse usage
80           messages if you say no here.
81           This will save you up to 7k.
82
83 config FEATURE_VERBOSE_USAGE
84         bool "Show verbose applet usage messages"
85         default n
86         select SHOW_USAGE
87         help
88           All BusyBox applets will show more verbose help messages when
89           busybox is invoked with --help. This will add a lot of text to the
90           busybox binary. In the default configuration, this will add about
91           13k, but it can add much more depending on your configuration.
92
93 config FEATURE_COMPRESS_USAGE
94         bool "Store applet usage messages in compressed form"
95         default y
96         depends on SHOW_USAGE
97         help
98           Store usage messages in compressed form, uncompress them on-the-fly
99           when <applet> --help is called.
100
101           If you have a really tiny busybox with few applets enabled (and
102           bunzip2 isn't one of them), the overhead of the decompressor might
103           be noticeable. Also, if you run executables directly from ROM
104           and have very little memory, this might not be a win. Otherwise,
105           you probably want this.
106
107 config FEATURE_INSTALLER
108         bool "Support --install [-s] to install applet links at runtime"
109         default n
110         help
111           Enable 'busybox --install [-s]' support. This will allow you to use
112           busybox at runtime to create hard links or symlinks for all the
113           applets that are compiled into busybox.
114
115 config LOCALE_SUPPORT
116         bool "Enable locale support (system needs locale for this to work)"
117         default n
118         help
119           Enable this if your system has locale support and you would like
120           busybox to support locale settings.
121
122 config FEATURE_ASSUME_UNICODE
123         bool "Support Unicode"
124         default n
125         help
126           This makes various applets aware that one byte is not
127           one character on screen.
128
129           Busybox aims to eventually work correctly with Unicode displays.
130           Any older encodings are not guaranteed to work.
131           Probably by the time when busybox will be fully Unicode-clean,
132           other encodings will be mainly of historic interest.
133
134 config FEATURE_CHECK_UNICODE_IN_ENV
135         bool "Check $LANG environment variable"
136         default y
137         depends on FEATURE_ASSUME_UNICODE && !LOCALE_SUPPORT
138         help
139           With this option on, Unicode support is activated
140           only if LANG variable has the value of the form "xxxx.utf8"
141
142           Otherwise, Unicode support will be always enabled and active.
143
144 config SUBST_WCHAR
145         int "Character code to substitute unprintable characters with"
146         range 1 4294967295
147         depends on FEATURE_ASSUME_UNICODE
148         default 63
149         help
150           Typical values are 63 for '?' (works with any output device),
151           30 for ASCII substitute control code,
152           65533 (0xfffd) for Unicode replacement character.
153
154 config LAST_SUPPORTED_WCHAR
155         int "Range of supported Unicode characters"
156         range 0 4294967295
157         depends on FEATURE_ASSUME_UNICODE
158         default 767
159         help
160           Any character with Unicode value bigger than this is assumed
161           to be non-printable on output device. Many applets replace
162           such chars with substitution character.
163
164           The idea is that many valid printable Unicode chars are
165           nevertheless are not displayed correctly. Think about
166           combining charachers, double-wide hieroglyphs and such.
167           Many terminals, xterms and such will fail to handle them
168           correctly.
169
170           Typical values are:
171           126 - ASCII only
172           767 (0x2ff) - there are no combining chars in [0..767] range
173                         (the range includes Latin 1, Latin Ext. A and B),
174                         code is ~700 bytes smaller for this case.
175           4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
176                         code is ~300 bytes smaller for this case.
177           0 - off, any valid printable Unicode character will be printed.
178
179 config UNICODE_COMBINING_WCHARS
180         bool "Allow zero-width Unicode characters on output"
181         default n
182         depends on FEATURE_ASSUME_UNICODE
183         help
184           With this option off, any Unicode char with width of 0
185           is substituted on output.
186
187 config UNICODE_WIDE_WCHARS
188         bool "Allow wide Unicode characters on output"
189         default n
190         depends on FEATURE_ASSUME_UNICODE
191         help
192           With this option off, any Unicode char with width > 1
193           is substituted on output.
194
195 config LONG_OPTS
196         bool "Support for --long-options"
197         default y
198         help
199           Enable this if you want busybox applets to use the gnu --long-option
200           style, in addition to single character -a -b -c style options.
201
202 config FEATURE_DEVPTS
203         bool "Use the devpts filesystem for Unix98 PTYs"
204         default y
205         help
206           Enable if you want BusyBox to use Unix98 PTY support. If enabled,
207           busybox will use /dev/ptmx for the master side of the pseudoterminal
208           and /dev/pts/<number> for the slave side. Otherwise, BSD style
209           /dev/ttyp<number> will be used. To use this option, you should have
210           devpts mounted.
211
212 config FEATURE_CLEAN_UP
213         bool "Clean up all memory before exiting (usually not needed)"
214         default n
215         help
216           As a size optimization, busybox normally exits without explicitly
217           freeing dynamically allocated memory or closing files. This saves
218           space since the OS will clean up for us, but it can confuse debuggers
219           like valgrind, which report tons of memory and resource leaks.
220
221           Don't enable this unless you have a really good reason to clean
222           things up manually.
223
224 config FEATURE_PIDFILE
225         bool "Support writing pidfiles"
226         default n
227         help
228           This option makes some applets (e.g. crond, syslogd, inetd) write
229           a pidfile in /var/run. Some applications rely on them.
230
231 config FEATURE_SUID
232         bool "Support for SUID/SGID handling"
233         default n
234         help
235           With this option you can install the busybox binary belonging
236           to root with the suid bit set, and it will automatically drop
237           priviledges for applets that don't need root access.
238
239           If you are really paranoid and don't want to do this, build two
240           busybox binaries with different applets in them (and the appropriate
241           symlinks pointing to each binary), and only set the suid bit on the
242           one that needs it. The applets currently marked to need the suid bit
243           are:
244
245           crontab, dnsd, findfs, ipcrm, ipcs, login, passwd, ping, su,
246           traceroute, vlock.
247
248 config FEATURE_SUID_CONFIG
249         bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
250         default n if FEATURE_SUID
251         depends on FEATURE_SUID
252         help
253           Allow the SUID / SGID state of an applet to be determined at runtime
254           by checking /etc/busybox.conf. (This is sort of a poor man's sudo.)
255           The format of this file is as follows:
256
257           <applet> = [Ssx-][Ssx-][x-] (<username>|<uid>).(<groupname>|<gid>)
258
259           An example might help:
260
261           [SUID]
262           su = ssx root.0 # applet su can be run by anyone and runs with
263                           # euid=0/egid=0
264           su = ssx        # exactly the same
265
266           mount = sx- root.disk # applet mount can be run by root and members
267                                 # of group disk and runs with euid=0
268
269           cp = --- # disable applet cp for everyone
270
271           The file has to be owned by user root, group root and has to be
272           writeable only by root:
273                 (chown 0.0 /etc/busybox.conf; chmod 600 /etc/busybox.conf)
274           The busybox executable has to be owned by user root, group
275           root and has to be setuid root for this to work:
276                 (chown 0.0 /bin/busybox; chmod 4755 /bin/busybox)
277
278           Robert 'sandman' Griebl has more information here:
279           <url: http://www.softforge.de/bb/suid.html >.
280
281 config FEATURE_SUID_CONFIG_QUIET
282         bool "Suppress warning message if /etc/busybox.conf is not readable"
283         default y
284         depends on FEATURE_SUID_CONFIG
285         help
286           /etc/busybox.conf should be readable by the user needing the SUID,
287           check this option to avoid users to be notified about missing
288           permissions.
289
290 config SELINUX
291         bool "Support NSA Security Enhanced Linux"
292         default n
293         help
294           Enable support for SELinux in applets ls, ps, and id. Also provide
295           the option of compiling in SELinux applets.
296
297           If you do not have a complete SELinux userland installed, this stuff
298           will not compile. Go visit
299                 http://www.nsa.gov/selinux/index.html
300           to download the necessary stuff to allow busybox to compile with
301           this option enabled. Specifially, libselinux 1.28 or better is
302           directly required by busybox. If the installation is located in a
303           non-standard directory, provide it by invoking make as follows:
304                 CFLAGS=-I<libselinux-include-path> \
305                 LDFLAGS=-L<libselinux-lib-path> \
306                 make
307
308           Most people will leave this set to 'N'.
309
310 config FEATURE_PREFER_APPLETS
311         bool "exec prefers applets"
312         default n
313         help
314           This is an experimental option which directs applets about to
315           call 'exec' to try and find an applicable busybox applet before
316           searching the PATH. This is typically done by exec'ing
317           /proc/self/exe.
318           This may affect shell, find -exec, xargs and similar applets.
319           They will use applets even if /bin/<applet> -> busybox link
320           is missing (or is not a link to busybox). However, this causes
321           problems in chroot jails without mounted /proc and with ps/top
322           (command name can be shown as 'exe' for applets started this way).
323
324 config BUSYBOX_EXEC_PATH
325         string "Path to BusyBox executable"
326         default "/proc/self/exe"
327         help
328           When Busybox applets need to run other busybox applets, BusyBox
329           sometimes needs to exec() itself. When the /proc filesystem is
330           mounted, /proc/self/exe always points to the currently running
331           executable. If you haven't got /proc, set this to wherever you
332           want to run BusyBox from.
333
334 # These are auto-selected by other options
335
336 config FEATURE_SYSLOG
337         bool #No description makes it a hidden option
338         default n
339         #help
340         #  This option is auto-selected when you select any applet which may
341         #  send its output to syslog. You do not need to select it manually.
342
343 config FEATURE_HAVE_RPC
344         bool #No description makes it a hidden option
345         default n
346         #help
347         #  This is automatically selected if any of enabled applets need it.
348         #  You do not need to select it manually.
349
350 endmenu
351
352 menu 'Build Options'
353
354 config STATIC
355         bool "Build BusyBox as a static binary (no shared libs)"
356         default n
357         help
358           If you want to build a static BusyBox binary, which does not
359           use or require any shared libraries, then enable this option.
360           This can cause BusyBox to be considerably larger, so you should
361           leave this option false unless you have a good reason (i.e.
362           your target platform does not support shared libraries, or
363           you are building an initrd which doesn't need anything but
364           BusyBox, etc).
365
366           Most people will leave this set to 'N'.
367
368 config PIE
369         bool "Build BusyBox as a position independent executable"
370         default n
371         depends on !STATIC
372         help
373           (TODO: what is it and why/when is it useful?)
374           Most people will leave this set to 'N'.
375
376 config NOMMU
377         bool "Force NOMMU build"
378         default n
379         help
380           Busybox tries to detect whether architecture it is being
381           built against supports MMU or not. If this detection fails,
382           or if you want to build NOMMU version of busybox for testing,
383           you may force NOMMU build here.
384
385           Most people will leave this set to 'N'.
386
387 # PIE can be made to work with BUILD_LIBBUSYBOX, but currently
388 # build system does not support that
389 config BUILD_LIBBUSYBOX
390         bool "Build shared libbusybox"
391         default n
392         depends on !FEATURE_PREFER_APPLETS && !PIE && !STATIC
393         help
394           Build a shared library libbusybox.so.N.N.N which contains all
395           busybox code.
396
397           This feature allows every applet to be built as a tiny
398           separate executable. Enabling it for "one big busybox binary"
399           approach serves no purpose and increases code size.
400           You should almost certainly say "no" to this.
401
402 ### config FEATURE_FULL_LIBBUSYBOX
403 ###     bool "Feature-complete libbusybox"
404 ###     default n if !FEATURE_SHARED_BUSYBOX
405 ###     depends on BUILD_LIBBUSYBOX
406 ###     help
407 ###       Build a libbusybox with the complete feature-set, disregarding
408 ###       the actually selected config.
409 ###
410 ###       Normally, libbusybox will only contain the features which are
411 ###       used by busybox itself. If you plan to write a separate
412 ###       standalone application which uses libbusybox say 'Y'.
413 ###
414 ###       Note: libbusybox is GPL, not LGPL, and exports no stable API that
415 ###       might act as a copyright barrier. We can and will modify the
416 ###       exported function set between releases (even minor version number
417 ###       changes), and happily break out-of-tree features.
418 ###
419 ###       Say 'N' if in doubt.
420
421 config FEATURE_INDIVIDUAL
422         bool "Produce a binary for each applet, linked against libbusybox"
423         default y
424         depends on BUILD_LIBBUSYBOX
425         help
426           If your CPU architecture doesn't allow for sharing text/rodata
427           sections of running binaries, but allows for runtime dynamic
428           libraries, this option will allow you to reduce memory footprint
429           when you have many different applets running at once.
430
431           If your CPU architecture allows for sharing text/rodata,
432           having single binary is more optimal.
433
434           Each applet will be a tiny program, dynamically linked
435           against libbusybox.so.N.N.N.
436
437           You need to have a working dynamic linker.
438
439 config FEATURE_SHARED_BUSYBOX
440         bool "Produce additional busybox binary linked against libbusybox"
441         default y
442         depends on BUILD_LIBBUSYBOX
443         help
444           Build busybox, dynamically linked against libbusybox.so.N.N.N.
445
446           You need to have a working dynamic linker.
447
448 ### config BUILD_AT_ONCE
449 ###     bool "Compile all sources at once"
450 ###     default n
451 ###     help
452 ###       Normally each source-file is compiled with one invocation of
453 ###       the compiler.
454 ###       If you set this option, all sources are compiled at once.
455 ###       This gives the compiler more opportunities to optimize which can
456 ###       result in smaller and/or faster binaries.
457 ###
458 ###       Setting this option will consume alot of memory, e.g. if you
459 ###       enable all applets with all features, gcc uses more than 300MB
460 ###       RAM during compilation of busybox.
461 ###
462 ###       This option is most likely only beneficial for newer compilers
463 ###       such as gcc-4.1 and above.
464 ###
465 ###       Say 'N' unless you know what you are doing.
466
467 config LFS
468         bool "Build with Large File Support (for accessing files > 2 GB)"
469         default n
470         select FDISK_SUPPORT_LARGE_DISKS
471         help
472           If you want to build BusyBox with large file support, then enable
473           this option. This will have no effect if your kernel or your C
474           library lacks large file support for large files. Some of the
475           programs that can benefit from large file support include dd, gzip,
476           cp, mount, tar, and many others. If you want to access files larger
477           than 2 Gigabytes, enable this option. Otherwise, leave it set to 'N'.
478
479 config CROSS_COMPILER_PREFIX
480         string "Cross Compiler prefix"
481         default ""
482         help
483           If you want to build BusyBox with a cross compiler, then you
484           will need to set this to the cross-compiler prefix, for example,
485           "i386-uclibc-".
486
487           Note that CROSS_COMPILE environment variable or
488           "make CROSS_COMPILE=xxx ..." will override this selection.
489
490           Native builds leave this empty.
491
492 config EXTRA_CFLAGS
493         string "Additional CFLAGS"
494         default ""
495         help
496           Additional CFLAGS to pass to the compiler verbatim.
497
498 endmenu
499
500 menu 'Debugging Options'
501
502 config DEBUG
503         bool "Build BusyBox with extra Debugging symbols"
504         default n
505         help
506           Say Y here if you wish to examine BusyBox internals while applets are
507           running. This increases the size of the binary considerably, and
508           should only be used when doing development. If you are doing
509           development and want to debug BusyBox, answer Y.
510
511           Most people should answer N.
512
513 config DEBUG_PESSIMIZE
514         bool "Disable compiler optimizations"
515         default n
516         depends on DEBUG
517         help
518           The compiler's optimization of source code can eliminate and reorder
519           code, resulting in an executable that's hard to understand when
520           stepping through it with a debugger. This switches it off, resulting
521           in a much bigger executable that more closely matches the source
522           code.
523
524 config WERROR
525         bool "Abort compilation on any warning"
526         default n
527         help
528           Selecting this will add -Werror to gcc command line.
529
530           Most people should answer N.
531
532 choice
533         prompt "Additional debugging library"
534         default NO_DEBUG_LIB
535         help
536           Using an additional debugging library will make BusyBox become
537           considerable larger and will cause it to run more slowly. You
538           should always leave this option disabled for production use.
539
540           dmalloc support:
541           ----------------
542           This enables compiling with dmalloc ( http://dmalloc.com/ )
543           which is an excellent public domain mem leak and malloc problem
544           detector. To enable dmalloc, before running busybox you will
545           want to properly set your environment, for example:
546             export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
547           The 'debug=' value is generated using the following command
548             dmalloc -p log-stats -p log-non-free -p log-bad-space \
549                -p log-elapsed-time -p check-fence -p check-heap \
550                -p check-lists -p check-blank -p check-funcs -p realloc-copy \
551                -p allow-free-null
552
553           Electric-fence support:
554           -----------------------
555           This enables compiling with Electric-fence support. Electric
556           fence is another very useful malloc debugging library which uses
557           your computer's virtual memory hardware to detect illegal memory
558           accesses. This support will make BusyBox be considerable larger
559           and run slower, so you should leave this option disabled unless
560           you are hunting a hard to find memory problem.
561
562
563 config NO_DEBUG_LIB
564         bool "None"
565
566 config DMALLOC
567         bool "Dmalloc"
568
569 config EFENCE
570         bool "Electric-fence"
571
572 endchoice
573
574 ### config PARSE
575 ###     bool "Uniform config file parser debugging applet: parse"
576
577 endmenu
578
579 menu 'Installation Options'
580
581 config INSTALL_NO_USR
582         bool "Don't use /usr"
583         default n
584         help
585           Disable use of /usr. Don't activate this option if you don't know
586           that you really want this behaviour.
587
588 choice
589         prompt "Applets links"
590         default INSTALL_APPLET_SYMLINKS
591         help
592           Choose how you install applets links.
593
594 config INSTALL_APPLET_SYMLINKS
595         bool "as soft-links"
596         help
597           Install applets as soft-links to the busybox binary. This needs some
598           free inodes on the filesystem, but might help with filesystem
599           generators that can't cope with hard-links.
600
601 config INSTALL_APPLET_HARDLINKS
602         bool "as hard-links"
603         help
604           Install applets as hard-links to the busybox binary. This might
605           count on a filesystem with few inodes.
606
607 config INSTALL_APPLET_SCRIPT_WRAPPERS
608         bool "as script wrappers"
609         help
610           Install applets as script wrappers that call the busybox binary.
611
612 config INSTALL_APPLET_DONT
613         bool "not installed"
614         depends on FEATURE_INSTALLER || FEATURE_SH_STANDALONE || FEATURE_PREFER_APPLETS
615         help
616           Do not install applet links. Useful when using the -install feature
617           or a standalone shell for rescue purposes.
618
619 endchoice
620
621 choice
622         prompt "/bin/sh applet link"
623         default INSTALL_SH_APPLET_SYMLINK
624         depends on INSTALL_APPLET_SCRIPT_WRAPPERS
625         help
626           Choose how you install /bin/sh applet link.
627
628 config INSTALL_SH_APPLET_SYMLINK
629         bool "as soft-link"
630         help
631           Install /bin/sh applet as soft-link to the busybox binary.
632
633 config INSTALL_SH_APPLET_HARDLINK
634         bool "as hard-link"
635         help
636           Install /bin/sh applet as hard-link to the busybox binary.
637
638 config INSTALL_SH_APPLET_SCRIPT_WRAPPER
639         bool "as script wrapper"
640         help
641           Install /bin/sh applet as script wrapper that call the busybox
642           binary.
643
644 endchoice
645
646 config PREFIX
647         string "BusyBox installation prefix"
648         default "./_install"
649         help
650           Define your directory to install BusyBox files/subdirs in.
651
652 endmenu
653
654 source libbb/Config.in
655
656 endmenu
657
658 comment "Applets"
659
660 source archival/Config.in
661 source coreutils/Config.in
662 source console-tools/Config.in
663 source debianutils/Config.in
664 source editors/Config.in
665 source findutils/Config.in
666 source init/Config.in
667 source loginutils/Config.in
668 source e2fsprogs/Config.in
669 source modutils/Config.in
670 source util-linux/Config.in
671 source miscutils/Config.in
672 source networking/Config.in
673 source printutils/Config.in
674 source mailutils/Config.in
675 source procps/Config.in
676 source runit/Config.in
677 source selinux/Config.in
678 source shell/Config.in
679 source sysklogd/Config.in