config BR2_PACKAGE_LVM2
	bool "lvm2 & device mapper"
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_USE_MMU # needs fork()
	depends on !BR2_STATIC_LIBS # It fails to build statically
	# http://lists.busybox.net/pipermail/buildroot/2016-August/170592.html
	depends on !BR2_TOOLCHAIN_USES_MUSL
	help
	  This is LVM2, the rewrite of The Linux Logical Volume Manager.
	  LVM supports enterprise level volume management of disk and disk
	  subsystems by grouping arbitrary disks into volume groups. The total
	  capacity of volume groups can be allocated to logical volumes, which
	  are accessed as regular block devices.

	  The Linux Kernel Device Mapper is the LVM
	  (Linux Logical Volume Management) Team's implementation of a
	  minimalistic kernel-space driver that handles volume management,
	  while keeping knowledge of the underlying device layout in
	  user-space. This makes it useful for not only LVM, but EVMS,
	  software raid, and other drivers that create "virtual" block devices.

if BR2_PACKAGE_LVM2

config BR2_PACKAGE_LVM2_STANDARD_INSTALL
	bool "standard install instead of only dmsetup"
	default y if !BR2_PACKAGE_LVM2_DMSETUP_ONLY # legacy 2013.11
	help
	  Install the standard suite of lvm2 programs. When this option is not
	  set, only dmsetup is installed.

config BR2_PACKAGE_LVM2_APP_LIBRARY
	bool "install application library"
	select BR2_PACKAGE_LVM2_STANDARD_INSTALL
	help
	  Install application library (liblvm2app).

endif

comment "lvm2 needs a glibc or uClibc toolchain w/ threads, dynamic library"
	depends on BR2_USE_MMU
	depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL
