config BR2_PACKAGE_MYSQL
	bool "mysql support"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_MMU # fork()
	depends on BR2_TOOLCHAIN_HAS_THREADS
	help
	  Select the desired mysql provider.

if BR2_PACKAGE_MYSQL

choice
	prompt "mysql variant"
	default BR2_PACKAGE_ORACLE_MYSQL
	help
	  Select either the oracle mysql server or the mariadb server

config BR2_PACKAGE_MARIADB
	bool "mariadb"
	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
	depends on !BR2_STATIC_LIBS
	select BR2_PACKAGE_LIBAIO
	select BR2_PACKAGE_LIBXML2
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_OPENSSL
	select BR2_PACKAGE_READLINE
	select BR2_PACKAGE_HAS_MYSQL
	help
	  MariaDB is one of the most popular database servers in the
	  world.  It's made by the original developers of MySQL and
	  guaranteed to stay open source.

	  http://www.mariadb.org/

comment "mariadb needs a toolchain w/ dynamic library"
	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
	depends on BR2_STATIC_LIBS

config BR2_PACKAGE_ORACLE_MYSQL
	bool "oracle mysql"
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_READLINE
	select BR2_PACKAGE_HAS_MYSQL
	help
	  The MySQL Open Source Database System

	  http://www.mysql.com/

endchoice

if BR2_PACKAGE_MARIADB

config BR2_PACKAGE_MARIADB_SERVER
	bool "mariadb server"
	help
	  Install the mariadb server on the target.

endif

if BR2_PACKAGE_ORACLE_MYSQL

config BR2_PACKAGE_ORACLE_MYSQL_SERVER
	bool "oracle mysql server"
	help
	  Install the MySQL server on the target.

endif

config BR2_PACKAGE_HAS_MYSQL
	bool

config BR2_PACKAGE_PROVIDES_MYSQL
	string
	default "mariadb"      if BR2_PACKAGE_MARIADB
	default "oracle-mysql" if BR2_PACKAGE_ORACLE_MYSQL

endif

comment "mysql needs a toolchain w/ C++, threads"
	depends on BR2_USE_MMU
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
