################################################################################
#
# mariadb
#
################################################################################

MARIADB_VERSION = 10.3.28
MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERSION)/source
MARIADB_LICENSE = GPL-2.0 (server), GPL-2.0 with FLOSS exception (GPL client library), LGPL-2.0 (LGPL client library)
# Tarball no longer contains LGPL license text
# https://jira.mariadb.org/browse/MDEV-12297
MARIADB_LICENSE_FILES = README.md COPYING
MARIADB_CPE_ID_VENDOR = mariadb
MARIADB_INSTALL_STAGING = YES
MARIADB_PROVIDES = mysql

MARIADB_DEPENDENCIES = \
	host-mariadb \
	ncurses \
	openssl \
	zlib \
	libaio \
	libxml2

# use bundled GPL-2.0+ licensed readline as package/readline is GPL-3.0+
MARIADB_CONF_OPTS += -DWITH_READLINE=ON

# We won't need unit tests
MARIADB_CONF_OPTS += -DWITH_UNIT_TESTS=0

# Mroonga needs libstemmer. Some work still needs to be done before it can be
# included in buildroot. Disable it for now.
MARIADB_CONF_OPTS += -DWITHOUT_MROONGA=1

# This value is determined automatically during straight compile by compiling
# and running a test code. You cannot do that during cross-compile. However the
# stack grows downward in most if not all modern systems. The only exception I
# am aware of is PA-RISC which is not supported by buildroot. Therefore it makes
# sense to hardcode the value. If an arch is added the stack of which grows up
# one should expect unpredictable behavior at run time.
MARIADB_CONF_OPTS += -DSTACK_DIRECTION=-1

# Jemalloc was added for TokuDB. Since its configure script seems somewhat broken
# when it comes to cross-compilation we shall disable it and also disable TokuDB.
MARIADB_CONF_OPTS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1

# RocksDB fails to build in some configurations with the following build error:
# ./output/build/mariadb-10.2.17/storage/rocksdb/rocksdb/utilities/backupable/backupable_db.cc:327:38:
# error: field 'result' has incomplete type 'std::promise<rocksdb::BackupEngineImpl::CopyOrCreateResult>'
#     std::promise<CopyOrCreateResult> result;
#
# To work around the issue, we disable RocksDB
MARIADB_CONF_OPTS += -DWITHOUT_ROCKSDB=1

# Make it explicit that we are cross-compiling
MARIADB_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1

# Explicitly disable dtrace to avoid detection of a host version
MARIADB_CONF_OPTS += -DENABLE_DTRACE=0

ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)
ifeq ($(BR2_PACKAGE_MARIADB_SERVER_EMBEDDED),y)
MARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=ON
else
MARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=OFF
endif
else
MARIADB_CONF_OPTS += -DWITHOUT_SERVER=ON
endif

MARIADB_CXXFLAGS = $(TARGET_CXXFLAGS)

ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
MARIADB_CXXFLAGS += -latomic
endif

MARIADB_CONF_OPTS += \
	-DCMAKE_CXX_FLAGS="$(MARIADB_CXXFLAGS)" \
	-DINSTALL_DOCDIR=share/doc/mariadb-$(MARIADB_VERSION) \
	-DINSTALL_DOCREADMEDIR=share/doc/mariadb-$(MARIADB_VERSION) \
	-DINSTALL_MANDIR=share/man \
	-DINSTALL_MYSQLSHAREDIR=share/mysql \
	-DINSTALL_MYSQLTESTDIR=share/mysql/test \
	-DINSTALL_PLUGINDIR=lib/mysql/plugin \
	-DINSTALL_SBINDIR=sbin \
	-DINSTALL_SCRIPTDIR=bin \
	-DINSTALL_SQLBENCHDIR=share/mysql/bench \
	-DINSTALL_SUPPORTFILESDIR=share/mysql \
	-DMYSQL_DATADIR=/var/lib/mysql \
	-DMYSQL_UNIX_ADDR=$(MYSQL_SOCKET)

HOST_MARIADB_DEPENDENCIES = host-openssl
HOST_MARIADB_CONF_OPTS += -DWITH_SSL=system

# Some helpers must be compiled for host in order to crosscompile mariadb for
# the target. They are then included by import_executables.cmake which is
# generated during the build of the host helpers. It is not necessary to build
# the whole host package, only the "import_executables" target.
# -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake
# must then be passed to cmake during target build.
# see also https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/
HOST_MARIADB_MAKE_OPTS = import_executables

MARIADB_CONF_OPTS += \
	-DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake

# Don't install host-mariadb. We just need to build import_executable
# Therefore only run 'true' and do nothing, not even the default action.
HOST_MARIADB_INSTALL_CMDS = true

ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)
define MARIADB_USERS
	mysql -1 mysql -1 * /var/lib/mysql - - MySQL Server
endef

define MARIADB_INSTALL_INIT_SYSV
	$(INSTALL) -D -m 0755 package/mariadb/S97mysqld \
		$(TARGET_DIR)/etc/init.d/S97mysqld
endef

define MARIADB_INSTALL_INIT_SYSTEMD
	$(INSTALL) -D -m 644 package/mariadb/mysqld.service \
		$(TARGET_DIR)/usr/lib/systemd/system/mysqld.service
endef
endif

# We don't need mysql_config or mariadb_config on the target as it's
# only useful in staging. We also don't need the test suite on the target.
define MARIADB_POST_INSTALL
	mkdir -p $(TARGET_DIR)/var/lib/mysql
	$(RM) $(TARGET_DIR)/usr/bin/mysql_config
	$(RM) $(TARGET_DIR)/usr/bin/mariadb_config
	$(RM) -r $(TARGET_DIR)/usr/share/mysql/test
endef

MARIADB_POST_INSTALL_TARGET_HOOKS += MARIADB_POST_INSTALL

$(eval $(cmake-package))
$(eval $(host-cmake-package))
