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_STATIC_LIBS
	depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8
	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_STATIC_LIBS
	depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8

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.

config BR2_PACKAGE_MARIADB_SERVER_EMBEDDED
	bool "mariadb embedded server"
	depends on BR2_PACKAGE_MARIADB_SERVER
	help
	  Install the mariadb embedded 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
