X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/f77b88d124ea1c900f9cf5e04046939aad48bbe1..b72f8806e094d7fdf0f5db84abc00c28c54828d8:/package/busybox/config/Config.in

diff --git a/package/busybox/config/Config.in b/package/busybox/config/Config.in
index e7afb5362..e55386211 100644
--- a/package/busybox/config/Config.in
+++ b/package/busybox/config/Config.in
@@ -4,12 +4,59 @@
 #
 
 
-config BUSYBOX_HAVE_DOT_CONFIG
+config BUSYBOX_CONFIG_HAVE_DOT_CONFIG
 	bool
 	default y
 
+menu "Busybox Settings"
+
 menu "General Configuration"
 
+config BUSYBOX_CONFIG_DESKTOP
+	bool "Enable options for full-blown desktop systems"
+	default n
+	help
+	  Enable options and features which are not essential.
+	  Select this only if you plan to use busybox on full-blown
+	  desktop machine with common Linux distro, not on an embedded box.
+
+config BUSYBOX_CONFIG_EXTRA_COMPAT
+	bool "Provide compatible behavior for rare corner cases (bigger code)"
+	default n
+	help
+	  This option makes grep, sed etc handle rare corner cases
+	  (embedded NUL bytes and such). This makes code bigger and uses
+	  some GNU extensions in libc. You probably only need this option
+	  if you plan to run busybox on desktop.
+
+config BUSYBOX_CONFIG_INCLUDE_SUSv2
+	bool "Enable obsolete features removed before SUSv3"
+	default y
+	help
+	  This option will enable backwards compatibility with SuSv2,
+	  specifically, old-style numeric options ('command -1 <file>')
+	  will be supported in head, tail, and fold. (Note: should
+	  affect renice too.)
+
+config BUSYBOX_CONFIG_USE_PORTABLE_CODE
+	bool "Avoid using GCC-specific code constructs"
+	default n
+	help
+	  Use this option if you are trying to compile busybox with
+	  compiler other than gcc.
+	  If you do use gcc, this option may needlessly increase code size.
+
+config BUSYBOX_CONFIG_PLATFORM_LINUX
+	bool "Enable Linux-specific applets and features"
+	default y
+	help
+	  For the most part, busybox requires only POSIX compatibility
+	  from the target system, but some applets and features use
+	  Linux-specific interfaces.
+
+	  Answering 'N' here will disable such applets and hide the
+	  corresponding configuration options.
+
 choice
 	prompt "Buffer allocation policy"
 	default BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
@@ -17,7 +64,7 @@ choice
 	  There are 3 ways BusyBox can handle buffer allocations:
 	  - Use malloc. This costs code size for the call to xmalloc.
 	  - Put them on stack. For some very small machines with limited stack
-	    space, this can be deadly.  For most folks, this works just fine.
+	    space, this can be deadly. For most folks, this works just fine.
 	  - Put them in BSS. This works beautifully for computers with a real
 	    MMU (and OS support), but wastes runtime RAM for uCLinux. This
 	    behavior was the only one available for BusyBox versions 0.48 and
@@ -34,23 +81,55 @@ config BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_IN_BSS
 
 endchoice
 
+config BUSYBOX_CONFIG_SHOW_USAGE
+	bool "Show terse applet usage messages"
+	default y
+	help
+	  All BusyBox applets will show help messages when invoked with
+	  wrong arguments. You can turn off printing these terse usage
+	  messages if you say no here.
+	  This will save you up to 7k.
+
 config BUSYBOX_CONFIG_FEATURE_VERBOSE_USAGE
 	bool "Show verbose applet usage messages"
 	default y
+	depends on BUSYBOX_CONFIG_SHOW_USAGE
 	help
 	  All BusyBox applets will show more verbose help messages when
-	  busybox is invoked with --help.  This will add a lot of text to the
-	  busybox binary.  In the default configuration, this will add about
+	  busybox is invoked with --help. This will add a lot of text to the
+	  busybox binary. In the default configuration, this will add about
 	  13k, but it can add much more depending on your configuration.
 
+config BUSYBOX_CONFIG_FEATURE_COMPRESS_USAGE
+	bool "Store applet usage messages in compressed form"
+	default y
+	depends on BUSYBOX_CONFIG_SHOW_USAGE
+	help
+	  Store usage messages in compressed form, uncompress them on-the-fly
+	  when <applet> --help is called.
+
+	  If you have a really tiny busybox with few applets enabled (and
+	  bunzip2 isn't one of them), the overhead of the decompressor might
+	  be noticeable. Also, if you run executables directly from ROM
+	  and have very little memory, this might not be a win. Otherwise,
+	  you probably want this.
+
 config BUSYBOX_CONFIG_FEATURE_INSTALLER
 	bool "Support --install [-s] to install applet links at runtime"
 	default n
 	help
-	  Enable 'busybox --install [-s]' support.  This will allow you to use
+	  Enable 'busybox --install [-s]' support. This will allow you to use
 	  busybox at runtime to create hard links or symlinks for all the
-	  applets that are compiled into busybox.  This feature requires the
-	  /proc filesystem.
+	  applets that are compiled into busybox.
+
+config BUSYBOX_CONFIG_INSTALL_NO_USR
+	bool "Don't use /usr"
+	default n
+	depends on BUSYBOX_CONFIG_FEATURE_INSTALLER
+	help
+	  Disable use of /usr. busybox --install and "make install"
+	  will install applets only to /bin and /sbin,
+	  never to /usr/bin or /usr/sbin.
 
 config BUSYBOX_CONFIG_LOCALE_SUPPORT
 	bool "Enable locale support (system needs locale for this to work)"
@@ -59,59 +138,230 @@ config BUSYBOX_CONFIG_LOCALE_SUPPORT
 	  Enable this if your system has locale support and you would like
 	  busybox to support locale settings.
 
-config BUSYBOX_CONFIG_FEATURE_DEVFS
-	bool "Support for devfs"
+config BUSYBOX_CONFIG_UNICODE_SUPPORT
+	bool "Support Unicode"
+	default n
+	help
+	  This makes various applets aware that one byte is not
+	  one character on screen.
+
+	  Busybox aims to eventually work correctly with Unicode displays.
+	  Any older encodings are not guaranteed to work.
+	  Probably by the time when busybox will be fully Unicode-clean,
+	  other encodings will be mainly of historic interest.
+
+config BUSYBOX_CONFIG_UNICODE_USING_LOCALE
+	bool "Use libc routines for Unicode (else uses internal ones)"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && BUSYBOX_CONFIG_LOCALE_SUPPORT
+	help
+	  With this option on, Unicode support is implemented using libc
+	  routines. Otherwise, internal implementation is used.
+	  Internal implementation is smaller.
+
+config BUSYBOX_CONFIG_FEATURE_CHECK_UNICODE_IN_ENV
+	bool "Check $LANG environment variable"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE
+	help
+	  With this option on, Unicode support is activated
+	  only if LANG variable has the value of the form "xxxx.utf8"
+
+	  Otherwise, Unicode support will be always enabled and active.
+
+config BUSYBOX_CONFIG_SUBST_WCHAR
+	int "Character code to substitute unprintable characters with"
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	default 63
+	help
+	  Typical values are 63 for '?' (works with any output device),
+	  30 for ASCII substitute control code,
+	  65533 (0xfffd) for Unicode replacement character.
+
+config BUSYBOX_CONFIG_LAST_SUPPORTED_WCHAR
+	int "Range of supported Unicode characters"
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	default 767
+	help
+	  Any character with Unicode value bigger than this is assumed
+	  to be non-printable on output device. Many applets replace
+	  such chars with substitution character.
+
+	  The idea is that many valid printable Unicode chars are
+	  nevertheless are not displayed correctly. Think about
+	  combining charachers, double-wide hieroglyphs, obscure
+	  characters in dozens of ancient scripts...
+	  Many terminals, terminal emulators, xterms etc will fail
+	  to handle them correctly. Choose the smallest value
+	  which suits your needs.
+
+	  Typical values are:
+	  126 - ASCII only
+	  767 (0x2ff) - there are no combining chars in [0..767] range
+			(the range includes Latin 1, Latin Ext. A and B),
+			code is ~700 bytes smaller for this case.
+	  4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
+			code is ~300 bytes smaller for this case.
+	  12799 (0x31ff) - nearly all non-ideographic characters are
+			available in [0..12799] range, including
+			East Asian scripts like katakana, hiragana, hangul,
+			bopomofo...
+	  0 - off, any valid printable Unicode character will be printed.
+
+config BUSYBOX_CONFIG_UNICODE_COMBINING_WCHARS
+	bool "Allow zero-width Unicode characters on output"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	help
+	  With this option off, any Unicode char with width of 0
+	  is substituted on output.
+
+config BUSYBOX_CONFIG_UNICODE_WIDE_WCHARS
+	bool "Allow wide Unicode characters on output"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	help
+	  With this option off, any Unicode char with width > 1
+	  is substituted on output.
+
+config BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT
+	bool "Bidirectional character-aware line input"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE
+	help
+	  With this option on, right-to-left Unicode characters
+	  are treated differently on input (e.g. cursor movement).
+
+config BUSYBOX_CONFIG_UNICODE_NEUTRAL_TABLE
+	bool "In bidi input, support non-ASCII neutral chars too"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT
+	help
+	  In most cases it's enough to treat only ASCII non-letters
+	  (i.e. punctuation, numbers and space) as characters
+	  with neutral directionality.
+	  With this option on, more extensive (and bigger) table
+	  of neutral chars will be used.
+
+config BUSYBOX_CONFIG_UNICODE_PRESERVE_BROKEN
+	bool "Make it possible to enter sequences of chars which are not Unicode"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	help
+	  With this option on, invalid UTF-8 bytes are not substituted
+	  with the selected substitution character.
+	  For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
+	  at shell prompt will list file named 0xff (single char name
+	  with char value 255), not file named '?'.
+
+config BUSYBOX_CONFIG_LONG_OPTS
+	bool "Support for --long-options"
 	default y
 	help
-	  Enable if you want BusyBox to work with devfs.
+	  Enable this if you want busybox applets to use the gnu --long-option
+	  style, in addition to single character -a -b -c style options.
 
 config BUSYBOX_CONFIG_FEATURE_DEVPTS
 	bool "Use the devpts filesystem for Unix98 PTYs"
-	default y if BUSYBOX_CONFIG_FEATURE_DEVFS
+	default y
 	help
 	  Enable if you want BusyBox to use Unix98 PTY support. If enabled,
 	  busybox will use /dev/ptmx for the master side of the pseudoterminal
-	  and /dev/pts/<number> for the slave side.  Otherwise, BSD style
+	  and /dev/pts/<number> for the slave side. Otherwise, BSD style
 	  /dev/ttyp<number> will be used. To use this option, you should have
-	  devpts or devfs mounted.
+	  devpts mounted.
 
 config BUSYBOX_CONFIG_FEATURE_CLEAN_UP
 	bool "Clean up all memory before exiting (usually not needed)"
 	default n
 	help
-	  As a size optimization, busybox by default does not cleanup memory
-	  that is dynamically allocated or close files before exiting. This
-	  saves space and is usually not needed since the OS will clean up for
-	  us.  Don't enable this unless you have a really good reason to clean
+	  As a size optimization, busybox normally exits without explicitly
+	  freeing dynamically allocated memory or closing files. This saves
+	  space since the OS will clean up for us, but it can confuse debuggers
+	  like valgrind, which report tons of memory and resource leaks.
+
+	  Don't enable this unless you have a really good reason to clean
 	  things up manually.
 
+config BUSYBOX_CONFIG_FEATURE_WTMP
+	bool "Support wtmp file"
+	default n
+	select BUSYBOX_CONFIG_FEATURE_UTMP
+	help
+	  The file /var/run/wtmp is used to track when users have logged into
+	  and logged out of the system.
+	  With this option on, certain applets (getty, login, telnetd etc)
+	  will append new entries there.
+	  "last" applet requires this option.
+
+config BUSYBOX_CONFIG_FEATURE_UTMP
+	bool "Support utmp file"
+	default n
+	help
+	  The file /var/run/utmp is used to track who is currently logged in.
+	  With this option on, certain applets (getty, login, telnetd etc)
+	  will create and delete entries there.
+	  "who" applet requires this option.
+
+config BUSYBOX_CONFIG_FEATURE_PIDFILE
+	bool "Support writing pidfiles"
+	default y
+	help
+	  This option makes some applets (e.g. crond, syslogd, inetd) write
+	  a pidfile in /var/run. Some applications rely on them.
+
 config BUSYBOX_CONFIG_FEATURE_SUID
 	bool "Support for SUID/SGID handling"
 	default y
 	help
-	  Support SUID and SGID binaries.
+	  With this option you can install the busybox binary belonging
+	  to root with the suid bit set, enabling some applets to perform
+	  root-level operations even when run by ordinary users
+	  (for example, mounting of user mounts in fstab needs this).
+
+	  Busybox will automatically drop priviledges for applets
+	  that don't need root access.
+
+	  If you are really paranoid and don't want to do this, build two
+	  busybox binaries with different applets in them (and the appropriate
+	  symlinks pointing to each binary), and only set the suid bit on the
+	  one that needs it.
+
+	  The applets currently marked to need the suid bit are:
+
+	  crontab, dnsd, findfs, ipcrm, ipcs, login, passwd, ping, su,
+	  traceroute, vlock.
 
 config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG
 	bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
 	default n if BUSYBOX_CONFIG_FEATURE_SUID
 	depends on BUSYBOX_CONFIG_FEATURE_SUID
 	help
-	  Allow the SUID / SGID state of an applet to be determined runtime by
-	  checking /etc/busybox.conf.  The format of this file is as follows:
+	  Allow the SUID / SGID state of an applet to be determined at runtime
+	  by checking /etc/busybox.conf. (This is sort of a poor man's sudo.)
+	  The format of this file is as follows:
 
 	  <applet> = [Ssx-][Ssx-][x-] (<username>|<uid>).(<groupname>|<gid>)
-	
+
 	  An example might help:
 
 	  [SUID]
-	  su = ssx root.0 # applet su can be run by anyone and runs with euid=0/egid=0
+	  su = ssx root.0 # applet su can be run by anyone and runs with
+	                  # euid=0/egid=0
 	  su = ssx        # exactly the same
 
-	  mount = sx- root.disk # applet mount can be run by root and members of group disk
-	                        # and runs with euid=0
+	  mount = sx- root.disk # applet mount can be run by root and members
+	                        # of group disk and runs with euid=0
 
 	  cp = --- # disable applet cp for everyone
 
+	  The file has to be owned by user root, group root and has to be
+	  writeable only by root:
+	        (chown 0.0 /etc/busybox.conf; chmod 600 /etc/busybox.conf)
+	  The busybox executable has to be owned by user root, group
+	  root and has to be setuid root for this to work:
+	        (chown 0.0 /bin/busybox; chmod 4755 /bin/busybox)
+
 	  Robert 'sandman' Griebl has more information here:
 	  <url: http://www.softforge.de/bb/suid.html >.
 
@@ -120,24 +370,71 @@ config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG_QUIET
 	default n
 	depends on BUSYBOX_CONFIG_FEATURE_SUID_CONFIG
 	help
-	  /etc/busybox.conf should be readable by the user needing the SUID, check
-	  this option to avoid users to be notified about missing permissions.
+	  /etc/busybox.conf should be readable by the user needing the SUID,
+	  check this option to avoid users to be notified about missing
+	  permissions.
 
 config BUSYBOX_CONFIG_SELINUX
 	bool "Support NSA Security Enhanced Linux"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Enable support for SE Linux in applets ls, ps, and id.  Also provide
-	  the option of compiling in SE Linux applets.
+	  Enable support for SELinux in applets ls, ps, and id. Also provide
+	  the option of compiling in SELinux applets.
 
-	  If you do not have a complete SE Linux Full Userland installed, this
-	  stuff will not compile.  Go visit
+	  If you do not have a complete SELinux userland installed, this stuff
+	  will not compile. Go visit
 		http://www.nsa.gov/selinux/index.html
-	  to download the necessary stuff to allow busybox to compile with this
-	  option enabled.
+	  to download the necessary stuff to allow busybox to compile with
+	  this option enabled. Specifially, libselinux 1.28 or better is
+	  directly required by busybox. If the installation is located in a
+	  non-standard directory, provide it by invoking make as follows:
+		CFLAGS=-I<libselinux-include-path> \
+		LDFLAGS=-L<libselinux-lib-path> \
+		make
 
 	  Most people will leave this set to 'N'.
 
+config BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
+	bool "exec prefers applets"
+	default y
+	help
+	  This is an experimental option which directs applets about to
+	  call 'exec' to try and find an applicable busybox applet before
+	  searching the PATH. This is typically done by exec'ing
+	  /proc/self/exe.
+	  This may affect shell, find -exec, xargs and similar applets.
+	  They will use applets even if /bin/<applet> -> busybox link
+	  is missing (or is not a link to busybox). However, this causes
+	  problems in chroot jails without mounted /proc and with ps/top
+	  (command name can be shown as 'exe' for applets started this way).
+
+config BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH
+	string "Path to BusyBox executable"
+	default "/proc/self/exe"
+	help
+	  When Busybox applets need to run other busybox applets, BusyBox
+	  sometimes needs to exec() itself. When the /proc filesystem is
+	  mounted, /proc/self/exe always points to the currently running
+	  executable. If you haven't got /proc, set this to wherever you
+	  want to run BusyBox from.
+
+# These are auto-selected by other options
+
+config BUSYBOX_CONFIG_FEATURE_SYSLOG
+	bool #No description makes it a hidden option
+	default y
+	#help
+	#  This option is auto-selected when you select any applet which may
+	#  send its output to syslog. You do not need to select it manually.
+
+config BUSYBOX_CONFIG_FEATURE_HAVE_RPC
+	bool #No description makes it a hidden option
+	default n
+	#help
+	#  This is automatically selected if any of enabled applets need it.
+	#  You do not need to select it manually.
+
 endmenu
 
 menu 'Build Options'
@@ -156,123 +453,197 @@ config BUSYBOX_CONFIG_STATIC
 
 	  Most people will leave this set to 'N'.
 
-config BUSYBOX_CONFIG_LFS
-	bool
-	default y
-	select BUSYBOX_FDISK_SUPPORT_LARGE_DISKS
+config BUSYBOX_CONFIG_PIE
+	bool "Build BusyBox as a position independent executable"
+	default n
+	depends on !BUSYBOX_CONFIG_STATIC
 	help
-	  If you want to build BusyBox with large file support, then enable
-	  this option.  This will have no effect if your kernel or your C
-	  library lacks large file support for large files.  Some of the
-	  programs that can benefit from large file support include dd, gzip,
-	  cp, mount, tar, and many others.  If you want to access files larger
-	  than 2 Gigabytes, enable this option.  Otherwise, leave it set to 'N'.
+	  (TODO: what is it and why/when is it useful?)
+	  Most people will leave this set to 'N'.
 
-config BUSYBOX_USING_CROSS_COMPILER
-	bool
-	default y
+config BUSYBOX_CONFIG_NOMMU
+	bool "Force NOMMU build"
+	default n
 	help
-	  Do you want to build BusyBox with a Cross Compiler?  If so,
-	  then enable this option.  Otherwise leave it set to 'N'.
+	  Busybox tries to detect whether architecture it is being
+	  built against supports MMU or not. If this detection fails,
+	  or if you want to build NOMMU version of busybox for testing,
+	  you may force NOMMU build here.
 
-config BUSYBOX_CROSS_COMPILER_PREFIX
-	string
-	default "mipsel-uclibc-"
-	depends on BUSYBOX_USING_CROSS_COMPILER
-	help
-	  If you want to build BusyBox with a cross compiler, then you
-	  will need to set this to the cross-compiler prefix.  For example,
-	  if my cross-compiler is /usr/i386-linux-uclibc/bin/i386-uclibc-gcc
-	  then I would enter '/usr/i386-linux-uclibc/bin/i386-uclibc-' here,
-	  which will ensure the correct compiler is used.
+	  Most people will leave this set to 'N'.
 
-config BUSYBOX_EXTRA_CFLAGS_OPTIONS
-	string
-	default "-Os "
+# PIE can be made to work with BUILD_LIBBUSYBOX, but currently
+# build system does not support that
+config BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
+	bool "Build shared libbusybox"
+	default n
+	depends on !BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS && !BUSYBOX_CONFIG_PIE && !BUSYBOX_CONFIG_STATIC
 	help
-	  Do you want to pass any extra CFLAGS options to the compiler as
-	  you build BusyBox? If so, this is the option for you...  For example,
-	  if you want to add some simple compiler switches (like -march=i686),
-	  or check for warnings using -Werror, just those options here.
+	  Build a shared library libbusybox.so.N.N.N which contains all
+	  busybox code.
+
+	  This feature allows every applet to be built as a tiny
+	  separate executable. Enabling it for "one big busybox binary"
+	  approach serves no purpose and increases code size.
+	  You should almost certainly say "no" to this.
+
+### config FEATURE_FULL_LIBBUSYBOX
+###	bool "Feature-complete libbusybox"
+###	default n if !FEATURE_SHARED_BUSYBOX
+###	depends on BUILD_LIBBUSYBOX
+###	help
+###	  Build a libbusybox with the complete feature-set, disregarding
+###	  the actually selected config.
+###
+###	  Normally, libbusybox will only contain the features which are
+###	  used by busybox itself. If you plan to write a separate
+###	  standalone application which uses libbusybox say 'Y'.
+###
+###	  Note: libbusybox is GPL, not LGPL, and exports no stable API that
+###	  might act as a copyright barrier. We can and will modify the
+###	  exported function set between releases (even minor version number
+###	  changes), and happily break out-of-tree features.
+###
+###	  Say 'N' if in doubt.
+
+config BUSYBOX_CONFIG_FEATURE_INDIVIDUAL
+	bool "Produce a binary for each applet, linked against libbusybox"
+	default n
+	depends on BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
+	help
+	  If your CPU architecture doesn't allow for sharing text/rodata
+	  sections of running binaries, but allows for runtime dynamic
+	  libraries, this option will allow you to reduce memory footprint
+	  when you have many different applets running at once.
 
-endmenu
+	  If your CPU architecture allows for sharing text/rodata,
+	  having single binary is more optimal.
 
-menu 'Installation Options'
+	  Each applet will be a tiny program, dynamically linked
+	  against libbusybox.so.N.N.N.
 
-config BUSYBOX_CONFIG_INSTALL_NO_USR
-	bool "Don't use /usr"
+	  You need to have a working dynamic linker.
+
+config BUSYBOX_CONFIG_FEATURE_SHARED_BUSYBOX
+	bool "Produce additional busybox binary linked against libbusybox"
 	default n
+	depends on BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
 	help
-	  Disable use of /usr. Don't activate this option if you don't know
-	  that you really want this behaviour.
+	  Build busybox, dynamically linked against libbusybox.so.N.N.N.
+
+	  You need to have a working dynamic linker.
+
+### config BUILD_AT_ONCE
+###	bool "Compile all sources at once"
+###	default n
+###	help
+###	  Normally each source-file is compiled with one invocation of
+###	  the compiler.
+###	  If you set this option, all sources are compiled at once.
+###	  This gives the compiler more opportunities to optimize which can
+###	  result in smaller and/or faster binaries.
+###
+###	  Setting this option will consume alot of memory, e.g. if you
+###	  enable all applets with all features, gcc uses more than 300MB
+###	  RAM during compilation of busybox.
+###
+###	  This option is most likely only beneficial for newer compilers
+###	  such as gcc-4.1 and above.
+###
+###	  Say 'N' unless you know what you are doing.
 
-config BUSYBOX_PREFIX
-	string
-	default "./_install"
+config BUSYBOX_CONFIG_LFS
+	bool
+	default y
+	select BUSYBOX_CONFIG_FDISK_SUPPORT_LARGE_DISKS
 	help
-	  Define your directory to install BusyBox files/subdirs in.
+	  If you want to build BusyBox with large file support, then enable
+	  this option. This will have no effect if your kernel or your C
+	  library lacks large file support for large files. Some of the
+	  programs that can benefit from large file support include dd, gzip,
+	  cp, mount, tar, and many others. If you want to access files larger
+	  than 2 Gigabytes, enable this option. Otherwise, leave it set to 'N'.
 
+config BUSYBOX_CONFIG_CROSS_COMPILER_PREFIX
+	string "Cross Compiler prefix"
+	default ""
+	help
+	  If you want to build BusyBox with a cross compiler, then you
+	  will need to set this to the cross-compiler prefix, for example,
+	  "i386-uclibc-".
 
+	  Note that CROSS_COMPILE environment variable or
+	  "make CROSS_COMPILE=xxx ..." will override this selection.
 
-endmenu
+	  Native builds leave this empty.
 
-source package/busybox/config/archival/Config.in
-source package/busybox/config/coreutils/Config.in
-source package/busybox/config/console-tools/Config.in
-source package/busybox/config/debianutils/Config.in
-source package/busybox/config/editors/Config.in
-source package/busybox/config/findutils/Config.in
-source package/busybox/config/init/Config.in
-source package/busybox/config/loginutils/Config.in
-source package/busybox/config/miscutils/Config.in
-source package/busybox/config/modutils/Config.in
-source package/busybox/config/networking/Config.in
-source package/busybox/config/procps/Config.in
-source package/busybox/config/shell/Config.in
-source package/busybox/config/sysklogd/Config.in
-source package/busybox/config/util-linux/Config.in
+config BUSYBOX_CONFIG_EXTRA_CFLAGS
+	string "Additional CFLAGS"
+	default ""
+	help
+	  Additional CFLAGS to pass to the compiler verbatim.
+
+endmenu
 
 menu 'Debugging Options'
 
 config BUSYBOX_CONFIG_DEBUG
-	bool "Build BusyBox with Debugging symbols"
+	bool "Build BusyBox with extra Debugging symbols"
 	default n
 	help
-	  Say Y here if you wish to compile BusyBox with debugging symbols.
-	  This will allow you to use a debugger to examine BusyBox internals
-	  while applets are running.  This increases the size of the binary
-	  considerably and should only be used when doing development.
-	  If you are doing development and want to debug BusyBox, answer Y.
+	  Say Y here if you wish to examine BusyBox internals while applets are
+	  running. This increases the size of the binary considerably, and
+	  should only be used when doing development. If you are doing
+	  development and want to debug BusyBox, answer Y.
+
+	  Most people should answer N.
+
+config BUSYBOX_CONFIG_DEBUG_PESSIMIZE
+	bool "Disable compiler optimizations"
+	default n
+	depends on BUSYBOX_CONFIG_DEBUG
+	help
+	  The compiler's optimization of source code can eliminate and reorder
+	  code, resulting in an executable that's hard to understand when
+	  stepping through it with a debugger. This switches it off, resulting
+	  in a much bigger executable that more closely matches the source
+	  code.
+
+config BUSYBOX_CONFIG_WERROR
+	bool "Abort compilation on any warning"
+	default n
+	help
+	  Selecting this will add -Werror to gcc command line.
 
 	  Most people should answer N.
 
 choice
 	prompt "Additional debugging library"
 	default BUSYBOX_CONFIG_NO_DEBUG_LIB
-	depends on BUSYBOX_CONFIG_DEBUG
 	help
 	  Using an additional debugging library will make BusyBox become
-	  considerable larger and will cause it to run more slowly.  You
+	  considerable larger and will cause it to run more slowly. You
 	  should always leave this option disabled for production use.
 
 	  dmalloc support:
 	  ----------------
 	  This enables compiling with dmalloc ( http://dmalloc.com/ )
 	  which is an excellent public domain mem leak and malloc problem
-	  detector.  To enable dmalloc, before running busybox you will
+	  detector. To enable dmalloc, before running busybox you will
 	  want to properly set your environment, for example:
 	    export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
 	  The 'debug=' value is generated using the following command
-	    dmalloc -p log-stats -p log-non-free -p log-bad-space -p log-elapsed-time \
-	       -p check-fence -p check-heap -p check-lists -p check-blank \
-	       -p check-funcs -p realloc-copy -p allow-free-null
+	    dmalloc -p log-stats -p log-non-free -p log-bad-space \
+	       -p log-elapsed-time -p check-fence -p check-heap \
+	       -p check-lists -p check-blank -p check-funcs -p realloc-copy \
+	       -p allow-free-null
 
 	  Electric-fence support:
 	  -----------------------
-	  This enables compiling with Electric-fence support.  Electric
+	  This enables compiling with Electric-fence support. Electric
 	  fence is another very useful malloc debugging library which uses
 	  your computer's virtual memory hardware to detect illegal memory
-	  accesses.  This support will make BusyBox be considerable larger
+	  accesses. This support will make BusyBox be considerable larger
 	  and run slower, so you should leave this option disabled unless
 	  you are hunting a hard to find memory problem.
 
@@ -288,6 +659,103 @@ config BUSYBOX_CONFIG_EFENCE
 
 endchoice
 
+### config PARSE
+###	bool "Uniform config file parser debugging applet: parse"
 
 endmenu
 
+menu 'Installation Options ("make install" behavior)'
+
+choice
+	prompt "What kind of applet links to install"
+	default BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS
+	help
+	  Choose what kind of links to applets are created by "make install".
+
+config BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS
+	bool "as soft-links"
+	help
+	  Install applets as soft-links to the busybox binary. This needs some
+	  free inodes on the filesystem, but might help with filesystem
+	  generators that can't cope with hard-links.
+
+config BUSYBOX_CONFIG_INSTALL_APPLET_HARDLINKS
+	bool "as hard-links"
+	help
+	  Install applets as hard-links to the busybox binary. This might
+	  count on a filesystem with few inodes.
+
+config BUSYBOX_CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS
+	bool "as script wrappers"
+	help
+	  Install applets as script wrappers that call the busybox binary.
+
+config BUSYBOX_CONFIG_INSTALL_APPLET_DONT
+	bool "not installed"
+	depends on BUSYBOX_CONFIG_FEATURE_INSTALLER || BUSYBOX_CONFIG_FEATURE_SH_STANDALONE || BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
+	help
+	  Do not install applet links. Useful when you plan to use
+	  busybox --install for installing links, or plan to use
+	  a standalone shell and thus don't need applet links.
+
+endchoice
+
+choice
+	prompt "/bin/sh applet link"
+	default BUSYBOX_CONFIG_INSTALL_SH_APPLET_SYMLINK
+	depends on BUSYBOX_CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS
+	help
+	  Choose how you install /bin/sh applet link.
+
+config BUSYBOX_CONFIG_INSTALL_SH_APPLET_SYMLINK
+	bool "as soft-link"
+	help
+	  Install /bin/sh applet as soft-link to the busybox binary.
+
+config BUSYBOX_CONFIG_INSTALL_SH_APPLET_HARDLINK
+	bool "as hard-link"
+	help
+	  Install /bin/sh applet as hard-link to the busybox binary.
+
+config BUSYBOX_CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER
+	bool "as script wrapper"
+	help
+	  Install /bin/sh applet as script wrapper that calls
+	  the busybox binary.
+
+endchoice
+
+config BUSYBOX_CONFIG_PREFIX
+	string "BusyBox installation prefix"
+	default "./_install"
+	help
+	  Define your directory to install BusyBox files/subdirs in.
+
+endmenu
+
+source package/busybox/config/libbb/Config.in
+
+endmenu
+
+comment "Applets"
+
+source package/busybox/config/archival/Config.in
+source package/busybox/config/coreutils/Config.in
+source package/busybox/config/console-tools/Config.in
+source package/busybox/config/debianutils/Config.in
+source package/busybox/config/editors/Config.in
+source package/busybox/config/findutils/Config.in
+source package/busybox/config/init/Config.in
+source package/busybox/config/loginutils/Config.in
+source package/busybox/config/e2fsprogs/Config.in
+source package/busybox/config/modutils/Config.in
+source package/busybox/config/util-linux/Config.in
+source package/busybox/config/miscutils/Config.in
+source package/busybox/config/networking/Config.in
+source package/busybox/config/printutils/Config.in
+source package/busybox/config/mailutils/Config.in
+source package/busybox/config/procps/Config.in
+source package/busybox/config/runit/Config.in
+source package/busybox/config/selinux/Config.in
+source package/busybox/config/shell/Config.in
+source package/busybox/config/sysklogd/Config.in