comment "elfutils needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads"
	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \
		|| !BR2_TOOLCHAIN_HAS_THREADS \
		|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)

config BR2_PACKAGE_ELFUTILS
	bool "elfutils"
	depends on BR2_USE_WCHAR
	depends on !BR2_STATIC_LIBS
	depends on BR2_TOOLCHAIN_HAS_THREADS
	# Only glibc and uClibc implement the myriad of required GNUisms
	depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC
	select BR2_PACKAGE_ZLIB
	select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC
	select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC
	help
	  Libraries/utilities to handle ELF objects (drop in
	  replacement for libelf).

	  Note that this option only installs the libraries, and not
	  the programs.

	  https://sourceware.org/elfutils/

if BR2_PACKAGE_ELFUTILS

config BR2_PACKAGE_ELFUTILS_PROGS
	bool "Install programs"
	depends on BR2_TOOLCHAIN_USES_GLIBC
	help
	  This option tells elfutils to not only install the libelf
	  libraries, but also the elfutils programs.

endif
