examples: make udhcpc script handle /32 netmasks
[oweals/busybox.git] / Config.in
index 1e7181261f306b3e17e14e8ee1aa29fde0147eb5..cfb3aa0ee255ec36158cebf8f0a0442476d8238e 100644 (file)
--- a/Config.in
+++ b/Config.in
@@ -11,15 +11,18 @@ config HAVE_DOT_CONFIG
 
 menu "Busybox Settings"
 
-menu "General Configuration"
-
 config DESKTOP
        bool "Enable options for full-blown desktop systems"
        default y
        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.
+         Select this if you plan to use busybox on full-blown desktop machine
+         with common Linux distro, which needs higher level of command-line
+         compatibility.
+
+         If you are preparing your build to be used on an embedded box
+         where you have tighter control over the entire set of userspace
+         tools, you can unselect this option for smaller code size.
 
 config EXTRA_COMPAT
        bool "Provide compatible behavior for rare corner cases (bigger code)"
@@ -47,56 +50,22 @@ config USE_PORTABLE_CODE
          compiler other than gcc.
          If you do use gcc, this option may needlessly increase code size.
 
-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 FEATURE_BUFFERS_USE_MALLOC
-       help
-         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.
-         - 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
-           earlier.
-
-config FEATURE_BUFFERS_USE_MALLOC
-       bool "Allocate with Malloc"
-
-config FEATURE_BUFFERS_GO_ON_STACK
-       bool "Allocate on the Stack"
-
-config FEATURE_BUFFERS_GO_IN_BSS
-       bool "Allocate in the .bss section"
-
-endchoice
-
 config SHOW_USAGE
-       bool "Show terse applet usage messages"
+       bool "Show 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.
+         Enabling this option, BusyBox applets will show terse help messages
+         when invoked with wrong arguments.
+         If you do not want to show any (helpful) usage message when
+         issuing wrong command syntax, you can say 'N' here,
+         saving approximately 7k.
 
 config FEATURE_VERBOSE_USAGE
        bool "Show verbose applet usage messages"
        default y
        depends on SHOW_USAGE
        help
-         All BusyBox applets will show more verbose help messages when
+         All BusyBox applets will show 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
          13k, but it can add much more depending on your configuration.
@@ -106,8 +75,8 @@ config FEATURE_COMPRESS_USAGE
        default y
        depends on SHOW_USAGE
        help
-         Store usage messages in compressed form, uncompress them on-the-fly
-         when <applet> --help is called.
+         Store usage messages in .bz 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
@@ -115,9 +84,21 @@ config FEATURE_COMPRESS_USAGE
          and have very little memory, this might not be a win. Otherwise,
          you probably want this.
 
+config BUSYBOX
+       bool "Include busybox applet"
+       default y
+       help
+         The busybox applet provides general help regarding busybox and
+         allows the included applets to be listed.  It's also required
+         if applet links are to be installed at runtime.
+
+         If you can live without these features disabling this will save
+         some space.
+
 config FEATURE_INSTALLER
        bool "Support --install [-s] to install applet links at runtime"
        default y
+       depends on BUSYBOX
        help
          Enable 'busybox --install [-s]' support. This will allow you to use
          busybox at runtime to create hard links or symlinks for all the
@@ -131,132 +112,15 @@ config INSTALL_NO_USR
          will install applets only to /bin and /sbin,
          never to /usr/bin or /usr/sbin.
 
-config LOCALE_SUPPORT
-       bool "Enable locale support (system needs locale for this to work)"
-       default n
-       help
-         Enable this if your system has locale support and you would like
-         busybox to support locale settings.
-
-config UNICODE_SUPPORT
-       bool "Support Unicode"
-       default y
-       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 UNICODE_USING_LOCALE
-       bool "Use libc routines for Unicode (else uses internal ones)"
+config PAM
+       bool "Support PAM (Pluggable Authentication Modules)"
        default n
-       depends on UNICODE_SUPPORT && LOCALE_SUPPORT
        help
-         With this option on, Unicode support is implemented using libc
-         routines. Otherwise, internal implementation is used.
-         Internal implementation is smaller.
-
-config FEATURE_CHECK_UNICODE_IN_ENV
-       bool "Check $LANG environment variable"
-       default n
-       depends on UNICODE_SUPPORT && !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 SUBST_WCHAR
-       int "Character code to substitute unprintable characters with"
-       depends on 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 LAST_SUPPORTED_WCHAR
-       int "Range of supported Unicode characters"
-       depends on 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 UNICODE_COMBINING_WCHARS
-       bool "Allow zero-width Unicode characters on output"
-       default n
-       depends on UNICODE_SUPPORT
-       help
-         With this option off, any Unicode char with width of 0
-         is substituted on output.
-
-config UNICODE_WIDE_WCHARS
-       bool "Allow wide Unicode characters on output"
-       default n
-       depends on UNICODE_SUPPORT
-       help
-         With this option off, any Unicode char with width > 1
-         is substituted on output.
-
-config UNICODE_BIDI_SUPPORT
-       bool "Bidirectional character-aware line input"
-       default n
-       depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
-       help
-         With this option on, right-to-left Unicode characters
-         are treated differently on input (e.g. cursor movement).
-
-config UNICODE_NEUTRAL_TABLE
-       bool "In bidi input, support non-ASCII neutral chars too"
-       default n
-       depends on 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 UNICODE_PRESERVE_BROKEN
-       bool "Make it possible to enter sequences of chars which are not Unicode"
-       default n
-       depends on UNICODE_SUPPORT
-       help
-         With this option on, on line-editing input (such as used by shells)
-         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 '?'.
+         Use PAM in some busybox applets (currently login and httpd) instead
+         of direct access to password database.
 
 config LONG_OPTS
-       bool "Support for --long-options"
+       bool "Support --long-options"
        default y
        help
          Enable this if you want busybox applets to use the gnu --long-option
@@ -309,10 +173,21 @@ config FEATURE_PIDFILE
        default y
        help
          This option makes some applets (e.g. crond, syslogd, inetd) write
-         a pidfile in /var/run. Some applications rely on them.
+         a pidfile at the configured PID_FILE_PATH.  It has no effect
+         on applets which require pidfiles to run.
+
+config PID_FILE_PATH
+       string "Path to directory for pidfile"
+       default "/var/run"
+       depends on FEATURE_PIDFILE
+       help
+         This is the default path where pidfiles are created.  Applets which
+         allow you to set the pidfile path on the command line will override
+         this value.  The option has no effect on applets that require you to
+         specify a pidfile path.
 
 config FEATURE_SUID
-       bool "Support for SUID/SGID handling"
+       bool "Support SUID/SGID handling"
        default y
        help
          With this option you can install the busybox binary belonging
@@ -320,7 +195,7 @@ config FEATURE_SUID
          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
+         Busybox will automatically drop privileges for applets
          that don't need root access.
 
          If you are really paranoid and don't want to do this, build two
@@ -403,10 +278,7 @@ config SELINUX
          the option of compiling in SELinux applets.
 
          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. Specifially, libselinux 1.28 or better is
+         will not compile.  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> \
@@ -455,9 +327,18 @@ config FEATURE_HAVE_RPC
        #  This is automatically selected if any of enabled applets need it.
        #  You do not need to select it manually.
 
-endmenu
+config PLATFORM_LINUX
+       bool #No description makes it a hidden option
+       default n
+       #help
+       #  For the most part, busybox requires only POSIX compatibility
+       #  from the target system, but some applets and features use
+       #  Linux-specific interfaces.
+       #
+       #  This is automatically selected if any applet or feature requires
+       #  Linux-specific interfaces. You do not need to select it manually.
 
-menu 'Build Options'
+comment 'Build Options'
 
 config STATIC
        bool "Build BusyBox as a static binary (no shared libs)"
@@ -599,15 +480,106 @@ config CROSS_COMPILER_PREFIX
 
          Native builds leave this empty.
 
+config SYSROOT
+       string "Path to sysroot"
+       default ""
+       help
+         If you want to build BusyBox with a cross compiler, then you
+         might also need to specify where /usr/include and /usr/lib
+         will be found.
+
+         For example, BusyBox can be built against an installed
+         Android NDK, platform version 9, for ARM ABI with
+
+         CONFIG_SYSROOT=/opt/android-ndk/platforms/android-9/arch-arm
+
+         Native builds leave this empty.
+
 config EXTRA_CFLAGS
        string "Additional CFLAGS"
        default ""
        help
          Additional CFLAGS to pass to the compiler verbatim.
 
-endmenu
+config EXTRA_LDFLAGS
+       string "Additional LDFLAGS"
+       default ""
+       help
+         Additional LDFLAGS to pass to the linker verbatim.
+
+config EXTRA_LDLIBS
+       string "Additional LDLIBS"
+       default ""
+       help
+         Additional LDLIBS to pass to the linker with -l.
+
+comment 'Installation Options ("make install" behavior)'
+
+choice
+       prompt "What kind of applet links to install"
+       default INSTALL_APPLET_SYMLINKS
+       help
+         Choose what kind of links to applets are created by "make install".
 
-menu 'Debugging Options'
+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 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 INSTALL_APPLET_SCRIPT_WRAPPERS
+       bool "as script wrappers"
+       help
+         Install applets as script wrappers that call the busybox binary.
+
+config INSTALL_APPLET_DONT
+       bool "not installed"
+       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 INSTALL_SH_APPLET_SYMLINK
+       depends on INSTALL_APPLET_SCRIPT_WRAPPERS
+       help
+         Choose how you install /bin/sh applet link.
+
+config INSTALL_SH_APPLET_SYMLINK
+       bool "as soft-link"
+       help
+         Install /bin/sh applet as soft-link to the busybox binary.
+
+config INSTALL_SH_APPLET_HARDLINK
+       bool "as hard-link"
+       help
+         Install /bin/sh applet as hard-link to the busybox binary.
+
+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 PREFIX
+       string "BusyBox installation prefix"
+       default "./_install"
+       help
+         Define your directory to install BusyBox files/subdirs in.
+
+comment 'Debugging Options'
 
 config DEBUG
        bool "Build BusyBox with extra Debugging symbols"
@@ -631,11 +603,31 @@ config DEBUG_PESSIMIZE
          in a much bigger executable that more closely matches the source
          code.
 
+config DEBUG_SANITIZE
+       bool "Enable runtime sanitizers (ASAN/LSAN/USAN/etc...)"
+       default n
+       help
+         Say Y here if you want to enable runtime sanitizers. These help
+         catch bad memory accesses (e.g. buffer overflows), but will make
+         the executable larger and slow down runtime a bit.
+
+         This adds -fsanitize=foo options to gcc command line.
+
+         If you aren't developing/testing busybox, say N here.
+
+config UNIT_TEST
+       bool "Build unit tests"
+       default n
+       help
+         Say Y here if you want to build unit tests (both the framework and
+         test cases) as a Busybox applet. This results in bigger code, so you
+         probably don't want this option in production builds.
+
 config WERROR
        bool "Abort compilation on any warning"
        default n
        help
-         Selecting this will add -Werror to gcc command line.
+         This adds -Werror to gcc command line.
 
          Most people should answer N.
 
@@ -683,78 +675,8 @@ endchoice
 
 endmenu
 
-menu 'Installation Options ("make install" behavior)'
-
-choice
-       prompt "What kind of applet links to install"
-       default INSTALL_APPLET_SYMLINKS
-       help
-         Choose what kind of links to applets are created by "make install".
-
-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 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 INSTALL_APPLET_SCRIPT_WRAPPERS
-       bool "as script wrappers"
-       help
-         Install applets as script wrappers that call the busybox binary.
-
-config INSTALL_APPLET_DONT
-       bool "not installed"
-       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 INSTALL_SH_APPLET_SYMLINK
-       depends on INSTALL_APPLET_SCRIPT_WRAPPERS
-       help
-         Choose how you install /bin/sh applet link.
-
-config INSTALL_SH_APPLET_SYMLINK
-       bool "as soft-link"
-       help
-         Install /bin/sh applet as soft-link to the busybox binary.
-
-config INSTALL_SH_APPLET_HARDLINK
-       bool "as hard-link"
-       help
-         Install /bin/sh applet as hard-link to the busybox binary.
-
-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 PREFIX
-       string "BusyBox installation prefix"
-       default "./_install"
-       help
-         Define your directory to install BusyBox files/subdirs in.
-
-endmenu
-
 source libbb/Config.in
 
-endmenu
-
 comment "Applets"
 
 source archival/Config.in