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
	select BR2_PACKAGE_LIBAIO
	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
	# http://lists.busybox.net/pipermail/buildroot/2016-August/170592.html
	depends on !BR2_TOOLCHAIN_USES_MUSL
	help
	  Install the standard suite of lvm2 programs. When this option
	  is not set, only dmsetup is installed.

comment "lvm2 standard install needs a glibc or uClibc toolchain"
	depends on BR2_TOOLCHAIN_USES_MUSL

config BR2_PACKAGE_LVM2_APP_LIBRARY
	bool "install application library"
	# http://lists.busybox.net/pipermail/buildroot/2016-August/170592.html
	depends on !BR2_TOOLCHAIN_USES_MUSL
	select BR2_PACKAGE_LVM2_STANDARD_INSTALL
	help
	  Install application library (liblvm2app).

comment "lvm2 application library needs a glibc or uClibc toolchain"
	depends on BR2_TOOLCHAIN_USES_MUSL

config BR2_PACKAGE_LVM2_LVMETAD
	bool "install lvmetad"
	depends on !BR2_TOOLCHAIN_USES_MUSL # lvm2-app-library
	select BR2_PACKAGE_LVM2_APP_LIBRARY
	help
	  Install lvmetad

	  The lvmetad daemon caches LVM metadata so that LVM commands
	  can read metadata from the cache rather than scanning disks.
	  This can be an advantage because scanning disks is time
	  consuming and may interfere with the normal work of the
	  system.  lvmetad can be a disadvantage when disk event
	  notifications from the system are unreliable.

comment "lvmetad daemon needs a glibc or uClibc toolchain"
	depends on BR2_TOOLCHAIN_USES_MUSL

endif

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