#!/usr/bin/make -f
## exports
export DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
## exports

## defines
PKG_CLIENT = zabbix-agent
PKG_SERVER_MYSQL = zabbix-server-mysql
PKG_SERVER_PGSQL = zabbix-server-pgsql
PKG_FRONTEND = zabbix-frontend-php
PKG_PROXY_MYSQL = zabbix-proxy-mysql
PKG_PROXY_PGSQL = zabbix-proxy-pgsql
TMP_CLIENT = $(CURDIR)/debian/$(PKG_CLIENT)
TMP_SERVER_MYSQL = $(CURDIR)/debian/$(PKG_SERVER_MYSQL)
TMP_SERVER_PGSQL = $(CURDIR)/debian/$(PKG_SERVER_PGSQL)
TMP_FRONTEND = $(CURDIR)/debian/$(PKG_FRONTEND)
TMP_PROXY_MYSQL = $(CURDIR)/debian/$(PKG_PROXY_MYSQL)
TMP_PROXY_PGSQL = $(CURDIR)/debian/$(PKG_PROXY_PGSQL)

INSTALL = install
INSTALL_FILE    = $(INSTALL) -p    -oroot -groot -m644
INSTALL_PROGRAM = $(INSTALL) -p    -oroot -groot -m755
INSTALL_SCRIPT  = $(INSTALL) -p    -oroot -groot -m755
INSTALL_DIR     = $(INSTALL) -p -d -oroot -groot -m755

CFLAGS = -Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
    CFLAGS += -O0
else
    CFLAGS += -O2
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
    INSTALL_PROGRAM += -s
endif

CONFFLAGS_SERVER  = --host=$(DEB_HOST_GNU_TYPE) \
                    --build=$(DEB_BUILD_GNU_TYPE) \
                    --prefix=/usr \
                    --mandir=\$${prefix}/share/man \
                    --infodir=\$${prefix}/share/info \
                    --enable-server \
                    --with-jabber \
                    --enable-ipv6 \
                    --with-net-snmp \
                    --with-openipmi

CONFFLAGS_AGENT  = --enable-agent --with-ldap --with-openipmi --enable-ipv6

CONFFLAGS_PROXY  = --enable-proxy --with-net-snmp --enable-ipv6 --with-openipmi

build:

prepare:
	if test -e /usr/share/misc/config.guess ; then \
		if ! test -e config.guess.orig; then \
			mv config.guess config.guess.orig ; \
			cp --remove-destination /usr/share/misc/config.guess config.guess ; \
		fi ; \
	fi
	if test -e /usr/share/misc/config.sub ; then \
		if ! test -e config.sub.orig; then \
			mv config.sub config.sub.orig ; \
			cp --remove-destination /usr/share/misc/config.sub config.sub ; \
		fi ; \
	fi
	# we removed -lcrypto stuff so lets re-run autotools:
	aclocal -I m4
	autoconf
	autoheader
	automake -a
	automake
	touch prepare-stamp

build-agent: config-agent
	dh_testdir
	$(MAKE)

config-agent: prepare config-agent-stamp
config-agent-stamp:
	@echo "Configuring agent"
	dh_testdir
	rm -f config-*-stamp
	LIBCURL_LDFLAGS="-lcurl" ./configure $(CONFFLAGS_AGENT)

build-server-mysql: config-server-mysql
	dh_testdir
	$(MAKE)

config-server-mysql: prepare config-server-mysql-stamp
config-server-mysql-stamp:
	@echo "Configuring server mysql" 
	dh_testdir
	rm -f config-*-stamp
	LIBCURL_LDFLAGS="-lcurl" ./configure $(CONFFLAGS_SERVER) --with-mysql
	touch config-server-mysql-stamp
	exit;

build-server-pgsql: config-server-pgsql
	dh_testdir
	$(MAKE)

config-server-pgsql: prepare config-server-pgsql-stamp
config-server-pgsql-stamp:
	@echo "Configuring server pgsql"
	dh_testdir
	rm -f config-*-stamp
	LIBCURL_LDFLAGS="-lcurl" ./configure $(CONFFLAGS_SERVER) --with-pgsql
	touch config-server-pgsql-stamp

config-proxy-mysql: prepare config-proxy-mysql-stamp
config-proxy-mysql-stamp:
	@echo "Configuring proxy mysql"
	dh_testdir
	rm -f config-*-stamp
	LIBCURL_LDFLAGS="-lcurl" ./configure $(CONFFLAGS_PROXY) --with-mysql
	touch config-proxy-mysql-stamp

build-proxy-mysql: config-proxy-mysql
	dh_testdir
	$(MAKE)

config-proxy-pgsql: prepare config-proxy-pgsql-stamp
config-proxy-pgsql-stamp:
	@echo "Configuring proxy pgsql"
	dh_testdir
	rm -f config-*-stamp
	LIBCURL_LDFLAGS="-lcurl" ./configure $(CONFFLAGS_PROXY) --with-pgsql
	touch config-proxy-pgsql-stamp

build-proxy-pgsql: config-proxy-pgsql
	dh_testdir
	$(MAKE)

clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp
	rm -f config-*-stamp
	rm -f install-*-stamp
	rm -f config.log
	[ ! -f Makefile ] || $(MAKE) distclean
	[ ! -f src/zabbix_agent/Makefile ] || $(MAKE) -C src/zabbix_agent/ clean
	[ ! -f src/zabbix_get/Makefile ] || $(MAKE) -C src/zabbix_get/ clean
	[ ! -f src/zabbix_sender/Makefile ] || $(MAKE) -C src/zabbix_sender/ clean
	[ ! -f src/zabbix_proxy/Makefile ] || $(MAKE) -C src/zabbix_proxy/ clean
	debconf-updatepo
	if test -e config.guess.orig ; then \
		mv config.guess.orig config.guess ; \
	fi ; 
	if test -e config.sub.orig ; then \
		mv config.sub.orig config.sub ; \
	fi ; \
	dh_clean

install: install-indep install-agent install-server-mysql install-server-pgsql install-proxy-mysql install-proxy-pgsql

install-indep:
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs -i
	$(INSTALL_DIR) $(TMP_FRONTEND)/etc/zabbix/
	$(INSTALL_DIR) $(TMP_FRONTEND)/usr/share/zabbix/
	$(INSTALL_DIR) $(TMP_FRONTEND)/usr/share/doc/zabbix-frontend-php/
	cp -a frontends/php/* $(TMP_FRONTEND)/usr/share/zabbix/
	# javscript libraries and fonts come from the respective Debian packages.
	# they get linked later with dh_link.
	rm -r $(TMP_FRONTEND)/usr/share/zabbix/fonts/DejaVuSans.ttf
	rm -r $(TMP_FRONTEND)/usr/share/zabbix/js/prototype.js
	rm -r $(TMP_FRONTEND)/usr/share/zabbix/js/scriptaculous*
	rm -f $(TMP_FRONTEND)/usr/share/zabbix/conf/COPYING
	# disable installation frontend for now.
	chmod 000 $(TMP_FRONTEND)/usr/share/zabbix/setup.php
	chmod a-x $(TMP_FRONTEND)/usr/share/zabbix/images/general/tick.png
	# link config file to /etc/zabbix/..
	dh_link -pzabbix-frontend-php etc/zabbix/dbconfig.php usr/share/zabbix/conf/zabbix.conf.php
	$(INSTALL_FILE) debian/templates/dbconfig.php.in $(TMP_FRONTEND)/usr/share/doc/zabbix-frontend-php/dbconfig.php
	$(INSTALL_FILE) debian/conf/apache.conf $(TMP_FRONTEND)/etc/zabbix/apache.conf
	dh_install -i

install-agent: install-agent-stamp
install-agent-stamp: build-agent
	echo ""
	echo $(PKG_CLIENT)
	$(INSTALL_DIR) $(TMP_CLIENT)
	$(INSTALL_DIR) $(TMP_CLIENT)/usr/bin
	$(INSTALL_DIR) $(TMP_CLIENT)/usr/sbin
	$(INSTALL_DIR) $(TMP_CLIENT)/etc/zabbix/
	$(INSTALL_DIR) $(TMP_CLIENT)/etc/logrotate.d/
	$(INSTALL_DIR) $(TMP_CLIENT)/usr/share/zabbix-agent/
	$(INSTALL_DIR) $(TMP_CLIENT)/DEBIAN
	$(INSTALL_PROGRAM) src/zabbix_agent/zabbix_agentd  $(TMP_CLIENT)/usr/sbin
	$(INSTALL_PROGRAM) src/zabbix_agent/zabbix_agent $(TMP_CLIENT)/usr/bin
	$(INSTALL_PROGRAM) src/zabbix_sender/zabbix_sender $(TMP_CLIENT)/usr/bin
	$(INSTALL_DIR) $(TMP_CLIENT)/var/log/zabbix-agent/
	chmod 750 $(TMP_CLIENT)/var/log/zabbix-agent/
	$(INSTALL_FILE) debian/templates/zabbix_agent.conf.in $(TMP_CLIENT)/usr/share/zabbix-agent/zabbix_agent.conf
	$(INSTALL_FILE) debian/templates/zabbix_agentd.conf.in $(TMP_CLIENT)/usr/share/zabbix-agent/zabbix_agentd.conf
	$(INSTALL_FILE) debian/zabbix-agent.logrotate $(TMP_CLIENT)/etc/logrotate.d/zabbix-agent

install-server-mysql: install-server-mysql-stamp
install-server-mysql-stamp: build-server-mysql
	echo ""
	echo $(PKG_SERVER_MYSQL)
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/usr/bin
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/usr/sbin
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/etc/zabbix/
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/etc/zabbix/alert.d/
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/etc/logrotate.d/
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/etc/init.d/
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/usr/share/zabbix-server/
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/var/log/zabbix-server/
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_MYSQL)/install/
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_MYSQL)/upgrade/mysql/
	$(INSTALL_DIR) $(TMP_SERVER_MYSQL)/usr/share/doc/zabbix-server-mysql/
	chmod 750 $(TMP_SERVER_MYSQL)/var/log/zabbix-server/
	$(INSTALL_PROGRAM) src/zabbix_server/zabbix_server $(TMP_SERVER_MYSQL)/usr/sbin
	$(INSTALL_PROGRAM) src/zabbix_get/zabbix_get $(TMP_SERVER_MYSQL)/usr/bin
	$(INSTALL_FILE) create/schema/mysql.sql $(TMP_SERVER_MYSQL)/usr/share/zabbix-server/
	$(INSTALL_FILE) create/data/data.sql $(TMP_SERVER_MYSQL)/usr/share/zabbix-server/
	$(INSTALL_FILE) debian/zabbix-server-mysql.logrotate $(TMP_SERVER_MYSQL)/etc/logrotate.d/zabbix-server-mysql
	$(INSTALL_FILE) debian/templates/zabbix_server.conf.in $(TMP_SERVER_MYSQL)/usr/share/doc/zabbix-server-mysql/zabbix_server.conf
	# install schema + data sql files for dbc_config
	$(INSTALL_FILE) create/schema/mysql.sql $(TMP_SERVER_MYSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_MYSQL)/install/mysql
	cat create/data/data.sql >> $(TMP_SERVER_MYSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_MYSQL)/install/mysql
	cat create/data/images_mysql.sql >> $(TMP_SERVER_MYSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_MYSQL)/install/mysql
	dh_installinit -p $(PKG_SERVER_MYSQL) --name zabbix-server
	dh_install -a
	touch install-server-mysql-stamp

install-server-pgsql: install-server-pgsql-stamp
install-server-pgsql-stamp: build-server-pgsql
	echo ""
	echo $(PKG_SERVER_PGSQL)
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/usr/bin
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/usr/sbin
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/etc/zabbix/
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/etc/zabbix/alert.d/
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/etc/logrotate.d/
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/etc/init.d/
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/usr/share/zabbix-server/
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/var/log/zabbix-server/
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_PGSQL)/install/
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_PGSQL)/upgrade/pgsql/
	$(INSTALL_DIR) $(TMP_SERVER_PGSQL)/usr/share/doc/zabbix-server-pgsql/
	chmod 750 $(TMP_SERVER_PGSQL)/var/log/zabbix-server/
	$(INSTALL_PROGRAM) src/zabbix_server/zabbix_server $(TMP_SERVER_PGSQL)/usr/sbin
	$(INSTALL_PROGRAM) src/zabbix_get/zabbix_get $(TMP_SERVER_PGSQL)/usr/bin
	$(INSTALL_FILE) create/schema/postgresql.sql $(TMP_SERVER_PGSQL)/usr/share/zabbix-server/
	$(INSTALL_FILE) create/data/data.sql $(TMP_SERVER_PGSQL)/usr/share/zabbix-server/
	$(INSTALL_FILE) debian/zabbix-server-mysql.logrotate $(TMP_SERVER_PGSQL)/etc/logrotate.d/zabbix-server-pgsql
	$(INSTALL_FILE) debian/templates/zabbix_server.conf.in $(TMP_SERVER_PGSQL)/usr/share/doc/zabbix-server-pgsql/zabbix_server.conf
	#install schema + data sql files for dbc_config
	$(INSTALL_FILE) create/schema/postgresql.sql $(TMP_SERVER_PGSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_PGSQL)/install/pgsql
	cat create/data/data.sql >> $(TMP_SERVER_PGSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_PGSQL)/install/pgsql
	cat create/data/images_pgsql.sql >> $(TMP_SERVER_PGSQL)/usr/share/dbconfig-common/data/$(PKG_SERVER_PGSQL)/install/pgsql
	dh_installinit -p $(PKG_SERVER_PGSQL) --name zabbix-server
	dh_install -a
	touch install-server-pgsql-stamp

install-proxy-mysql: install-proxy-mysql-stamp
install-proxy-mysql-stamp: build-proxy-mysql
	echo ""
	echo $(PKG_PROXY_MYSQL)
	$(INSTALL_DIR) $(TMP_PROXY_MYSQL)
	$(INSTALL_DIR) $(TMP_PROXY_MYSQL)/usr/sbin
	$(INSTALL_DIR) $(TMP_PROXY_MYSQL)/etc/zabbix/
	$(INSTALL_DIR) $(TMP_PROXY_MYSQL)/etc/logrotate.d/
	$(INSTALL_DIR) $(TMP_PROXY_MYSQL)/etc/init.d/
	$(INSTALL_DIR) $(TMP_PROXY_MYSQL)/usr/share/zabbix-proxy/
	$(INSTALL_DIR) $(TMP_PROXY_MYSQL)/usr/share/doc/zabbix-proxy-mysql/
	$(INSTALL_DIR) $(TMP_PROXY_MYSQL)/usr/share/dbconfig-common/data/$(PKG_PROXY_MYSQL)/install/
	$(INSTALL_DIR) $(TMP_PROXY_MYSQL)/var/log/zabbix-proxy/
	chmod 750 $(TMP_PROXY_MYSQL)/var/log/zabbix-proxy/
	$(INSTALL_PROGRAM) src/zabbix_proxy/zabbix_proxy $(TMP_PROXY_MYSQL)/usr/sbin
	#install schema + data sql files for dbc_config
	$(INSTALL_FILE) create/schema/mysql.sql $(TMP_PROXY_MYSQL)/usr/share/dbconfig-common/data/$(PKG_PROXY_MYSQL)/install/mysql
	cat create/data/data.sql >> $(TMP_PROXY_MYSQL)/usr/share/dbconfig-common/data/$(PKG_PROXY_MYSQL)/install/mysql
	cat create/data/images_mysql.sql >> $(TMP_PROXY_MYSQL)/usr/share/dbconfig-common/data/$(PKG_PROXY_MYSQL)/install/mysql
	$(INSTALL_FILE) debian/templates/zabbix_proxy.conf.in $(TMP_PROXY_MYSQL)/usr/share/zabbix-proxy/zabbix_proxy.conf
	$(INSTALL_FILE) debian/zabbix-proxy-mysql.logrotate $(TMP_PROXY_MYSQL)/etc/logrotate.d/zabbix-proxy-mysql
	$(INSTALL_FILE) create/schema/mysql.sql $(TMP_PROXY_MYSQL)/usr/share/zabbix-proxy/
	$(INSTALL_FILE) create/data/data.sql $(TMP_PROXY_MYSQL)/usr/share/zabbix-proxy/
	dh_installinit -p $(PKG_PROXY_MYSQL) --name zabbix-proxy
	dh_install -a
	touch install-proxy-mysql-stamp

install-proxy-pgsql: install-proxy-pgsql-stamp
install-proxy-pgsql-stamp: build-proxy-pgsql
	echo ""
	echo $(PKG_PROXY_PGSQL)
	$(INSTALL_DIR) $(TMP_PROXY_PGSQL)
	$(INSTALL_DIR) $(TMP_PROXY_PGSQL)/usr/sbin
	$(INSTALL_DIR) $(TMP_PROXY_PGSQL)/etc/zabbix/
	$(INSTALL_DIR) $(TMP_PROXY_PGSQL)/etc/logrotate.d/
	$(INSTALL_DIR) $(TMP_PROXY_PGSQL)/etc/init.d/
	$(INSTALL_DIR) $(TMP_PROXY_PGSQL)/usr/share/zabbix-proxy/
	$(INSTALL_DIR) $(TMP_PROXY_PGSQL)/usr/share/doc/zabbix-proxy-pgsql/
	$(INSTALL_DIR) $(TMP_PROXY_PGSQL)/usr/share/dbconfig-common/data/$(PKG_PROXY_PGSQL)/install/
	$(INSTALL_DIR) $(TMP_PROXY_PGSQL)/var/log/zabbix-proxy/
	chmod 750 $(TMP_PROXY_PGSQL)/var/log/zabbix-proxy/
	$(INSTALL_PROGRAM) src/zabbix_proxy/zabbix_proxy $(TMP_PROXY_PGSQL)/usr/sbin
	$(INSTALL_FILE) debian/templates/zabbix_proxy.conf.in $(TMP_PROXY_PGSQL)/usr/share/zabbix-proxy/zabbix_proxy.conf
	$(INSTALL_FILE) debian/zabbix-proxy-mysql.logrotate $(TMP_PROXY_PGSQL)/etc/logrotate.d/zabbix-proxy-pgsql
	$(INSTALL_FILE) create/schema/postgresql.sql $(TMP_PROXY_PGSQL)/usr/share/zabbix-proxy/
	$(INSTALL_FILE) create/data/data.sql $(TMP_PROXY_PGSQL)/usr/share/zabbix-proxy/
	# install schema + data sql files for dbc_config
	$(INSTALL_FILE) create/schema/postgresql.sql $(TMP_PROXY_PGSQL)/usr/share/dbconfig-common/data/$(PKG_PROXY_PGSQL)/install/pgsql
	cat create/data/data.sql >> $(TMP_PROXY_PGSQL)/usr/share/dbconfig-common/data/$(PKG_PROXY_PGSQL)/install/pgsql
	cat create/data/images_pgsql.sql >> $(TMP_PROXY_PGSQL)/usr/share/dbconfig-common/data/$(PKG_PROXY_PGSQL)/install/pgsql
	dh_installinit -p $(PKG_PROXY_PGSQL) --name zabbix-proxy
	dh_install -a
	touch install-proxy-pgsql-stamp

# Build architecture-independent files here.
binary-indep: install-indep
	dh_testdir
	dh_testroot
	dh_installchangelogs ChangeLog -i
	dh_installdocs -i
	dh_installdebconf -i
	dh_installinit -i
	dh_installman -i
	dh_installexamples -i
	dh_link -i
	dh_strip -i
	dh_compress -i
	dh_fixperms -i
	dh_makeshlibs -i
	dh_installdeb -i
	dh_shlibdeps -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: binary-arch-agent binary-arch-server-mysql binary-arch-server-pgsql binary-arch-proxy-mysql binary-arch-proxy-pgsql
	dh_testdir
	dh_testroot
	dh_installchangelogs ChangeLog -a
	dh_installdocs -a
	dh_installdebconf -a
	dh_installinit -a
	dh_installman -a
	dh_installexamples -a
	dh_link -a
	dh_strip -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary-arch-server-mysql: build-server-mysql install-server-mysql

binary-arch-server-pgsql: build-server-pgsql install-server-pgsql

binary-arch-agent: build-agent install-agent

binary-arch-proxy-mysql: build-proxy-mysql install-proxy-mysql

binary-arch-proxy-pgsql: build-proxy-pgsql install-proxy-pgsql

binary: binary-arch binary-indep

.PHONY: build build-server-mysql build-server-pgsql build-proxy-mysql build-proxy-pgsql config-server-mysql config-server-pgsql config-proxy-mysql config-proxy-pgsql clean install install-indep install-server-mysql install-server-pgsql install-proxy-mysql install-proxy-pgsql install-agent build-agent binary-indep binary-arch binary-arch-server-mysql binary-arch-server-pgsql binary-arch-agent binary-arch-proxy-mysql binary-arch-proxy-pgsql binary
