build system overhaul
[platform/upstream/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 NITPICK
17         bool "See lots more (probably unnecessary) configuration options."
18         default n
19         help
20           Some BusyBox applets have more configuration options than anyone
21           will ever care about.  To avoid drowining people in complexity, most
22           of the applet features that can be set to a sane default value are
23           hidden, unless you hit the above switch.
24
25           This is better than to telling people to edit the busybox source
26           code, but not by much.
27
28           See http://en.wikipedia.org/wiki/Fibber_McGee_and_Molly#The_Closet
29
30           You have been warned.
31
32 config DESKTOP
33         bool "Enable options for full-blown desktop systems."
34         default n
35         help
36           Enable options and features which are not essential.
37           Select this only if you plan to use busybox on full-blown
38           desktop machine with common Linux distro, not on an ebmbedded box.
39
40 choice
41         prompt "Buffer allocation policy"
42         default FEATURE_BUFFERS_USE_MALLOC
43         depends on NITPICK
44         help
45           There are 3 ways BusyBox can handle buffer allocations:
46           - Use malloc. This costs code size for the call to xmalloc.
47           - Put them on stack. For some very small machines with limited stack
48             space, this can be deadly.  For most folks, this works just fine.
49           - Put them in BSS. This works beautifully for computers with a real
50             MMU (and OS support), but wastes runtime RAM for uCLinux. This
51             behavior was the only one available for BusyBox versions 0.48 and
52             earlier.
53
54 config FEATURE_BUFFERS_USE_MALLOC
55         bool "Allocate with Malloc"
56
57 config FEATURE_BUFFERS_GO_ON_STACK
58         bool "Allocate on the Stack"
59
60 config FEATURE_BUFFERS_GO_IN_BSS
61         bool "Allocate in the .bss section"
62
63 endchoice
64
65 config SHOW_USAGE
66         bool "Show terse applet usage messages"
67         default y
68         help
69           All BusyBox applets will show help messages when invoked with
70           wrong arguments. You can turn off printing these terse usage
71           messages if you say no here.
72           This will save you up to 7k.
73
74 config FEATURE_VERBOSE_USAGE
75         bool "Show verbose applet usage messages"
76         default n
77         select SHOW_USAGE
78         help
79           All BusyBox applets will show more verbose help messages when
80           busybox is invoked with --help.  This will add a lot of text to the
81           busybox binary.  In the default configuration, this will add about
82           13k, but it can add much more depending on your configuration.
83
84 config FEATURE_COMPRESS_USAGE
85         bool "Store applet usage messages in compressed form"
86         default y
87         depends on SHOW_USAGE
88         help
89           Store usage messages in compressed form, uncompress them on-the-fly
90           when <applet> --help is called.
91
92           If you have a really tiny busybox with few applets enabled (and
93           bunzip2 isn't one of them), the overhead of the decompressor might
94           be noticeable.  Also, if you run executables directly from ROM
95           and have very little memory, this might not be a win.  Otherwise,
96           you probably want this.
97
98 config FEATURE_INSTALLER
99         bool "Support --install [-s] to install applet links at runtime"
100         default n
101         help
102           Enable 'busybox --install [-s]' support.  This will allow you to use
103           busybox at runtime to create hard links or symlinks for all the
104           applets that are compiled into busybox.  This feature requires the
105           /proc filesystem.
106
107 config LOCALE_SUPPORT
108         bool "Enable locale support (system needs locale for this to work)"
109         default n
110         help
111           Enable this if your system has locale support and you would like
112           busybox to support locale settings.
113
114 config GETOPT_LONG
115         bool
116         default y
117 #       bool "Enable support for --long-options"
118 #       default n
119 #       help
120 #         Enable this if you want busybox applets to use the gnu --long-option
121 #         style, in addition to single character -a -b -c style options.
122
123 config FEATURE_DEVPTS
124         bool "Use the devpts filesystem for Unix98 PTYs"
125         default y
126         help
127           Enable if you want BusyBox to use Unix98 PTY support. If enabled,
128           busybox will use /dev/ptmx for the master side of the pseudoterminal
129           and /dev/pts/<number> for the slave side.  Otherwise, BSD style
130           /dev/ttyp<number> will be used. To use this option, you should have
131           devpts mounted.
132
133 config FEATURE_CLEAN_UP
134         bool "Clean up all memory before exiting (usually not needed)"
135         default n
136         depends on NITPICK
137         help
138           As a size optimization, busybox normally exits without explicitly
139           freeing dynamically allocated memory or closing files.  This saves
140           space since the OS will clean up for us, but it can confuse debuggers
141           like valgrind, which report tons of memory and resource leaks.
142
143           Don't enable this unless you have a really good reason to clean
144           things up manually.
145
146 config FEATURE_SUID
147         bool "Support for SUID/SGID handling"
148         default n
149         help
150           With this option you can install the busybox binary belonging
151           to root with the suid bit set, and it'll and it'll automatically drop
152           priviledges for applets that don't need root access.
153
154           If you're really paranoid and don't want to do this, build two
155           busybox binaries with different applets in them (and the appropriate
156           symlinks pointing to each binary), and only set the suid bit on the
157           one that needs it.  The applets currently marked to need the suid bit
158           are login, passwd, su, ping, traceroute, crontab, dnsd, ipcrm, ipcs,
159           and vlock.
160
161 config FEATURE_SYSLOG
162         bool "Support for syslog"
163         default n
164         help
165           This option is auto-selected when you select any applet which may
166           send its output to syslog. You do not need to select it manually.
167
168 config FEATURE_SUID_CONFIG
169         bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
170         default n if FEATURE_SUID
171         depends on FEATURE_SUID
172         help
173           Allow the SUID / SGID state of an applet to be determined at runtime
174           by checking /etc/busybox.conf.  (This is sort of a poor man's sudo.)
175           The format of this file is as follows:
176
177           <applet> = [Ssx-][Ssx-][x-] (<username>|<uid>).(<groupname>|<gid>)
178
179           An example might help:
180
181           [SUID]
182           su = ssx root.0 # applet su can be run by anyone and runs with euid=0/egid=0
183           su = ssx        # exactly the same
184
185           mount = sx- root.disk # applet mount can be run by root and members of group disk
186                                 # and runs with euid=0
187
188           cp = --- # disable applet cp for everyone
189
190           The file has to be owned by user root, group root and has to be
191           writeable only by root:
192                 (chown 0.0 /etc/busybox.conf; chmod 600 /etc/busybox.conf)
193           The busybox executable has to be owned by user root, group
194           root and has to be setuid root for this to work:
195                 (chown 0.0 /bin/busybox; chmod 4755 /bin/busybox)
196
197           Robert 'sandman' Griebl has more information here:
198           <url: http://www.softforge.de/bb/suid.html >.
199
200 config FEATURE_SUID_CONFIG_QUIET
201         bool "Suppress warning message if /etc/busybox.conf is not readable"
202         default y
203         depends on FEATURE_SUID_CONFIG
204         help
205           /etc/busybox.conf should be readable by the user needing the SUID, check
206           this option to avoid users to be notified about missing permissions.
207
208 config SELINUX
209         bool "Support NSA Security Enhanced Linux"
210         default n
211         help
212           Enable support for SELinux in applets ls, ps, and id.  Also provide
213           the option of compiling in SELinux applets.
214
215           If you do not have a complete SELinux userland installed, this stuff
216           will not compile. Go visit
217                 http://www.nsa.gov/selinux/index.html
218           to download the necessary stuff to allow busybox to compile with
219           this option enabled. Specifially, libselinux 1.28 or better is
220           directly required by busybox. If the installation is located in a
221           non-standard directory, provide it by invoking make as follows:
222                 CFLAGS=-I<libselinux-include-path> \
223                 LDFLAGS=-L<libselinux-lib-path> \
224                 make
225
226           Most people will leave this set to 'N'.
227
228 config BUSYBOX_EXEC_PATH
229         string "Path to BusyBox executable"
230         default "/proc/self/exe"
231         help
232           When Busybox applets need to run other busybox applets, BusyBox
233           sometimes needs to exec() itself.  When the /proc filesystem is
234           mounted, /proc/self/exe always points to the currently running
235           executable.  If you haven't got /proc, set this to wherever you
236           want to run BusyBox from.
237
238 endmenu
239
240 menu 'Build Options'
241
242 config STATIC
243         bool "Build BusyBox as a static binary (no shared libs)"
244         default n
245         help
246           If you want to build a static BusyBox binary, which does not
247           use or require any shared libraries, then enable this option.
248           This can cause BusyBox to be considerably larger, so you should
249           leave this option false unless you have a good reason (i.e.
250           your target platform does not support shared libraries, or
251           you are building an initrd which doesn't need anything but
252           BusyBox, etc).
253
254           Most people will leave this set to 'N'.
255
256 config BUILD_LIBBUSYBOX
257         bool "Build shared libbusybox"
258         default n
259         help
260           Build a shared library libbusybox.so which contains all
261           libraries used inside busybox.
262
263           This is an experimental feature intended to support the upcoming
264           "make standalone" mode.  Enabling it against the one big busybox
265           binary serves no purpose (and increases the size).  You should
266           almost certainly say "no" to this right now.
267
268 config FEATURE_FULL_LIBBUSYBOX
269         bool "Feature-complete libbusybox"
270         default n if !FEATURE_SHARED_BUSYBOX
271         depends on BUILD_LIBBUSYBOX
272         help
273           Build a libbusybox with the complete feature-set, disregarding
274           the actually selected config.
275
276           Normally, libbusybox will only contain the features which are
277           used by busybox itself. If you plan to write a separate
278           standalone application which uses libbusybox say 'Y'.
279
280           Note: libbusybox is GPL, not LGPL, and exports no stable API that
281           might act as a copyright barrier.  We can and will modify the
282           exported function set between releases (even minor version number
283           changes), and happily break out-of-tree features.
284
285           Say 'N' if in doubt.
286
287 config FEATURE_SHARED_BUSYBOX
288         bool "Use shared libbusybox for busybox"
289         default y if BUILD_LIBBUSYBOX
290         depends on !STATIC && BUILD_LIBBUSYBOX
291         help
292           Use libbusybox.so also for busybox itself.
293           You need to have a working dynamic linker to use this variant.
294
295 config LFS
296         bool "Build with Large File Support (for accessing files > 2 GB)"
297         default n
298         select FDISK_SUPPORT_LARGE_DISKS
299         help
300           If you want to build BusyBox with large file support, then enable
301           this option.  This will have no effect if your kernel or your C
302           library lacks large file support for large files.  Some of the
303           programs that can benefit from large file support include dd, gzip,
304           cp, mount, tar, and many others.  If you want to access files larger
305           than 2 Gigabytes, enable this option.  Otherwise, leave it set to 'N'.
306
307 config BUILD_AT_ONCE
308         bool "Compile all sources at once"
309         default n
310         help
311           Normally each source-file is compiled with one invocation of
312           the compiler.
313           If you set this option, all sources are compiled at once.
314           This gives the compiler more opportunities to optimize which can
315           result in smaller and/or faster binaries.
316
317           Setting this option will consume alot of memory, e.g. if you
318           enable all applets with all features, gcc uses more than 300MB
319           RAM during compilation of busybox.
320
321           This option is most likely only beneficial for newer compilers
322           such as gcc-4.1 and above.
323
324           Say 'N' unless you know what you are doing.
325
326 endmenu
327
328 menu 'Debugging Options'
329
330 config DEBUG
331         bool "Build BusyBox with extra Debugging symbols"
332         default n
333         help
334           Say Y here if you wish to examine BusyBox internals while applets are
335           running.  This increases the size of the binary considerably, and
336           should only be used when doing development.  If you are doing
337           development and want to debug BusyBox, answer Y.
338
339           Most people should answer N.
340
341 config DEBUG_PESSIMIZE
342         bool "Disable compiler optimizations."
343         default n
344         depends on DEBUG
345         help
346           The compiler's optimization of source code can eliminate and reorder
347           code, resulting in an executable that's hard to understand when
348           stepping through it with a debugger.  This switches it off, resulting
349           in a much bigger executable that more closely matches the source
350           code.
351
352 choice
353         prompt "Additional debugging library"
354         default NO_DEBUG_LIB
355         depends on DEBUG
356         help
357           Using an additional debugging library will make BusyBox become
358           considerable larger and will cause it to run more slowly.  You
359           should always leave this option disabled for production use.
360
361           dmalloc support:
362           ----------------
363           This enables compiling with dmalloc ( http://dmalloc.com/ )
364           which is an excellent public domain mem leak and malloc problem
365           detector.  To enable dmalloc, before running busybox you will
366           want to properly set your environment, for example:
367             export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
368           The 'debug=' value is generated using the following command
369             dmalloc -p log-stats -p log-non-free -p log-bad-space -p log-elapsed-time \
370                -p check-fence -p check-heap -p check-lists -p check-blank \
371                -p check-funcs -p realloc-copy -p allow-free-null
372
373           Electric-fence support:
374           -----------------------
375           This enables compiling with Electric-fence support.  Electric
376           fence is another very useful malloc debugging library which uses
377           your computer's virtual memory hardware to detect illegal memory
378           accesses.  This support will make BusyBox be considerable larger
379           and run slower, so you should leave this option disabled unless
380           you are hunting a hard to find memory problem.
381
382
383 config NO_DEBUG_LIB
384         bool "None"
385
386 config DMALLOC
387         bool "Dmalloc"
388
389 config EFENCE
390         bool "Electric-fence"
391
392 endchoice
393
394 config DEBUG_YANK_SUSv2
395         bool "Disable obsolete features removed before SUSv3?"
396         default y
397         help
398           This option will disable backwards compatibility with SuSv2,
399           specifically, old-style numeric options ('command -1 <file>')
400           will not be supported in head, tail, and fold.  (Note: should
401           yank from renice too.)
402
403 endmenu
404
405 menu 'Installation Options'
406
407 config INSTALL_NO_USR
408         bool "Don't use /usr"
409         default n
410         help
411           Disable use of /usr. Don't activate this option if you don't know
412           that you really want this behaviour.
413
414 choice
415        prompt "Applets links"
416        default INSTALL_APPLET_SYMLINKS
417        help
418          Choose how you install applets links.
419
420 config INSTALL_APPLET_SYMLINKS
421        bool "as soft-links"
422        help
423          Install applets as soft-links to the busybox binary. This needs some
424          free inodes on the filesystem, but might help with filesystem
425          generators that can't cope with hard-links.
426
427 config INSTALL_APPLET_HARDLINKS
428        bool "as hard-links"
429        help
430          Install applets as hard-links to the busybox binary. This might count
431          on a filesystem with few inodes.
432
433 config INSTALL_APPLET_DONT
434        bool
435        prompt "not installed"
436        depends on FEATURE_INSTALLER || FEATURE_SH_STANDALONE_SHELL
437        help
438          Do not install applets links. Usefull when using the -install feature
439          or a standalone shell for rescue pruposes.
440
441 endchoice
442
443 config PREFIX
444         string "BusyBox installation prefix"
445         default "./_install"
446         help
447           Define your directory to install BusyBox files/subdirs in.
448
449 endmenu
450
451 source libbb/Config.in
452
453 endmenu
454
455 comment "Applets"
456
457 source archival/Config.in
458 source coreutils/Config.in
459 source console-tools/Config.in
460 source debianutils/Config.in
461 source editors/Config.in
462 source findutils/Config.in
463 source init/Config.in
464 source loginutils/Config.in
465 source e2fsprogs/Config.in
466 source modutils/Config.in
467 source util-linux/Config.in
468 source miscutils/Config.in
469 source networking/Config.in
470 source procps/Config.in
471 source shell/Config.in
472 source sysklogd/Config.in
473 source runit/Config.in