config BR2_PACKAGE_UTIL_LINUX
	bool "util-linux"
	depends on BR2_LARGEFILE
	depends on BR2_USE_WCHAR
	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
	help
	  Various useful/essential linux libraries and utilities.

	  Things like mkfs, mkswap, swapon, fdisk, mount, dmesg, etc...

	  http://www.kernel.org/pub/linux/utils/util-linux/

if BR2_PACKAGE_UTIL_LINUX

config BR2_PACKAGE_UTIL_LINUX_LIBBLKID
	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
	depends on BR2_USE_MMU # fork
	bool "libblkid"
	help
	  Install libblkid.

config BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
	# libc lacks UTIME_NOW & UTIME_COMMIT
	depends on !(BR2_microblazeel || BR2_microblazebe)
	depends on BR2_USE_MMU # util-linux/libblkid
	bool "libmount"
	help
	  Install libmount.

config BR2_PACKAGE_UTIL_LINUX_LIBUUID
	bool "libuuid"
	help
	  Install libuuid.

config BR2_PACKAGE_UTIL_LINUX_BINARIES
	bool "install utilities"
	depends on BR2_USE_MMU # fork()
	# libc lacks UTIME_NOW & UTIME_COMMIT for libmount
	depends on !(BR2_microblazeel || BR2_microblazebe)
	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
	help
	  Install the basic set of util-linux binaries.

if BR2_PACKAGE_UTIL_LINUX_BINARIES

config BR2_PACKAGE_UTIL_LINUX_AGETTY
	bool "agetty"
	help
	  Alternative linux getty

config BR2_PACKAGE_UTIL_LINUX_ARCH
	bool "arch"
	help
	  Print machine architecture

config BR2_PACKAGE_UTIL_LINUX_CRAMFS
	bool "cramfs utilities"
	select BR2_PACKAGE_ZLIB
	help
	  Build fsck.cramfs and mkfs.cramfs

config BR2_PACKAGE_UTIL_LINUX_DDATE
	bool "ddate"
	help
	  Convert Gregorian dates to Discordian dates

config BR2_PACKAGE_UTIL_LINUX_EJECT
	bool "eject"
	help
	  Eject removable media

config BR2_PACKAGE_UTIL_LINUX_FALLOCATE
	bool "fallocate"
	depends on !BR2_avr32 # fallocate not implemented
	help
	  Preallocate space to a file

config BR2_PACKAGE_UTIL_LINUX_FSCK
	bool "fsck"
	help
	  Check and repair a linux filesystem

config BR2_PACKAGE_UTIL_LINUX_KILL
	bool "kill"
	help
	  Send a signal to a process

config BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS
	bool "login utilities"
	depends on BR2_ENABLE_LOCALE # linux-pam
	select BR2_PACKAGE_LINUX_PAM
	help
	  Build login utilities (last, login, su, sulogin)

comment "login utilities needs a toolchain w/ locale"
	depends on !BR2_ENABLE_LOCALE

config BR2_PACKAGE_UTIL_LINUX_MESG
	bool "mesg"
	help
	  Control write access to your terminal

config BR2_PACKAGE_UTIL_LINUX_MOUNT
	bool "mount/umount"
	help
	  Mount/unmount filesystems

config BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT
	bool "pivot_root"
	help
	  Change the root filesystem

config BR2_PACKAGE_UTIL_LINUX_PARTX
	bool "partition utilities"
	help
	  Partition tools (addpart, delpart, partx)

config BR2_PACKAGE_UTIL_LINUX_RAW
	bool "raw"
	help
	  Build a linux raw character device

config BR2_PACKAGE_UTIL_LINUX_RENAME
	bool "rename"
	help
	  Rename files

config BR2_PACKAGE_UTIL_LINUX_RESET
	bool "reset"
	help
	  Reset the terminal

config BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS
	bool "schedutils"
	help
	  Scheduling utilities (chrt, ionice, taskset)

config BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT
	bool "switch_root"
	help
	  Switch to another filesystem as the root of the mount tree

config BR2_PACKAGE_UTIL_LINUX_UNSHARE
	bool "unshare"
	help
	  Run program with some namespaces unshared from parent

config BR2_PACKAGE_UTIL_LINUX_UTMPDUMP
	bool "utmpdump"
	help
	  Dump UTMP and WTMP files in raw format

config BR2_PACKAGE_UTIL_LINUX_UUIDD
	bool "uuidd"
	help
	  UUID generation daemon

config BR2_PACKAGE_UTIL_LINUX_WALL
	bool "wall"
	help
	  Send a message to everybody's terminal

config BR2_PACKAGE_WDCTL
	bool "wdctl"
	help
	  Shows hardware watchdog status

config BR2_PACKAGE_UTIL_LINUX_WRITE
	bool "write"
	help
	  Send a message to another user

endif

endif

comment "util-linux needs a toolchain w/ largefile, wchar"
	depends on !(BR2_LARGEFILE && BR2_USE_WCHAR)
