#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

mainmenu "BusyBox Configuration"

config HAVE_DOT_CONFIG
	bool
	default y

menu "General Configuration"

choice
	prompt "Buffer allocation policy"
	default "Allocate with 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 CONFIG_FEATURE_BUFFERS_USE_MALLOC
	bool "Allocate with Malloc"

config CONFIG_FEATURE_BUFFERS_GO_ON_STACK
	bool "Allocate on the Stack"

config CONFIG_FEATURE_BUFFERS_GO_IN_BSS
	bool "Allocate in the .bss section"

endchoice

config CONFIG_FEATURE_VERBOSE_USAGE
	bool "Show verbose applet usage messages"
	default n
	help
	  All BusyBox applets will show more verbose help messages when
	  busybox is invoked with --help.  This will add lots 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 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
	  busybox at runtime to create hard links or symlinks for all the
	  applets that are compiled into busybox.  This feature requires the
	  /proc filesystem.

config 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 CONFIG_FEATURE_DEVFS
	bool "Support for devfs"
	default n
	help
	  Enable if you want BusyBox to work with devfs.

config CONFIG_FEATURE_DEVPTS
	bool "Use the devpts filesystem for Unix98 PTYs"
	default y if CONFIG_FEATURE_DEVFS
	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
	  /dev/ttyp<number> will be used. To use this option, you should have
	  devpts or devfs mounted.

config 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
	  things up manually.

config CONFIG_FEATURE_SUID
	bool "Support for SUID/SGID handling"
	default n
	help
	  Please submit a patch to add help text for this item.

config CONFIG_FEATURE_SUID_CONFIG
	bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
	default y if CONFIG_FEATURE_SUID
	depends on CONFIG_FEATURE_SUID
	help
	  Please submit a patch to add help text for this item.

config CONFIG_FEATURE_SUID_CONFIG_QUIET
	bool "Suppress warning message if /etc/busybox.conf is not readable"
	default n
	depends on CONFIG_FEATURE_SUID_CONFIG
	help
	  Please submit a patch to add help text for this item.

config CONFIG_SELINUX
	bool "Support NSA Security Enhanced Linux"
	default n
	help
	  Enable support for SE Linux in applets ls, ps, and id.  Also provide
	  the option of compiling in SE Linux applets.

endmenu

menu 'Build Options'

config DOSTATIC
	bool "Build BusyBox as a static binary (no shared libs)"
	default n
	help
	  If you want to build a static BusyBox binary, which does not 
	  use or require any shared libraries, then enable this option.  

config DOLFS
	bool "Build with Large File Support (for accessing files > 2 GB)" 
	default n
	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'.

config USING_CROSS_COMPILER
	bool "Do you want to build BusyBox with a Cross Compiler?"
	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'.

config CROSS_COMPILER_PREFIX
	string "Cross Compiler prefix"
	default "/usr/i386-linux-uclibc/bin/i386-uclibc-"
	depends on 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.

config EXTRA_CFLAGS_OPTIONS
	string "Any extra CFLAGS options for the compiler?"
	default ""
	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.

endmenu

menu 'Installation Options'

config CONFIG_INSTALL_NO_USR
	bool "Don't use /usr"
	default n
	help
	  Disable use of /usr. Don't activate this option if you don't know,
	  that you really want this behaviour.

config PREFIX
	string "BusyBox installation prefix"
	default "./_install"
	help
	  Define Your directory to install BusyBox files/subdirs.



endmenu

source archival/Config.in
source coreutils/Config.in
source console-tools/Config.in
source debianutils/Config.in
source editors/Config.in
source findutils/Config.in
source init/Config.in
source loginutils/Config.in
source miscutils/Config.in
source modutils/Config.in
source networking/Config.in
source procps/Config.in
source shell/Config.in
source sysklogd/Config.in
source util-linux/Config.in

menu 'Debugging Options'

config DOSTATIC
	bool "Build BusyBox as a static binary (no shared libs)"
	default n
	help
	  If you want to build a static BusyBox binary, which does not 
	  use or require any shared libraries, then enable this option.  
	  This will make BusyBox be considerable larger, so you should
	  leave this option false unless you have a good reason (i.e.
	  your target platform does not support shared libraries, or
	  you are building an initrd which doesn't need anything but
	  BusyBox, etc).

	  Most people will leave this set to 'N'.

config DODEBUG
	bool "Build BusyBox with 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.

	  Otherwise, answer N.

config DODMALLOC
	bool "Build BusyBox with dmalloc support"
	default n
	depends on DODEBUG && !DOEFENCE
	help
	  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
	  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

	  This will make BusyBox be considerable larger and run slower, so 
	  you should leave this option disabled for production use.

config DOEFENCE
	bool "Build BusyBox with Electric-fence support"
	default n
	depends on DODEBUG && !DODMALLOC
	help
	  This enables compiling with Electric-fence support.  Electric
	  fence is another very useful malloc debugging library which used
	  your computers virtual memory hardware to detect illegal memory 
	  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.

endmenu

