#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"). You may
# only use this file in accordance with the terms of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2011-2013, EveryCity Ltd. All rights reserved.
# Copyright 2016-2017, Wiselabs Software Ltda - http://www.wiselabs.com.br . All rights reserved.
# Copyright 2019, Michal Nowak
# Copyright 2022, erwinlem
# Copyright 2022, Daniel Bell
# Copyright 2023,2024 Friedrich Kink
#

BUILD_STYLE= cmake
USE_PARALLEL_BUILD = yes
include ../../../make-rules/shared-macros.mk

COMPONENT_NAME=		mariadb
COMPONENT_VERSION=	10.6.18
COMPONENT_REVISION=	1
COMPONENT_MAJOR_VERSION=$(subst $(space),.,$(wordlist 1,2,$(subst ., ,$(HUMAN_VERSION))))
COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH=	sha256:6898a1111f47130709e28ba2c7bd1a57e4bb57101f6e109e597d51e6d385cf18
COMPONENT_PROJECT_URL=	https://www.mariadb.org/
# For the source files look at https://dlm.mariadb.com/browse/mariadb_server/163
COMPONENT_ARCHIVE_URL=	https://dlm.mariadb.com/3795487/MariaDB/$(COMPONENT_SRC)/source/$(COMPONENT_ARCHIVE)
COMPONENT_SIG_URL=	https://dlm.mariadb.com/3795488/MariaDB/$(COMPONENT_SRC)/source/$(COMPONENT_ARCHIVE).asc
COMPONENT_LICENSE=	GPL-2.0-only
COMPONENT_LICENSE_FILE=	COPYING

include $(WS_MAKE_RULES)/common.mk

MARIADBV = $(subst .,,$(COMPONENT_MAJOR_VERSION))

AR=/usr/bin/gar
RANLIB=/usr/bin/granlib
PCRE_INCLUDE=/usr/include/pcre

CFLAGS += -fPIC
CXXFLAGS += -fPIC
CPPFLAGS += -I$(PCRE_INCLUDE) -I$(JAVA_HOME)/include/solaris
# Prevents "Text relocation remains referenced against symbol offset
# in file ../../sql/mysqld_dtrace_all.o" error
LDFLAGS += -Bsymbolic -mimpure-text -lrt -L$(OPENSSL_PREFIX)/lib/$(MACH64)

CONFIGURE_PREFIX=/usr/mariadb/$(COMPONENT_MAJOR_VERSION)
CONFDIR=/etc/mariadb/$(COMPONENT_MAJOR_VERSION)
DATA_PREFIX=/var/mariadb/$(COMPONENT_MAJOR_VERSION)

CMAKE_PLUGINDIR.64 =	lib/$(MACH64)/plugin

CMAKE_OPTIONS+= -DCMAKE_C_COMPILER=$(CC)
CMAKE_OPTIONS+= -DCMAKE_CXX_COMPILER=$(CXX)
CMAKE_OPTIONS+= -DCMAKE_AR=$(AR)
CMAKE_OPTIONS+= -DCMAKE_RANLIB=$(RANLIB)

CMAKE_OPTIONS+= -DINSTALL_LAYOUT=SVR4
CMAKE_OPTIONS+= -DCMAKE_INSTALL_PREFIX=$(CONFIGURE_PREFIX)
CMAKE_OPTIONS+= -DINSTALL_BINDIR=$(CMAKE_BINDIR.$(BITS))
CMAKE_OPTIONS+= -DINSTALL_INFODIR=bin
CMAKE_OPTIONS+= -DINSTALL_INCLUDEDIR=include
CMAKE_OPTIONS+= -DINSTALL_LIBDIR=$(CMAKE_LIBDIR.$(BITS))
CMAKE_OPTIONS+= -DINSTALL_PLUGINDIR=$(CMAKE_PLUGINDIR.$(BITS))
CMAKE_OPTIONS+= -DINSTALL_MANDIR=man
CMAKE_OPTIONS+= -DINSTALL_SHAREDIR=share
CMAKE_OPTIONS+= -DINSTALL_MYSQLSHAREDIR=share
CMAKE_OPTIONS+= -DINSTALL_SBINDIR=$(CMAKE_BINDIR.$(BITS))
CMAKE_OPTIONS+= -DINSTALL_SCRIPTDIR=$(CMAKE_BINDIR.$(BITS))
CMAKE_OPTIONS+= -DMYSQL_DATADIR=$(DATA_PREFIX)/data
CMAKE_OPTIONS+= -DSYSCONFDIR=$(CONFDIR)
CMAKE_OPTIONS+= -DINSTALL_SYSCONFDIR=$(CONFDIR)
CMAKE_OPTIONS+= -DENABLE_DTRACE=ON
CMAKE_OPTIONS+= -DWITH_READLINE=ON
CMAKE_OPTIONS+= -DWITH_EMBEDDED_SERVER=ON
CMAKE_OPTIONS+= -DWITHOUT_MROONGA_STORAGE_ENGINE=ON
CMAKE_OPTIONS+= -DHAVE_VISIBILITY_HIDDEN=0
CMAKE_OPTIONS+= -DMY_CONTEXT_USE_UCONTEXT=1
CMAKE_OPTIONS+= -DWITH_EXTRA_CHARSETS=complex
CMAKE_OPTIONS+= -DWITH_ZLIB=system
CMAKE_OPTIONS+= -DWITH_PCRE=system
CMAKE_OPTIONS+= -DWITH_SSL=system
CMAKE_OPTIONS+= -DINSTALL_SUPPORTFILESDIR=share/mysql
CMAKE_OPTIONS+= -DCMAKE_BUILD_TYPE=Release
CMAKE_OPTIONS+= -DCMAKE_REQUIRED_INCLUDES="$(PCRE_INCLUDE) $(OPENSSL_INCDIR)"
CMAKE_OPTIONS+= -DWITH_INNOBASE_STORAGE_ENGINE=1
CMAKE_OPTIONS+= -DWITH_INNODB_MEMCACHED=ON
CMAKE_OPTIONS+= -DWITH_COMMENT="OpenIndiana MariaDB"
CMAKE_OPTIONS+= -DWITH_XTRADB_STORAGE_ENGINE=1
CMAKE_OPTIONS+= -DWITH_CSV_STORAGE_ENGINE=1
CMAKE_OPTIONS+= -DCOMPILATION_COMMENT="OpenIndiana package"
CMAKE_OPTIONS+= -DJAVA_INCLUDE_PATH=$(JAVA_HOME)/include
CMAKE_OPTIONS+= -DJAVA_AWT_LIBRARY=/usr/java/jre/lib/$(MACH64)/libjawt.so
CMAKE_OPTIONS+= -DJAVA_JVM_LIBRARY=/usr/java/jre/lib/$(MACH64)/server/libjvm.so
CMAKE_OPTIONS+= -DMARIADB_UNIX_ADDR=/tmp/mariadb$(MARIADBV).sock
CMAKE_OPTIONS+= -DMYSQL_UNIX_ADDR=/tmp/mariadb$(MARIADBV).sock
CMAKE_OPTIONS+= -DPLUGIN_ROCKSDB=NO

CMAKE_ENV += CPPFLAGS="$(CPPFLAGS) -I$(OPENSSL_INCDIR)"

# Testing
COMPONENT_TEST_DIR = $(@D)/mysql-test
COMPONENT_TEST_CMD = ./mtr
COMPONENT_TEST_ARGS += --parallel=$(PARALLEL_JOBS)
COMPONENT_TEST_ARGS += --mem
COMPONENT_TEST_ARGS += --force
COMPONENT_TEST_ARGS += --retry=0
COMPONENT_TEST_ARGS += --force-restart
COMPONENT_TEST_ARGS += --max-test-fail=0
COMPONENT_TEST_ARGS += --skip-test-list=$(COMPONENT_DIR)/files/disabled-tests

MARIADB_TEST_TRANSFORMS += -n
MARIADB_TEST_TRANSFORMS += -e 's/  */ /g'			# Collapse spaces
MARIADB_TEST_TRANSFORMS += -e 's/ \] [0-9]*$$/ \]/'		# Timing
MARIADB_TEST_TRANSFORMS += -e 's/ w[0-9]\{1,\} / /'		# Worker number
MARIADB_TEST_TRANSFORMS += -e '/\[ [^ ]\{1,\} \]/p'		# Print test results only

# Mangle test results and sort them
COMPONENT_TEST_TRANSFORMS += \
	"| ( \
		$(GSED) -u -n -e '/^-\{32\}/q' ; \
		$(GSED) -u $(MARIADB_TEST_TRANSFORMS) -e '/^-\{32\}/Q' | $(SORT) ; \
		print "--------------------------------" ; \
		$(CAT) \
	) | $(COMPONENT_TEST_TRANSFORMER) -e '/^Spent /d'"
# Skipped tests that require debug build could vary
COMPONENT_TEST_TRANSFORMS += "-e '/\[ skipped \] Requires debug build$$/d'"
COMPONENT_TEST_TRANSFORMS += "-e '/\[ skipped \] Extra checkpoint 1 after/d'"
# Because of above the final stat of skipped tests could vary as well
COMPONENT_TEST_TRANSFORMS += "-e '/^[0-9]\{1,\} tests were skipped/d'"

# Manually added test dependencies
TEST_REQUIRED_PACKAGES += library/perl-5/dbd-mariadb
TEST_REQUIRED_PACKAGES += library/perl-5/dbi

# Auto-generated dependencies
REQUIRED_PACKAGES += $(GCC_RUNTIME_PKG)
REQUIRED_PACKAGES += $(GXX_RUNTIME_PKG)
REQUIRED_PACKAGES += $(OPENSSL_PKG)
REQUIRED_PACKAGES += SUNWcs
REQUIRED_PACKAGES += compress/bzip2
REQUIRED_PACKAGES += compress/xz
REQUIRED_PACKAGES += compress/zstd
REQUIRED_PACKAGES += library/libxml2
REQUIRED_PACKAGES += library/lz4
REQUIRED_PACKAGES += library/lzo
REQUIRED_PACKAGES += library/pcre2
REQUIRED_PACKAGES += library/security/cracklib
REQUIRED_PACKAGES += library/unixodbc
REQUIRED_PACKAGES += library/zlib
REQUIRED_PACKAGES += runtime/perl
REQUIRED_PACKAGES += service/security/kerberos-5
REQUIRED_PACKAGES += shell/ksh93
REQUIRED_PACKAGES += system/library
REQUIRED_PACKAGES += system/library/math
REQUIRED_PACKAGES += system/library/security/gss
REQUIRED_PACKAGES += web/curl