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
	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

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
