config BR2_PACKAGE_LIBBLOCKDEV
	bool "libblockdev"
	depends on !BR2_STATIC_LIBS # kmod
	depends on BR2_USE_WCHAR # libglib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
	depends on BR2_USE_MMU # libglib2
	depends on BR2_PACKAGE_HAS_UDEV
	depends on BR2_ENABLE_LOCALE
	select BR2_PACKAGE_KMOD
	select BR2_PACKAGE_LIBGLIB2
	select BR2_PACKAGE_UTIL_LINUX
	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
	help
	  libblockdev is a C library supporting GObject introspection
	  for manipulation of block devices. It has a plugin-based
	  architecture where each technology (like LVM, Btrfs, MD RAID,
	  Swap,...) is implemented in a separate plugin, possibly with
	  multiple implementations.

	  https://github.com/storaged-project/libblockdev/

if BR2_PACKAGE_LIBBLOCKDEV

comment "plugins"

config BR2_PACKAGE_LIBBLOCKDEV_CRYPTO
	bool "crypto"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # cryptsetup -> json-c
	select BR2_PACKAGE_CRYPTSETUP
	select BR2_PACKAGE_KEYUTILS

config BR2_PACKAGE_LIBBLOCKDEV_FS
	bool "filesystem"
	depends on BR2_ENABLE_LOCALE # parted
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # parted
	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
	select BR2_PACKAGE_PARTED
	select BR2_PACKAGE_E2FSPROGS

comment "filesystem plugin needs a toolchain w/ locale, gcc >= 5"
	depends on !BR2_ENABLE_LOCALE || !BR2_TOOLCHAIN_GCC_AT_LEAST_5

config BR2_PACKAGE_LIBBLOCKDEV_LOOP
	bool "loop"

config BR2_PACKAGE_LIBBLOCKDEV_LVM2
	bool "lvm2"
	depends on BR2_ENABLE_LOCALE # parted
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # parted
	select BR2_PACKAGE_JSON_GLIB
	select BR2_PACKAGE_PARTED
	select BR2_PACKAGE_LIBYAML
	select BR2_PACKAGE_LVM2

comment "lvm2 support needs a toolchain w/ locale, gcc >= 5"
	depends on !BR2_ENABLE_LOCALE || !BR2_TOOLCHAIN_GCC_AT_LEAST_5

config BR2_PACKAGE_LIBBLOCKDEV_MDRAID
	bool "mdraid"
	select BR2_PACKAGE_LIBBYTESIZE

config BR2_PACKAGE_LIBBLOCKDEV_NVME
	bool "nvme"
	depends on BR2_USE_MMU # libnvme
	select BR2_PACKAGE_LIBNVME

config BR2_PACKAGE_LIBBLOCKDEV_PART
	bool "part"
	depends on BR2_ENABLE_LOCALE # parted
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # parted
	select BR2_PACKAGE_PARTED
	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK

comment "part plugin needs a toolchain w/ locale, gcc >= 5"
	depends on !BR2_ENABLE_LOCALE || !BR2_TOOLCHAIN_GCC_AT_LEAST_5

config BR2_PACKAGE_LIBBLOCKDEV_SMART
	bool "smart"
	depends on BR2_PACKAGE_HAS_UDEV # libatasmart
	select BR2_PACKAGE_LIBATASMART

comment "smart support needs udev /dev management"
	depends on !BR2_PACKAGE_HAS_UDEV

config BR2_PACKAGE_LIBBLOCKDEV_SMARTMONTOOLS
	bool "smartmontools"
	depends on BR2_INSTALL_LIBSTDCPP # smartmontools
	depends on BR2_USE_MMU # smartmontools
	select BR2_PACKAGE_JSON_GLIB
	select BR2_PACKAGE_SMARTMONTOOLS # runtime

comment "smartmontools support needs a toolchain w/ C++"
	depends on BR2_USE_MMU
	depends on !BR2_INSTALL_LIBSTDCPP

config BR2_PACKAGE_LIBBLOCKDEV_SWAP
	bool "swap"
	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID

endif

comment "libblockdev needs udev /dev management and a toolchain w/ wchar, threads, dynamic library, locale"
	depends on BR2_USE_MMU
	depends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \
		!BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_ENABLE_LOCALE
