#!/usr/bin/make -f

#export DH_VERBOSE=1

export CONFIG_SHELL=/bin/bash

derives_from_ubuntu := $(shell (dpkg-vendor --derives-from ubuntu && echo yes) || echo no)
ifeq ($(derives_from_ubuntu),yes)
DO_TOKYOCABINET = no
export DH_OPTIONS := -Nbogofilter-tokyocabinet
else
DO_TOKYOCABINET = yes
endif

CFLAGS = -Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
endif

ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
TESTS_TARGET = check
else
TESTS_TARGET =
endif

configure: configure-stamp
configure-stamp:
	dh_testdir
	mkdir obj-db obj-sqlite
	cd obj-db && CFLAGS="$(CFLAGS)" ../configure --with-database=db \
		--prefix=/usr --mandir=\$${prefix}/share/man --sysconfdir=/etc \
		AWK=awk
	cd obj-sqlite && CFLAGS="$(CFLAGS)" ../configure --with-database=sqlite \
		--program-suffix=-sqlite --prefix=/usr --mandir=\$${prefix}/share/man \
		--sysconfdir=/etc AWK=awk && \
		sed -i 's/^INTEGRITY_TESTS.*/INTEGRITY_TESTS=t.lock1/' src/tests/Makefile
	if [ $(DO_TOKYOCABINET) = yes ]; then \
		mkdir obj-tokyocabinet; \
		cd obj-tokyocabinet && CFLAGS="$(CFLAGS)" ../configure \
			--with-database=tokyocabinet --program-suffix=-tokyocabinet \
			--prefix=/usr --mandir=\$${prefix}/share/man --sysconfdir=/etc AWK=awk; \
	fi
	touch configure-stamp

build: build-stamp
build-stamp: configure-stamp
	dh_testdir
	cd obj-db && $(MAKE)
	cd obj-sqlite && $(MAKE)
	if [ $(DO_TOKYOCABINET) = yes ]; then \
		cd obj-tokyocabinet && $(MAKE); \
	fi
	touch build-stamp

clean:
	dh_testdir
	rm -f build-stamp configure-stamp config.h.in debian/*debhelper.log \
		debian/*.substvars debian/bogofilter.substvars \
		debian/files debian/bogofilter-bdb.substvars \
		debian/bogofilter-sqlite.substvars
	rm -rf debian/bogofilter debian/bogofilter-bdb \
		debian/bogofilter-sqlite debian/bogofilter-common \
		obj-db obj-sqlite
	if [ $(DO_TOKYOCABINET) = yes ]; then \
		rm -rf debian/bogofilter-tokyocabinet obj-tokyocabinet \
			debian/bogofilter-tokyocabinet.substvars; \
	fi

check:
	dh_testdir
	cd obj-db && $(MAKE) check
	cd obj-sqlite && $(MAKE) check
	if [ $(DO_TOKYOCABINET) = yes ]; then \
		cd obj-tokyocabinet && $(MAKE) check; \
	fi

PACKAGES = bdb sqlite
ifeq ($(DO_TOKYOCABINET),yes)
	PACKAGES += tokyocabinet
endif
PROGRAMS = bf_compact bf_copy bf_tar bogofilter bogolexer bogotune \
		   bogoupgrade bogoutil

binary-arch: $(TESTS_TARGET)
	dh_testdir
	dh_testroot
	dh_installchangelogs
	dh_installdirs
	# rename binaries: util becomes util-pkg
	test -e obj-bdb || ln -s obj-db obj-bdb
	for p in ${PACKAGES}; do \
		for i in ${PROGRAMS}; do \
			(set -e; cp obj-$${p}/src/$${i} debian/bogofilter-$${p}/usr/bin/$${i}-$${p}) \
		done \
	done
	rm -f obj-bdb
	cp bogofilter.cf.example debian/bogofilter-common/etc/bogofilter.cf
	dh_installman
	dh_compress
	dh_installdocs
	# installdocs copies copyright/changelog in doc/bogofilter
	# but we really want it to be a symlink to doc/bogofilter-common
	rm -rf debian/bogofilter/usr/share/doc/bogofilter
	dh_link
	dh_installexamples
	dh_fixperms
	chmod 755 debian/bogofilter-common/usr/share/doc/bogofilter-common/examples/contrib/bogominitrain.pl
	mv debian/bogofilter-common/usr/share/doc/bogofilter-common/examples/contrib/*example \
		debian/bogofilter-common/usr/share/doc/bogofilter-common/examples
	dh_strip
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

# TODO: fix Package builds NAME_all.deb when binary-indep target is not called
build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
