comment "exiv2 needs a uClibc or glibc toolchain w/ C++, wchar, dynamic library, threads"
	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \
		|| !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \
		|| BR2_TOOLCHAIN_USES_MUSL

config BR2_PACKAGE_EXIV2
	bool "exiv2"
	depends on !BR2_STATIC_LIBS
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on !BR2_TOOLCHAIN_USES_MUSL # PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
	depends on BR2_USE_WCHAR
	help
	  Exiv2 is a C++ library and a command line utility to manage
	  image metadata. It provides fast and easy read and write
	  access to the Exif, IPTC and XMP metadata of images in
	  various formats.

	  Exiv2 is available under the GPLv2+ or under a commercial
	  license.

	  http://www.exiv2.org/

if BR2_PACKAGE_EXIV2

config BR2_PACKAGE_EXIV2_COMMERCIAL
	bool "Enable commercial"
	help
	  Build the commercial version for closed source project.

	  The Nikon lens name database and the NLS support is disabled
	  for copyright reasons.

	  A commercial license request is needed.
	  http://www.exiv2.org/download.html#license

config BR2_PACKAGE_EXIV2_PNG
	bool "PNG image support"
	select BR2_PACKAGE_ZLIB
	help
	  Build with PNG image support

config BR2_PACKAGE_EXIV2_XMP
	bool "XMP support"
	select BR2_PACKAGE_EXPAT
	help
	  Build with XMP support

config BR2_PACKAGE_EXIV2_LENSDATA
	bool "Nikon lens name database"
	depends on !BR2_PACKAGE_EXIV2_COMMERCIAL
	help
	  Integrate Nikon lens name database.

	  This database is integrated but comes from a thirdparty:
	  http://www.rottmerhusen.com/objektives/lensid/thirdparty.html.

endif
