#!/usr/bin/make -f

%:
	dh $@

export DH_VERBOSE=1
export CFLAGS=
export CXXFLAGS=

PACKAGE=greatsql
PS_VERSION_EXTRA = 27
REVISION = aa66a385910
COMPILATION_COMMENT_RELEASE = "GreatSQL (GPL), Release $(PS_VERSION_EXTRA), Revision $(REVISION)"
COMPILATION_COMMENT_DEBUG = "GreatSQL - Debug (GPL), Release $(PS_VERSION_EXTRA), Revision $(REVISION)"
TOKUDB_BACKUP_VERSION = "@@TOKUDB_BACKUP_VERSION@@"

TMP=$(CURDIR)/debian/tmp/
TMPD=$(CURDIR)/debian/tmp-debug/
prefix=/usr

ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
ARCH_OS = $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS)
NCPU = $(shell grep -c processor /proc/cpuinfo)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
NO_NUMA_ARCHS := riscv64 rv64g
ifneq (,$(filter $(ARCH),$(NO_NUMA_ARCHS)))
	EXTRA_FLAGS := -DWITH_NUMA=OFF
else
	EXTRA_FLAGS := -DWITH_NUMA=ON
endif

DEB_SOURCE_PACKAGE ?= $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':'))
DEB_VERSION ?= $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
DEB_NOEPOCH_VERSION ?= $(shell echo $(DEB_VERSION) | cut -d: -f2-)
DEB_UPSTREAM_VERSION ?= $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//')
DEB_UPSTREAM_VERSION_MAJOR_MINOR := $(shell echo $(DEB_UPSTREAM_VERSION) | sed -r -n 's/^([0-9]+\.[0-9]+).*/\1/p')
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

TOKUDB_OPTS_DEFAULT ?= -DWITH_VALGRIND=OFF -DUSE_VALGRIND=OFF -DDEBUG_EXTNAME=OFF -DBUILD_TESTING=OFF -DUSE_GTAGS=OFF -DUSE_CTAGS=OFF -DUSE_ETAGS=OFF -DUSE_CSCOPE=OFF -DTOKUDB_BACKUP_PLUGIN_VERSION=$(TOKUDB_BACKUP_VERSION)
TOKUDB_OPTS_RELEASE ?= $(TOKUDB_OPTS_DEFAULT) -DTOKU_DEBUG_PARANOID=OFF
TOKUDB_OPTS_DEBUG ?= $(TOKUDB_OPTS_DEFAULT) -DTOKU_DEBUG_PARANOID=ON

EXPORTED_SOURCE_TARBALL = debian/greatsql-source.tar.gz

DISTRIBUTION = $(shell lsb_release -i -s)
DISTRELEASE = $(shell lsb_release -c -s)

MYSQL_SRC = $(shell pwd)

SKIP_DEBUG_BINARY=1
builddir = builddir
#builddebug = debug

override_dh_auto_clean:
	@echo "RULES.$@"
	dh_testdir
	dh_testroot
	[ ! -d mysql-test/var ] || rm -rf mysql-test/var
	rm -rf $(builddir)
	#debconf-updatepo

override_dh_prep:

override_dh_auto_configure:
	@echo "RULES.$@"

	( test -d $(builddir) || mkdir $(builddir) ) && cd $(builddir) && \
	    cmake -DBUILD_CONFIG=mysql_release \
		-DINSTALL_LAYOUT=DEB \
		-DWITH_DEBUG=OFF \
		-DCMAKE_BUILD_TYPE=RelWithDebInfo \
		-DWITH_BOOST=../boost \
		-DCMAKE_VERBOSE_MAKEFILE=ON \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DINSTALL_DOCDIR=share/mysql/docs \
		-DINSTALL_DOCREADMEDIR=share/mysql \
		-DINSTALL_INCLUDEDIR=include/mysql \
		-DINSTALL_INFODIR=share/mysql/docs \
		-DINSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
		-DINSTALL_MANDIR=share/man \
		-DINSTALL_MYSQLSHAREDIR=share/mysql \
		-DINSTALL_MYSQLTESTDIR=lib/mysql-test \
		-DINSTALL_PLUGINDIR=lib/mysql/plugin \
		-DINSTALL_SBINDIR=sbin \
		-DINSTALL_SCRIPTDIR=bin \
		-DINSTALL_SUPPORTFILESDIR=share/mysql \
		-DSYSCONFDIR=/etc/mysql \
		-DWITH_EMBEDDED_SERVER=ON \
		-DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
		-DCOMPILATION_COMMENT=$(COMPILATION_COMMENT_RELEASE) \
		-DSYSTEM_TYPE="debian-linux-gnu" \
		-DCMAKE_SKIP_INSTALL_RPATH=YES \
		-DWITH_INNODB_MEMCACHED=ON \
		-DWITH_AUTHENTICATION_LDAP=OFF \
		-DWITH_PAM=ON \
		-DWITH_TOKUDB=OFF \
		-DWITH_TOKUDB_BACKUP=OFF \
		-DWITH_NDB=OFF \
		-DWITH_NDBCLUSTER=OFF \
		-DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF \
		-DWITH_AUTHENTICATION_KERBEROS=ON \
		-DWITH_UNIT_TESTS=OFF \
		-DWITH_ROCKSDB=OFF \
		-DROCKSDB_DISABLE_AVX2=1 \
		-DROCKSDB_DISABLE_MARCH_NATIVE=1 \
		-DGROUP_REPLICATION_WITH_ROCKSDB=OFF \
		-DALLOW_NO_SSE42=ON \
		-DMYSQL_MAINTAINER_MODE=OFF \
		-DFORCE_INSOURCE_BUILD=1 \
		-DWITH_SYSTEM_LIBS=ON \
		-DWITH_KEYRING_VAULT=ON \
		-DWITHOUT_RAPID_SECONDARY_STORAGE_ENGINE=1 \
		-DREPRODUCIBLE_BUILD=OFF \
		-DWITH_ARCHIVE_STORAGE_ENGINE=ON \
		-DWITH_BLACKHOLE_STORAGE_ENGINE=ON \
		-DWITH_FEDERATED_STORAGE_ENGINE=ON \
		-DWITH_EXTRA_CHARSETS=all \
		-DWITH_ROUTER=OFF \
		-DWITH_SYSTEMD=ON \
		$(EXTRA_FLAGS) \
		-DWITH_LDAP=system \
		-DWITH_MECAB=system \
		-DWITH_PROTOBUF=system \
		-DWITH_READLINE=system \
		-DWITH_SSL=system \
		-DWITH_FIDO=bundled \
		-DWITH_ICU=bundled \
		-DWITH_LIBEVENT=bundled \
		-DWITH_LZ4=bundled \
		-DWITH_RAPIDJSON=bundled \
		-DWITH_ZLIB=bundled \
		-DWITH_ZSTD=bundled \
		..

	touch $@

override_dh_auto_build:
	@echo "RULES.$@"
	
	[ -f $(EXPORTED_SOURCE_TARBALL) ] || tar -zcf $(EXPORTED_SOURCE_TARBALL) \
	--exclude=debian . \
	--transform="s,^\./,greatsql/,"

#ifeq ($(SKIP_DEBUG_BINARY),)
#	cd $(builddebug) && $(MAKE) -j$(NCPU)
#endif

	( test -d $(builddir) || mkdir $(builddir) ) && cd $(builddir) && \
	    cmake -DBUILD_CONFIG=mysql_release \
		-DINSTALL_LAYOUT=DEB \
		-DWITH_DEBUG=OFF \
		-DCMAKE_BUILD_TYPE=RelWithDebInfo \
		-DWITH_BOOST=../boost \
		-DCMAKE_VERBOSE_MAKEFILE=ON \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DINSTALL_DOCDIR=share/mysql/docs \
		-DINSTALL_DOCREADMEDIR=share/mysql \
		-DINSTALL_INCLUDEDIR=include/mysql \
		-DINSTALL_INFODIR=share/mysql/docs \
		-DINSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
		-DINSTALL_MANDIR=share/man \
		-DINSTALL_MYSQLSHAREDIR=share/mysql \
		-DINSTALL_MYSQLTESTDIR=lib/mysql-test \
		-DINSTALL_PLUGINDIR=lib/mysql/plugin \
		-DINSTALL_SBINDIR=sbin \
		-DINSTALL_SCRIPTDIR=bin \
		-DINSTALL_SUPPORTFILESDIR=share/mysql \
		-DSYSCONFDIR=/etc/mysql \
		-DWITH_EMBEDDED_SERVER=ON \
		-DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
		-DCOMPILATION_COMMENT=$(COMPILATION_COMMENT_RELEASE) \
		-DSYSTEM_TYPE="debian-linux-gnu" \
		-DCMAKE_SKIP_INSTALL_RPATH=YES \
		-DWITH_INNODB_MEMCACHED=ON \
		-DWITH_AUTHENTICATION_LDAP=OFF \
		-DWITH_PAM=ON \
		-DWITH_TOKUDB=OFF \
		-DWITH_TOKUDB_BACKUP=OFF \
		-DWITH_NDB=OFF \
		-DWITH_NDBCLUSTER=OFF \
		-DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF \
		-DWITH_AUTHENTICATION_KERBEROS=ON \
		-DWITH_UNIT_TESTS=OFF \
		-DWITH_ROCKSDB=OFF \
		-DROCKSDB_DISABLE_AVX2=1 \
		-DROCKSDB_DISABLE_MARCH_NATIVE=1 \
		-DGROUP_REPLICATION_WITH_ROCKSDB=OFF \
		-DALLOW_NO_SSE42=ON \
		-DMYSQL_MAINTAINER_MODE=OFF \
		-DFORCE_INSOURCE_BUILD=1 \
		-DWITH_SYSTEM_LIBS=ON \
		-DWITH_KEYRING_VAULT=ON \
		-DWITHOUT_RAPID_SECONDARY_STORAGE_ENGINE=1 \
		-DREPRODUCIBLE_BUILD=OFF \
		-DWITH_ARCHIVE_STORAGE_ENGINE=ON \
		-DWITH_BLACKHOLE_STORAGE_ENGINE=ON \
		-DWITH_FEDERATED_STORAGE_ENGINE=ON \
		-DWITH_EXTRA_CHARSETS=all \
		-DWITH_ROUTER=OFF \
		-DWITH_SYSTEMD=ON \
		$(EXTRA_FLAGS) \
		-DWITH_LDAP=system \
		-DWITH_MECAB=system \
		-DWITH_PROTOBUF=system \
		-DWITH_READLINE=system \
		-DWITH_SSL=system \
		-DWITH_FIDO=bundled \
		-DWITH_ICU=bundled \
		-DWITH_LIBEVENT=bundled \
		-DWITH_LZ4=bundled \
		-DWITH_RAPIDJSON=bundled \
		-DWITH_ZLIB=bundled \
		-DWITH_ZSTD=bundled \
		.. && \
	 $(MAKE) -j$(NCPU)

	touch $@

override_dh_auto_install:
	@echo "RULES.$@"

	# complete install first
	#(cd $(builddebug) && $(MAKE) install DESTDIR=$(TMPD)/)
	( test -d $(builddir) || mkdir $(builddir) ) && \
	(cd $(builddir) && $(MAKE) install DESTDIR=$(TMP)/)

	# add Percona Server configuration file my.cnf to mysql-common package
	install -g root -o root -m 0644 -D debian/extra/my.cnf $(TMP)/etc/my.cnf

	# add MySQL Server debug binary and library to package
	#install -g root -o root -m 0755 debian/extra/server-binary $(TMP)/usr/sbin/mysqld-debug

	# add systemd script
	install -m 0755 debian/extra/mysql-systemd-start $(TMP)/usr/share/mysql/

	# install default file for init script timeout params
	install -d $(TMP)/etc/default
	install -m 0644 debian/extra/default-mysql $(TMP)/etc/default/mysql
        # Add helper functions for maintainer scripts
	install -m 0644 debian/extra/mysql-helpers debian/tmp/usr/share/mysql/

	# install source tarball for source package
	install -D -m 0644 $(EXPORTED_SOURCE_TARBALL) $(TMP)/usr/src/greatsql/`basename $(EXPORTED_SOURCE_TARBALL)`

	#install libprotobuf
	#install -m 0755 $(builddir)/library_output_directory/libprotobuf-lite.so.3.19.4 debian/tmp/usr/lib/mysql
	#install -m 0755 $(builddir)/library_output_directory/libprotobuf.so.3.19.4 debian/tmp/usr/lib/mysql

        #ldconfig
	install -d -m 0755 $(builddir)/etc/ld.so.conf.d
	echo "/usr/lib/mysql" > $(builddir)/etc/ld.so.conf.d/mysql-$(ARCH).conf
	echo "/usr/lib/mysql/private" >> $(builddir)/etc/ld.so.conf.d/mysql-$(ARCH).conf

override_dh_installinit:
	@echo "RULES.$@"
	if [ "$(DISTRELEASE)" != "precise" -a "$(DISTRELEASE)" != "trusty" -a "$(DISTRELEASE)" != "wheezy" ]; then dh_systemd_enable --name=mysql; dh_systemd_enable --no-enable --name=mysql@; fi
	dh_installinit --name=mysql -- defaults 19 21
	if [ "$(DISTRELEASE)" != "precise" -a "$(DISTRELEASE)" != "trusty" -a "$(DISTRELEASE)" != "wheezy" ]; then dh_systemd_start --restart-after-upgrade; fi
	touch $@

override_dh_installdocs:

override_dh_shlibdeps:
