config BR2_PACKAGE_BIND
	bool "bind"
	depends on BR2_USE_MMU # fork()
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on !BR2_STATIC_LIBS
	help
	  BIND (Berkeley Internet Name Domain) is an
	  implementation of the Domain Name System (DNS) protocols
	  and provides an openly redistributable reference
	  implementation of the major components of the Domain
	  Name System, including:

	    * a Domain Name System server (named)
	    * a Domain Name System resolver library
	    * tools for verifying the proper operation of the DNS
	      server

	  The BIND DNS Server is used on the vast majority of name
	  serving machines on the Internet, providing a robust and
	  stable architecture on top of which an organization's naming
	  architecture can be built. The resolver library included in
	  the BIND distribution provides the standard APIs for
	  translation between domain names and Internet addresses and is
	  intended to be linked with applications requiring name
	  service.

	  http://www.isc.org/sw/bind/

if BR2_PACKAGE_BIND

config BR2_PACKAGE_BIND_SERVER
	bool "Install server components"
	default y
	help
	  Install server components (named, lwresd)

config BR2_PACKAGE_BIND_TOOLS
	bool "Install tools"
	help
	  Install tools (dig, host, nslookup, nsupdate)

endif

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