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.

	  http://www.sourceware.org/lvm2/

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
