comment "lighttpd needs a toolchain w/ dynamic library"
	depends on BR2_USE_MMU
	depends on BR2_STATIC_LIBS

config BR2_PACKAGE_LIGHTTPD
	bool "lighttpd"
	depends on BR2_USE_MMU # fork()
	depends on !BR2_STATIC_LIBS
	help
	  lighttpd a secure, fast, compliant and very flexible
	  web-server which has been optimized for high-performance
	  environments. It has a very low memory footprint compared to
	  other webservers and takes care of cpu-load. Its advanced
	  feature-set (FastCGI, CGI, Auth, Output-Compression,
	  URL-Rewriting and many more) make lighttpd the perfect
	  webserver-software for every server that is suffering load
	  problems.

	  https://www.lighttpd.net/

if BR2_PACKAGE_LIGHTTPD

config BR2_PACKAGE_LIGHTTPD_OPENSSL
	bool "openssl support"
	select BR2_PACKAGE_OPENSSL
	help
	  Enable OpenSSL support for lighttpd.

config BR2_PACKAGE_LIGHTTPD_PAM
	bool "pam authentication support"
	default y
	depends on BR2_PACKAGE_LINUX_PAM
	help
	  Enable PAM authentication support for lighttpd.

config BR2_PACKAGE_LIGHTTPD_ZLIB
	bool "zlib support"
	select BR2_PACKAGE_ZLIB
	help
	  Enable zlib support for lighttpd mod_compress.

config BR2_PACKAGE_LIGHTTPD_BZIP2
	bool "bzip2 support"
	select BR2_PACKAGE_BZIP2
	help
	  Enable bzip2 support for lighttpd mod_compress.

config BR2_PACKAGE_LIGHTTPD_PCRE
	bool "pcre support"
	select BR2_PACKAGE_PCRE
	help
	  Enable PCRE support. Needed to support mod_rewrite

config BR2_PACKAGE_LIGHTTPD_WEBDAV
	bool "webdav support"
	select BR2_PACKAGE_LIBXML2
	select BR2_PACKAGE_SQLITE
	help
	  Enable webdav support. Needed to support mod_webdav

config BR2_PACKAGE_LIGHTTPD_LUA
	bool "lua support"
	depends on BR2_PACKAGE_LUA
	help
	  Enable Lua support. Needed to support mod_magnet

endif
