config BR2_PACKAGE_OPENVMTOOLS
	bool "openvmtools"
	depends on BR2_i386 || BR2_x86_64
	depends on BR2_USE_MMU # libglib2
	depends on BR2_USE_WCHAR # libglib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
	depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC
	depends on BR2_ENABLE_LOCALE
	depends on !BR2_TOOLCHAIN_USES_UCLIBC
	select BR2_PACKAGE_LIBGLIB2
	select BR2_PACKAGE_LIBDNET
	help
	  Open Virtual Machine Tools for VMware guest OS

	  http://open-vm-tools.sourceforge.net/

	  ICU locales, Xerces, and X11 tools are currently not
	  supported.

	  NOTE: Support for vmblock-fuse will be enabled in
	  openvmtools if the libfuse package is selected.

if BR2_PACKAGE_OPENVMTOOLS

config BR2_PACKAGE_OPENVMTOOLS_PROCPS
	bool "procps support"
	depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
	select BR2_PACKAGE_PROCPS_NG
	help
	  Enable support for procps / meminfo

comment "procps support needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS"
	depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS

config BR2_PACKAGE_OPENVMTOOLS_PAM
	bool "PAM support"
	# linux-pam needs locale and wchar, but we already have this
	# dependency on the main symbol, above.
	depends on !BR2_STATIC_LIBS
	depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam
	select BR2_PACKAGE_LINUX_PAM
	help
	  Support for PAM in openvmtools

comment "PAM support needs a glibc toolchain w/ dynamic library"
	depends on BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL

endif

comment "openvmtools needs a glibc or musl toolchain w/ wchar, threads, RPC, locale"
	depends on BR2_i386 || BR2_x86_64
	depends on BR2_USE_MMU
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_TOOLCHAIN_HAS_NATIVE_RPC || !BR2_ENABLE_LOCALE || \
		BR2_TOOLCHAIN_USES_UCLIBC
