Collapse three levers of menuconfig to two levels.
[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 config DESKTOP
15         bool "Enable options for full-blown desktop systems"
16         default y
17         help
18           Enable options and features which are not essential.
19           Select this if you plan to use busybox on full-blown desktop machine
20           with common Linux distro, which needs higher level of command-line
21           compatibility.
22
23           If you are preparing your build to be used on an embedded box
24           where you have tighter control over the entire set of userspace
25           tools, you can unselect this option for smaller code size. 
26
27 config EXTRA_COMPAT
28         bool "Provide compatible behavior for rare corner cases (bigger code)"
29         default n
30         help
31           This option makes grep, sed etc handle rare corner cases
32           (embedded NUL bytes and such). This makes code bigger and uses
33           some GNU extensions in libc. You probably only need this option
34           if you plan to run busybox on desktop.
35
36 config INCLUDE_SUSv2
37         bool "Enable obsolete features removed before SUSv3"
38         default y
39         help
40           This option will enable backwards compatibility with SuSv2,
41           specifically, old-style numeric options ('command -1 <file>')
42           will be supported in head, tail, and fold. (Note: should
43           affect renice too.)
44
45 config USE_PORTABLE_CODE
46         bool "Avoid using GCC-specific code constructs"
47         default n
48         help
49           Use this option if you are trying to compile busybox with
50           compiler other than gcc.
51           If you do use gcc, this option may needlessly increase code size.
52
53 config PLATFORM_LINUX
54         bool "Enable Linux-specific applets and features"
55         default y
56         help
57           For the most part, busybox requires only POSIX compatibility
58           from the target system, but some applets and features use
59           Linux-specific interfaces.
60
61           Answering 'N' here will disable such applets and hide the
62           corresponding configuration options.
63
64 choice
65         prompt "Buffer allocation policy"
66         default FEATURE_BUFFERS_USE_MALLOC
67         help
68           There are 3 ways BusyBox can handle buffer allocations:
69           - Use malloc. This costs code size for the call to xmalloc.
70           - Put them on stack. For some very small machines with limited stack
71             space, this can be deadly. For most folks, this works just fine.
72           - Put them in BSS. This works beautifully for computers with a real
73             MMU (and OS support), but wastes runtime RAM for uCLinux. This
74             behavior was the only one available for BusyBox versions 0.48 and
75             earlier.
76
77 config FEATURE_BUFFERS_USE_MALLOC
78         bool "Allocate with Malloc"
79
80 config FEATURE_BUFFERS_GO_ON_STACK
81         bool "Allocate on the Stack"
82
83 config FEATURE_BUFFERS_GO_IN_BSS
84         bool "Allocate in the .bss section"
85
86 endchoice
87
88 config SHOW_USAGE
89         bool "Show applet usage messages"
90         default y
91         help
92           Enabling this option, BusyBox applets will show terse help messages
93           when invoked with wrong arguments.
94           If you do not want to show any (helpful) usage message when
95           issuing wrong command syntax, you can say 'N' here,
96           saving approximately 7k.
97
98 config FEATURE_VERBOSE_USAGE
99         bool "Show verbose applet usage messages"
100         default y
101         depends on SHOW_USAGE
102         help
103           All BusyBox applets will show verbose help messages when
104           busybox is invoked with --help. This will add a lot of text to the
105           busybox binary. In the default configuration, this will add about
106           13k, but it can add much more depending on your configuration.
107
108 config FEATURE_COMPRESS_USAGE
109         bool "Store applet usage messages in compressed form"
110         default y
111         depends on SHOW_USAGE
112         help
113           Store usage messages in .bz compressed form, uncompress them
114           on-the-fly when <applet> --help is called.
115
116           If you have a really tiny busybox with few applets enabled (and
117           bunzip2 isn't one of them), the overhead of the decompressor might
118           be noticeable. Also, if you run executables directly from ROM
119           and have very little memory, this might not be a win. Otherwise,
120           you probably want this.
121
122 config BUSYBOX
123         bool "Include busybox applet"
124         default y
125         help
126           The busybox applet provides general help regarding busybox and
127           allows the included applets to be listed.  It's also required
128           if applet links are to be installed at runtime.
129
130           If you can live without these features disabling this will save
131           some space.
132
133 config FEATURE_INSTALLER
134         bool "Support --install [-s] to install applet links at runtime"
135         default y
136         depends on BUSYBOX
137         help
138           Enable 'busybox --install [-s]' support. This will allow you to use
139           busybox at runtime to create hard links or symlinks for all the
140           applets that are compiled into busybox.
141
142 config INSTALL_NO_USR
143         bool "Don't use /usr"
144         default n
145         help
146           Disable use of /usr. busybox --install and "make install"
147           will install applets only to /bin and /sbin,
148           never to /usr/bin or /usr/sbin.
149
150 config LOCALE_SUPPORT
151         bool "Enable locale support (system needs locale for this to work)"
152         default n
153         help
154           Enable this if your system has locale support and you would like
155           busybox to support locale settings.
156
157 config UNICODE_SUPPORT
158         bool "Support Unicode"
159         default y
160         help
161           This makes various applets aware that one byte is not
162           one character on screen.
163
164           Busybox aims to eventually work correctly with Unicode displays.
165           Any older encodings are not guaranteed to work.
166           Probably by the time when busybox will be fully Unicode-clean,
167           other encodings will be mainly of historic interest.
168
169 config UNICODE_USING_LOCALE
170         bool "Use libc routines for Unicode (else uses internal ones)"
171         default n
172         depends on UNICODE_SUPPORT && LOCALE_SUPPORT
173         help
174           With this option on, Unicode support is implemented using libc
175           routines. Otherwise, internal implementation is used.
176           Internal implementation is smaller.
177
178 config FEATURE_CHECK_UNICODE_IN_ENV
179         bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
180         default n
181         depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
182         help
183           With this option on, Unicode support is activated
184           only if locale-related variables have the value of the form
185           "xxxx.utf8"
186
187           Otherwise, Unicode support will be always enabled and active.
188
189 config SUBST_WCHAR
190         int "Character code to substitute unprintable characters with"
191         depends on UNICODE_SUPPORT
192         default 63
193         help
194           Typical values are 63 for '?' (works with any output device),
195           30 for ASCII substitute control code,
196           65533 (0xfffd) for Unicode replacement character.
197
198 config LAST_SUPPORTED_WCHAR
199         int "Range of supported Unicode characters"
200         depends on UNICODE_SUPPORT
201         default 767
202         help
203           Any character with Unicode value bigger than this is assumed
204           to be non-printable on output device. Many applets replace
205           such characters with substitution character.
206
207           The idea is that many valid printable Unicode chars
208           nevertheless are not displayed correctly. Think about
209           combining charachers, double-wide hieroglyphs, obscure
210           characters in dozens of ancient scripts...
211           Many terminals, terminal emulators, xterms etc will fail
212           to handle them correctly. Choose the smallest value
213           which suits your needs.
214
215           Typical values are:
216           126 - ASCII only
217           767 (0x2ff) - there are no combining chars in [0..767] range
218                         (the range includes Latin 1, Latin Ext. A and B),
219                         code is ~700 bytes smaller for this case.
220           4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
221                         code is ~300 bytes smaller for this case.
222           12799 (0x31ff) - nearly all non-ideographic characters are
223                         available in [0..12799] range, including
224                         East Asian scripts like katakana, hiragana, hangul,
225                         bopomofo...
226           0 - off, any valid printable Unicode character will be printed.
227
228 config UNICODE_COMBINING_WCHARS
229         bool "Allow zero-width Unicode characters on output"
230         default n
231         depends on UNICODE_SUPPORT
232         help
233           With this option off, any Unicode char with width of 0
234           is substituted on output.
235
236 config UNICODE_WIDE_WCHARS
237         bool "Allow wide Unicode characters on output"
238         default n
239         depends on UNICODE_SUPPORT
240         help
241           With this option off, any Unicode char with width > 1
242           is substituted on output.
243
244 config UNICODE_BIDI_SUPPORT
245         bool "Bidirectional character-aware line input"
246         default n
247         depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
248         help
249           With this option on, right-to-left Unicode characters
250           are treated differently on input (e.g. cursor movement).
251
252 config UNICODE_NEUTRAL_TABLE
253         bool "In bidi input, support non-ASCII neutral chars too"
254         default n
255         depends on UNICODE_BIDI_SUPPORT
256         help
257           In most cases it's enough to treat only ASCII non-letters
258           (i.e. punctuation, numbers and space) as characters
259           with neutral directionality.
260           With this option on, more extensive (and bigger) table
261           of neutral chars will be used.
262
263 config UNICODE_PRESERVE_BROKEN
264         bool "Make it possible to enter sequences of chars which are not Unicode"
265         default n
266         depends on UNICODE_SUPPORT
267         help
268           With this option on, on line-editing input (such as used by shells)
269           invalid UTF-8 bytes are not substituted with the selected
270           substitution character.
271           For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
272           at shell prompt will list file named 0xff (single char name
273           with char value 255), not file named '?'.
274
275 config PAM
276         bool "Support for PAM (Pluggable Authentication Modules)"
277         default n
278         help
279           Use PAM in some busybox applets (currently login and httpd) instead
280           of direct access to password database.
281
282 config FEATURE_USE_SENDFILE
283         bool "Use sendfile system call"
284         default y
285         select PLATFORM_LINUX
286         help
287           When enabled, busybox will use the kernel sendfile() function
288           instead of read/write loops to copy data between file descriptors
289           (for example, cp command does this a lot).
290           If sendfile() doesn't work, copying code falls back to read/write
291           loop. sendfile() was originally implemented for faster I/O
292           from files to sockets, but since Linux 2.6.33 it was extended
293           to work for many more file types.
294
295 config LONG_OPTS
296         bool "Support for --long-options"
297         default y
298         help
299           Enable this if you want busybox applets to use the gnu --long-option
300           style, in addition to single character -a -b -c style options.
301
302 config FEATURE_DEVPTS
303         bool "Use the devpts filesystem for Unix98 PTYs"
304         default y
305         help
306           Enable if you want BusyBox to use Unix98 PTY support. If enabled,
307           busybox will use /dev/ptmx for the master side of the pseudoterminal
308           and /dev/pts/<number> for the slave side. Otherwise, BSD style
309           /dev/ttyp<number> will be used. To use this option, you should have
310           devpts mounted.
311
312 config FEATURE_CLEAN_UP
313         bool "Clean up all memory before exiting (usually not needed)"
314         default n
315         help
316           As a size optimization, busybox normally exits without explicitly
317           freeing dynamically allocated memory or closing files. This saves
318           space since the OS will clean up for us, but it can confuse debuggers
319           like valgrind, which report tons of memory and resource leaks.
320
321           Don't enable this unless you have a really good reason to clean
322           things up manually.
323
324 config FEATURE_UTMP
325         bool "Support utmp file"
326         default y
327         help
328           The file /var/run/utmp is used to track who is currently logged in.
329           With this option on, certain applets (getty, login, telnetd etc)
330           will create and delete entries there.
331           "who" applet requires this option.
332
333 config FEATURE_WTMP
334         bool "Support wtmp file"
335         default y
336         depends on FEATURE_UTMP
337         help
338           The file /var/run/wtmp is used to track when users have logged into
339           and logged out of the system.
340           With this option on, certain applets (getty, login, telnetd etc)
341           will append new entries there.
342           "last" applet requires this option.
343
344 config FEATURE_PIDFILE
345         bool "Support writing pidfiles"
346         default y
347         help
348           This option makes some applets (e.g. crond, syslogd, inetd) write
349           a pidfile at the configured PID_FILE_PATH.  It has no effect
350           on applets which require pidfiles to run.
351
352 config PID_FILE_PATH
353         string "Path to directory for pidfile"
354         default "/var/run"
355         depends on FEATURE_PIDFILE
356         help
357           This is the default path where pidfiles are created.  Applets which
358           allow you to set the pidfile path on the command line will override
359           this value.  The option has no effect on applets that require you to
360           specify a pidfile path.
361
362 config FEATURE_SUID
363         bool "Support for SUID/SGID handling"
364         default y
365         help
366           With this option you can install the busybox binary belonging
367           to root with the suid bit set, enabling some applets to perform
368           root-level operations even when run by ordinary users
369           (for example, mounting of user mounts in fstab needs this).
370
371           Busybox will automatically drop privileges for applets
372           that don't need root access.
373
374           If you are really paranoid and don't want to do this, build two
375           busybox binaries with different applets in them (and the appropriate
376           symlinks pointing to each binary), and only set the suid bit on the
377           one that needs it.
378
379           The applets which require root rights (need suid bit or
380           to be run by root) and will refuse to execute otherwise:
381           crontab, login, passwd, su, vlock, wall.
382
383           The applets which will use root rights if they have them
384           (via suid bit, or because run by root), but would try to work
385           without root right nevertheless:
386           findfs, ping[6], traceroute[6], mount.
387
388           Note that if you DONT select this option, but DO make busybox
389           suid root, ALL applets will run under root, which is a huge
390           security hole (think "cp /some/file /etc/passwd").
391
392 config FEATURE_SUID_CONFIG
393         bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
394         default y
395         depends on FEATURE_SUID
396         help
397           Allow the SUID / SGID state of an applet to be determined at runtime
398           by checking /etc/busybox.conf. (This is sort of a poor man's sudo.)
399           The format of this file is as follows:
400
401           APPLET = [Ssx-][Ssx-][x-] [USER.GROUP]
402
403           s: USER or GROUP is allowed to execute APPLET.
404              APPLET will run under USER or GROUP
405              (reagardless of who's running it).
406           S: USER or GROUP is NOT allowed to execute APPLET.
407              APPLET will run under USER or GROUP.
408              This option is not very sensical.
409           x: USER/GROUP/others are allowed to execute APPLET.
410              No UID/GID change will be done when it is run.
411           -: USER/GROUP/others are not allowed to execute APPLET.
412
413           An example might help:
414
415           [SUID]
416           su = ssx root.0 # applet su can be run by anyone and runs with
417                           # euid=0/egid=0
418           su = ssx        # exactly the same
419
420           mount = sx- root.disk # applet mount can be run by root and members
421                                 # of group disk (but not anyone else)
422                                 # and runs with euid=0 (egid is not changed)
423
424           cp = --- # disable applet cp for everyone
425
426           The file has to be owned by user root, group root and has to be
427           writeable only by root:
428                 (chown 0.0 /etc/busybox.conf; chmod 600 /etc/busybox.conf)
429           The busybox executable has to be owned by user root, group
430           root and has to be setuid root for this to work:
431                 (chown 0.0 /bin/busybox; chmod 4755 /bin/busybox)
432
433           Robert 'sandman' Griebl has more information here:
434           <url: http://www.softforge.de/bb/suid.html >.
435
436 config FEATURE_SUID_CONFIG_QUIET
437         bool "Suppress warning message if /etc/busybox.conf is not readable"
438         default y
439         depends on FEATURE_SUID_CONFIG
440         help
441           /etc/busybox.conf should be readable by the user needing the SUID,
442           check this option to avoid users to be notified about missing
443           permissions.
444
445 config SELINUX
446         bool "Support NSA Security Enhanced Linux"
447         default n
448         select PLATFORM_LINUX
449         help
450           Enable support for SELinux in applets ls, ps, and id. Also provide
451           the option of compiling in SELinux applets.
452
453           If you do not have a complete SELinux userland installed, this stuff
454           will not compile.  Specifially, libselinux 1.28 or better is
455           directly required by busybox. If the installation is located in a
456           non-standard directory, provide it by invoking make as follows:
457                 CFLAGS=-I<libselinux-include-path> \
458                 LDFLAGS=-L<libselinux-lib-path> \
459                 make
460
461           Most people will leave this set to 'N'.
462
463 config FEATURE_PREFER_APPLETS
464         bool "exec prefers applets"
465         default n
466         help
467           This is an experimental option which directs applets about to
468           call 'exec' to try and find an applicable busybox applet before
469           searching the PATH. This is typically done by exec'ing
470           /proc/self/exe.
471           This may affect shell, find -exec, xargs and similar applets.
472           They will use applets even if /bin/<applet> -> busybox link
473           is missing (or is not a link to busybox). However, this causes
474           problems in chroot jails without mounted /proc and with ps/top
475           (command name can be shown as 'exe' for applets started this way).
476
477 config BUSYBOX_EXEC_PATH
478         string "Path to BusyBox executable"
479         default "/proc/self/exe"
480         help
481           When Busybox applets need to run other busybox applets, BusyBox
482           sometimes needs to exec() itself. When the /proc filesystem is
483           mounted, /proc/self/exe always points to the currently running
484           executable. If you haven't got /proc, set this to wherever you
485           want to run BusyBox from.
486
487 # These are auto-selected by other options
488
489 config FEATURE_SYSLOG
490         bool #No description makes it a hidden option
491         default n
492         #help
493         #  This option is auto-selected when you select any applet which may
494         #  send its output to syslog. You do not need to select it manually.
495
496 config FEATURE_HAVE_RPC
497         bool #No description makes it a hidden option
498         default n
499         #help
500         #  This is automatically selected if any of enabled applets need it.
501         #  You do not need to select it manually.
502
503 comment 'Build Options'
504
505 config STATIC
506         bool "Build BusyBox as a static binary (no shared libs)"
507         default n
508         help
509           If you want to build a static BusyBox binary, which does not
510           use or require any shared libraries, then enable this option.
511           This can cause BusyBox to be considerably larger, so you should
512           leave this option false unless you have a good reason (i.e.
513           your target platform does not support shared libraries, or
514           you are building an initrd which doesn't need anything but
515           BusyBox, etc).
516
517           Most people will leave this set to 'N'.
518
519 config PIE
520         bool "Build BusyBox as a position independent executable"
521         default n
522         depends on !STATIC
523         help
524           Hardened code option. PIE binaries are loaded at a different
525           address at each invocation. This has some overhead,
526           particularly on x86-32 which is short on registers.
527
528           Most people will leave this set to 'N'.
529
530 config NOMMU
531         bool "Force NOMMU build"
532         default n
533         help
534           Busybox tries to detect whether architecture it is being
535           built against supports MMU or not. If this detection fails,
536           or if you want to build NOMMU version of busybox for testing,
537           you may force NOMMU build here.
538
539           Most people will leave this set to 'N'.
540
541 # PIE can be made to work with BUILD_LIBBUSYBOX, but currently
542 # build system does not support that
543 config BUILD_LIBBUSYBOX
544         bool "Build shared libbusybox"
545         default n
546         depends on !FEATURE_PREFER_APPLETS && !PIE && !STATIC
547         help
548           Build a shared library libbusybox.so.N.N.N which contains all
549           busybox code.
550
551           This feature allows every applet to be built as a tiny
552           separate executable. Enabling it for "one big busybox binary"
553           approach serves no purpose and increases code size.
554           You should almost certainly say "no" to this.
555
556 ### config FEATURE_FULL_LIBBUSYBOX
557 ###     bool "Feature-complete libbusybox"
558 ###     default n if !FEATURE_SHARED_BUSYBOX
559 ###     depends on BUILD_LIBBUSYBOX
560 ###     help
561 ###       Build a libbusybox with the complete feature-set, disregarding
562 ###       the actually selected config.
563 ###
564 ###       Normally, libbusybox will only contain the features which are
565 ###       used by busybox itself. If you plan to write a separate
566 ###       standalone application which uses libbusybox say 'Y'.
567 ###
568 ###       Note: libbusybox is GPL, not LGPL, and exports no stable API that
569 ###       might act as a copyright barrier. We can and will modify the
570 ###       exported function set between releases (even minor version number
571 ###       changes), and happily break out-of-tree features.
572 ###
573 ###       Say 'N' if in doubt.
574
575 config FEATURE_INDIVIDUAL
576         bool "Produce a binary for each applet, linked against libbusybox"
577         default y
578         depends on BUILD_LIBBUSYBOX
579         help
580           If your CPU architecture doesn't allow for sharing text/rodata
581           sections of running binaries, but allows for runtime dynamic
582           libraries, this option will allow you to reduce memory footprint
583           when you have many different applets running at once.
584
585           If your CPU architecture allows for sharing text/rodata,
586           having single binary is more optimal.
587
588           Each applet will be a tiny program, dynamically linked
589           against libbusybox.so.N.N.N.
590
591           You need to have a working dynamic linker.
592
593 config FEATURE_SHARED_BUSYBOX
594         bool "Produce additional busybox binary linked against libbusybox"
595         default y
596         depends on BUILD_LIBBUSYBOX
597         help
598           Build busybox, dynamically linked against libbusybox.so.N.N.N.
599
600           You need to have a working dynamic linker.
601
602 ### config BUILD_AT_ONCE
603 ###     bool "Compile all sources at once"
604 ###     default n
605 ###     help
606 ###       Normally each source-file is compiled with one invocation of
607 ###       the compiler.
608 ###       If you set this option, all sources are compiled at once.
609 ###       This gives the compiler more opportunities to optimize which can
610 ###       result in smaller and/or faster binaries.
611 ###
612 ###       Setting this option will consume alot of memory, e.g. if you
613 ###       enable all applets with all features, gcc uses more than 300MB
614 ###       RAM during compilation of busybox.
615 ###
616 ###       This option is most likely only beneficial for newer compilers
617 ###       such as gcc-4.1 and above.
618 ###
619 ###       Say 'N' unless you know what you are doing.
620
621 config LFS
622         bool "Build with Large File Support (for accessing files > 2 GB)"
623         default y
624         help
625           If you want to build BusyBox with large file support, then enable
626           this option. This will have no effect if your kernel or your C
627           library lacks large file support for large files. Some of the
628           programs that can benefit from large file support include dd, gzip,
629           cp, mount, tar, and many others. If you want to access files larger
630           than 2 Gigabytes, enable this option. Otherwise, leave it set to 'N'.
631
632 config CROSS_COMPILER_PREFIX
633         string "Cross Compiler prefix"
634         default ""
635         help
636           If you want to build BusyBox with a cross compiler, then you
637           will need to set this to the cross-compiler prefix, for example,
638           "i386-uclibc-".
639
640           Note that CROSS_COMPILE environment variable or
641           "make CROSS_COMPILE=xxx ..." will override this selection.
642
643           Native builds leave this empty.
644
645 config SYSROOT
646         string "Path to sysroot"
647         default ""
648         help
649           If you want to build BusyBox with a cross compiler, then you
650           might also need to specify where /usr/include and /usr/lib
651           will be found.
652
653           For example, BusyBox can be built against an installed
654           Android NDK, platform version 9, for ARM ABI with
655
656           CONFIG_SYSROOT=/opt/android-ndk/platforms/android-9/arch-arm
657
658           Native builds leave this empty.
659
660 config EXTRA_CFLAGS
661         string "Additional CFLAGS"
662         default ""
663         help
664           Additional CFLAGS to pass to the compiler verbatim.
665
666 config EXTRA_LDFLAGS
667         string "Additional LDFLAGS"
668         default ""
669         help
670           Additional LDFLAGS to pass to the linker verbatim.
671
672 config EXTRA_LDLIBS
673         string "Additional LDLIBS"
674         default ""
675         help
676           Additional LDLIBS to pass to the linker with -l.
677
678 comment 'Installation Options ("make install" behavior)'
679
680 choice
681         prompt "What kind of applet links to install"
682         default INSTALL_APPLET_SYMLINKS
683         help
684           Choose what kind of links to applets are created by "make install".
685
686 config INSTALL_APPLET_SYMLINKS
687         bool "as soft-links"
688         help
689           Install applets as soft-links to the busybox binary. This needs some
690           free inodes on the filesystem, but might help with filesystem
691           generators that can't cope with hard-links.
692
693 config INSTALL_APPLET_HARDLINKS
694         bool "as hard-links"
695         help
696           Install applets as hard-links to the busybox binary. This might
697           count on a filesystem with few inodes.
698
699 config INSTALL_APPLET_SCRIPT_WRAPPERS
700         bool "as script wrappers"
701         help
702           Install applets as script wrappers that call the busybox binary.
703
704 config INSTALL_APPLET_DONT
705         bool "not installed"
706         help
707           Do not install applet links. Useful when you plan to use
708           busybox --install for installing links, or plan to use
709           a standalone shell and thus don't need applet links.
710
711 endchoice
712
713 choice
714         prompt "/bin/sh applet link"
715         default INSTALL_SH_APPLET_SYMLINK
716         depends on INSTALL_APPLET_SCRIPT_WRAPPERS
717         help
718           Choose how you install /bin/sh applet link.
719
720 config INSTALL_SH_APPLET_SYMLINK
721         bool "as soft-link"
722         help
723           Install /bin/sh applet as soft-link to the busybox binary.
724
725 config INSTALL_SH_APPLET_HARDLINK
726         bool "as hard-link"
727         help
728           Install /bin/sh applet as hard-link to the busybox binary.
729
730 config INSTALL_SH_APPLET_SCRIPT_WRAPPER
731         bool "as script wrapper"
732         help
733           Install /bin/sh applet as script wrapper that calls
734           the busybox binary.
735
736 endchoice
737
738 config PREFIX
739         string "BusyBox installation prefix"
740         default "./_install"
741         help
742           Define your directory to install BusyBox files/subdirs in.
743
744 comment 'Debugging Options'
745
746 config DEBUG
747         bool "Build BusyBox with extra Debugging symbols"
748         default n
749         help
750           Say Y here if you wish to examine BusyBox internals while applets are
751           running. This increases the size of the binary considerably, and
752           should only be used when doing development. If you are doing
753           development and want to debug BusyBox, answer Y.
754
755           Most people should answer N.
756
757 config DEBUG_PESSIMIZE
758         bool "Disable compiler optimizations"
759         default n
760         depends on DEBUG
761         help
762           The compiler's optimization of source code can eliminate and reorder
763           code, resulting in an executable that's hard to understand when
764           stepping through it with a debugger. This switches it off, resulting
765           in a much bigger executable that more closely matches the source
766           code.
767
768 config DEBUG_SANITIZE
769         bool "Enable runtime sanitizers (ASAN/LSAN/USAN/etc...)"
770         default n
771         help
772           Say Y here if you want to enable runtime sanitizers. These help
773           catch bad memory accesses (e.g. buffer overflows), but will make
774           the executable larger and slow down runtime a bit.
775
776           If you aren't developing/testing busybox, say N here.
777
778 config UNIT_TEST
779         bool "Build unit tests"
780         default n
781         help
782           Say Y here if you want to build unit tests (both the framework and
783           test cases) as a Busybox applet. This results in bigger code, so you
784           probably don't want this option in production builds.
785
786 config WERROR
787         bool "Abort compilation on any warning"
788         default n
789         help
790           Selecting this will add -Werror to gcc command line.
791
792           Most people should answer N.
793
794 choice
795         prompt "Additional debugging library"
796         default NO_DEBUG_LIB
797         help
798           Using an additional debugging library will make BusyBox become
799           considerable larger and will cause it to run more slowly. You
800           should always leave this option disabled for production use.
801
802           dmalloc support:
803           ----------------
804           This enables compiling with dmalloc ( http://dmalloc.com/ )
805           which is an excellent public domain mem leak and malloc problem
806           detector. To enable dmalloc, before running busybox you will
807           want to properly set your environment, for example:
808             export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
809           The 'debug=' value is generated using the following command
810             dmalloc -p log-stats -p log-non-free -p log-bad-space \
811                -p log-elapsed-time -p check-fence -p check-heap \
812                -p check-lists -p check-blank -p check-funcs -p realloc-copy \
813                -p allow-free-null
814
815           Electric-fence support:
816           -----------------------
817           This enables compiling with Electric-fence support. Electric
818           fence is another very useful malloc debugging library which uses
819           your computer's virtual memory hardware to detect illegal memory
820           accesses. This support will make BusyBox be considerable larger
821           and run slower, so you should leave this option disabled unless
822           you are hunting a hard to find memory problem.
823
824
825 config NO_DEBUG_LIB
826         bool "None"
827
828 config DMALLOC
829         bool "Dmalloc"
830
831 config EFENCE
832         bool "Electric-fence"
833
834 endchoice
835
836 endmenu
837
838 source libbb/Config.in
839
840 comment "Applets"
841
842 source archival/Config.in
843 source coreutils/Config.in
844 source console-tools/Config.in
845 source debianutils/Config.in
846 source editors/Config.in
847 source findutils/Config.in
848 source init/Config.in
849 source loginutils/Config.in
850 source e2fsprogs/Config.in
851 source modutils/Config.in
852 source util-linux/Config.in
853 source miscutils/Config.in
854 source networking/Config.in
855 source printutils/Config.in
856 source mailutils/Config.in
857 source procps/Config.in
858 source runit/Config.in
859 source selinux/Config.in
860 source shell/Config.in
861 source sysklogd/Config.in