config BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
	bool

config BR2_PACKAGE_OPENSSL
	bool "openssl support"
	select BR2_PACKAGE_HAS_OPENSSL
	help
	  Select the desired ssl library provider.

if BR2_PACKAGE_OPENSSL

choice
	prompt "ssl library"
	help
	  Select OpenSSL or LibreSSL.

config BR2_PACKAGE_LIBOPENSSL
	bool "openssl"
	select BR2_PACKAGE_ZLIB
	help
	  A collaborative effort to develop a robust, commercial-grade,
	  fully featured, and Open Source toolkit implementing the
	  Secure Sockets Layer (SSL v2/v3) and Transport Security
	  (TLS v1) as well as a full-strength general-purpose
	  cryptography library.

	  http://www.openssl.org/

	  Note: Some helper scripts need perl.

source "package/libopenssl/Config.in"

config BR2_PACKAGE_LIBRESSL
	bool "libressl"
	depends on !BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
	# uClibc on noMMU doesn't provide __register_atfork()
	depends on !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU)
	help
	  LibreSSL is a version of the TLS/crypto stack forked from
	  OpenSSL in 2014, with goals of modernizing the codebase,
	  improving security, and applying best practice development
	  processes.

	  http://www.libressl.org/

source "package/libressl/Config.in"

# openssl from br2-external trees, if any
source "$BR2_BASE_DIR/.br2-external.in.openssl"

endchoice

config BR2_PACKAGE_HAS_OPENSSL
	bool

config BR2_PACKAGE_PROVIDES_OPENSSL
	string
	default "libopenssl"  if BR2_PACKAGE_LIBOPENSSL
	default "libressl"  if BR2_PACKAGE_LIBRESSL

endif

# ensure libopenssl is used for the host variant
config BR2_PACKAGE_PROVIDES_HOST_OPENSSL
	string
	default "host-libopenssl"
