config BR2_PACKAGE_BUSYBOX
	bool "BusyBox"
	default y
	help
	  The Swiss Army Knife of embedded Linux. It slices, it dices,
	  it makes Julian Fries.

	  http://busybox.net/

	  Most people will answer Y.

if BR2_PACKAGE_BUSYBOX

config BR2_PACKAGE_BUSYBOX_CONFIG
	string "BusyBox configuration file to use?"
	default "package/busybox/busybox.config"
	help
	  Some people may wish to use their own modified BusyBox
	  configuration file, and will specify their config file
	  location with this option.

	  Most people will just use the default BusyBox configuration
	  file.

config BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES
	string "Additional BusyBox configuration fragment files"
	help
	  A space-separated list of configuration fragment files,
	  that will be merged to the main BusyBox configuration file.

# This option is not an option of Busybox, it can be selected even
# if Busybox is not enabled.
config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
	bool "Show packages that are also provided by busybox"
	help
	  Show packages in menuconfig that are potentially also provided
	  by busybox.

config BR2_PACKAGE_BUSYBOX_SELINUX
	bool "Enable SELinux support"
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on !BR2_STATIC_LIBS
	depends on BR2_TOOLCHAIN_USES_GLIBC
	depends on !BR2_arc
	select BR2_PACKAGE_LIBSELINUX
	help
	  Enable SELinux support in BusyBox. Please note that
	  depending on your BusyBox configuration and the SELinux
	  policy implementation, you may want to also enable
	  BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES.

	  For instance, if your BusyBox configuration only uses a
	  couple of minor BusyBox features, such as simple command
	  line utilities, the symlinked version of BusyBox can be used
	  to save space. If BusyBox provides more features, such as
	  crond, then individual binaries have to be enabled for the
	  SELinux type transitions to occur properly.

config BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES
	bool "Individual binaries"
	depends on !BR2_STATIC_LIBS
	depends on !BR2_bfin # libbusybox.so link issue
	help
	  By default (i.e with this option disabled), Busybox is
	  installed as a single binary in /bin/busybox and all applets
	  are a symbolic link to /bin/busybox.

	  With this option enabled, each applet is a separate binary,
	  which is needed for proper operation with SELinux.

comment "Busybox individual binaries need a toolchain w/ dynamic library"
	depends on BR2_STATIC_LIBS
	depends on !BR2_bfin

config BR2_PACKAGE_BUSYBOX_WATCHDOG
	bool "Install the watchdog daemon startup script"
	help
	  Install the watchdog daemon startup script,
	  that just start at the boot the busybox watchdog daemon.

if BR2_PACKAGE_BUSYBOX_WATCHDOG

config BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD
	string "Delay between reset"
	default "5"
	help
	  Select the number of seconds between each
	  reset of the watchdog (default 5)

	  Use ms suffix to specify milliseconds (e.g. 500ms)

endif

endif

if !BR2_PACKAGE_BUSYBOX # kconfig doesn't support else

comment "You may need to enable other packages to get a working system"
comment "You better know what you're doing!"

# This option is not an option of Busybox, it can be selected even if
# Busybox is not enabled. This dummy option ensures that packages that
# depend on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS are visible when Busybox
# is disabled.
config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
	default y
endif
