#!/usr/bin/make -f
# debian/rules for CMU Cyrus IMAP version 2.1
# GNU copyright 1997 by Joey Hess.
# Copyright (c) 2001 by Henrique de Moraes Holschuh
# Published under the GNU GPL license
# Based on previous work by Michael-John Turner <mj@debian.org>,
#			    David Parker <david@neongoat.com>
#
# $Id: rules,v 1.2 2002/03/05 00:09:17 hmh Exp $

# Uncomment this to turn on verbose mode. 
#export DH_VERBOSE=1

# This is the debhelper compatability version to use.
export DH_COMPAT=3

export MAINPKG=cyrus21-common
export PACKAGES=cyrus21-common cyrus21-admin cyrus21-dev cyrus21-imapd cyrus21-pop3d
export TMP := $(CURDIR)/debian/tmp
export PKGDIR := $(CURDIR)/debian/$(MAINPKG)

export DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

# Enable debug package build if DEB_BUILD_OPTIONS contains debug
DEBUGFLAGS =
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
	DEBUGFLAGS += -g -O0
else
	DEBUGFLAGS += -O2
endif

# Autoconf 2.13 architecture support
CONFFLAGS =
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
  CONFFLAGS += $(DEB_HOST_GNU_TYPE)
else
  CONFFLAGS += --host $(DEB_BUILD_GNU_TYPE) --build $(DEB_HOST_GNU_TYPE)
endif


# The clean target will remove any and all cruft (as defined by 
# configure ; make distclean ; cd intl; make distclean ). 
# This is done to make sure the build daemon's source tree is the 
# same as the one I am using to produce the i386 debs. 
clean:	configure autotools
	dh_testdir
	dh_testroot
	-xargs -t -r chmod +x < debian/executable.files
	-rm -f build-stamp configure-stamp
	-$(MAKE) -i distclean
	-rm -f config.h config.cache config.status config.log stamp-config
	-rm -f netnews/Makefile perl/imap/Makefile.old perl/sieve/acap/Makefile.old perl/sieve/managesieve/Makefile.old snmp/Makefile Makefile et/Makefile
	-rm -f doc/pod2htmd.x~~ doc/pod2htmi.x~~ imap/imap_err.[ch] imap/pushstats.[ch] imap/lmtpstats.[ch] master/makedepend.log 
	-rm -f sieve/addr.[ch] sieve/addr-lex.[ch] sieve/sieve.[ch] sieve/sieve-lex.c sieve/sieve_err.[ch]
	-rm -f man/sieveshell.1
	-xargs -t -r rm -f < debian/deletable.files
	dh_clean

configure:
	./autogen.sh

# The autotools target adds forced build-time dependencies on
# autotools-dev (for /usr/share/misc/config.*) and debscripts (for dch)
# It's also a .PHONY make target.
autotools:
	OLDDATESUB=`./config.sub -t | tr -d -` ;\
	OLDDATEGUESS=`./config.guess -t | tr -d -` ;\
	NEWDATESUB=`/usr/share/misc/config.sub -t | tr -d -` ;\
	NEWDATEGUESS=`/usr/share/misc/config.guess -t | tr -d -` ;\
	if [ $$OLDDATESUB -lt $$NEWDATESUB -o \
	     $$OLDDATEGUESS -lt $$NEWDATEGUESS ]; then \
	   dch -a -p "GNU config automated update: config.sub\
	     ($$OLDDATESUB to $$NEWDATESUB), config.guess\
	     ($$OLDDATEGUESS to $$NEWDATEGUESS)" ;\
	   cp -f /usr/share/misc/config.sub config.sub ;\
	   cp -f /usr/share/misc/config.guess config.guess ;\
	   echo WARNING: GNU config scripts updated from master copies 1>&2 ;\
	fi

configure-stamp:
	dh_testdir
	touch configure.in && touch aclocal.m4 && touch configure

	./configure $(CONFFLAGS) \
	 --prefix=/usr/share --exec-prefix=/usr --libexecdir=/usr/sbin \
	 --bindir=/usr/sbin --sbindir=/usr/sbin \
	 --includedir=/usr/include/cyrus \
	 --datadir=/usr/share/cyrus --sysconfdir=/etc \
	 --with-statedir=/var/state \
	 --sharedstatedir=/usr/share/cyrus \
	 --localstatedir=/var/lib/cyrus \
	 --with-cyrus-prefix=/usr/lib/cyrus --with-lock=fcntl \
	 --with-openssl=/usr --with-auth=unix --enable-netscapehack \
	 --enable-listext --with-sasl=/usr --with-notify=zephyr \
	 --with-idle=idled \
	 --with-cyrus-user=cyrus --with-cyrus-group=mail \
	 --with-tclsh=/usr/bin/tclsh --with-com_err=/usr \
	 --enable-pidfile=/var/run/cyrmaster.pid

	touch configure-stamp

build: configure-stamp build-stamp
build-stamp:
	dh_testdir

	PERL_MM_OPT="INSTALLDIRS=vendor" $(MAKE) CFLAGS="-Wall -pipe $(DEBUGFLAGS)"

	touch build-stamp

install: DH_OPTIONS=
install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	$(MAKE) install DESTDIR=$(TMP)

	# fix totaly broken location of the include files;
	# while at it, also avoid namespace colision, and move
	# lots of admin-only/system-only stuff to sbin and lib
	# also, do the renaming needed for alternatives
	mkdir -p $(TMP)/usr/sbin
	mkdir -p $(TMP)/usr/lib/cyrus
	for i in master reconstruct quota deliver ; do \
		mv $(TMP)/usr/lib/cyrus/bin/$$i $(TMP)/usr/sbin/cyr$$i ;\
	done
	for i in fud mbpath ctl_mboxlist ctl_deliver ctl_cyrusdb squatter \
	         tls_prune ipurge cyrdump ; do \
		mv $(TMP)/usr/lib/cyrus/bin/$$i $(TMP)/usr/sbin/$$i ;\
	done
	for i in imtest pop3test ; do \
		mv $(TMP)/usr/bin/$$i $(TMP)/usr/sbin/$$i ;\
	done
	mkdir -p $(TMP)/usr/include
	mv $(TMP)/usr/share/include/cyrus $(TMP)/usr/include
	mv $(TMP)/bin/* $(TMP)/usr/bin

	# Move the perl crap to a saner place
	mkdir -p $(TMP)/usr/lib
	mv $(TMP)/lib/* $(TMP)/usr/lib

	# Massage the documentation into place
	mkdir -p $(PKGDIR)/usr/share/doc/$(MAINPKG)
	find doc/text -name '[Ra-z]*' -type f -exec cp -a {} $(PKGDIR)/usr/share/doc/$(MAINPKG) \;
	#(cd $(PKGDIR)/usr/share/doc/$(MAINPKG) && rm copyrights changes htmlstrip.c)
	find $(PKGDIR)/usr/share/doc/$(MAINPKG) -type f ! -name '*txt' ! -name '*.*' -exec mv {} {}.txt \;

	# Now the html docs and examples
	mkdir -p $(PKGDIR)/usr/share/doc/$(MAINPKG)/html
	install -m 644 doc/*.html $(PKGDIR)/usr/share/doc/$(MAINPKG)/html
	cp -a debian/examples $(PKGDIR)/usr/share/doc/$(MAINPKG)
	install -m 644 doc/cyrusv2.mc $(PKGDIR)/usr/share/doc/$(MAINPKG)/examples

	# for stuff in /etc
	mkdir -p $(TMP)/etc/cyrus $(TMP)/etc/pam.d
	install -m 644 debian/imapd.conf    $(TMP)/etc
	install -m 644 debian/cyrus.conf    $(TMP)/etc
	(cd debian ; for i in *.pam ;\
		do install -m 644 $$i $(TMP)/etc/pam.d/$${i%.pam} ;\
	done)

	# We rename some utils, so we need to sort out the manpages
	for i in master reconstruct quota deliver ; do \
		mv $(TMP)/usr/share/man/man8/$$i.8 $(TMP)/usr/share/man/man8/cyr$${i}.8 ; \
	done

	# And add our own manpages
	mkdir -p $(TMP)/usr/share/man/man8
	install -m 644 debian/cyrdump.8 $(TMP)/usr/share/man/man8/cyrdump.8

	# SNMP files
	mkdir -p $(TMP)/usr/share/snmp/mibs
	install -m 644 master/CYRUS-MASTER.mib $(TMP)/usr/share/snmp/mibs/CYRUS-MASTER-MIB.txt

	# Install cyradm icons
	mkdir -p $(TMP)/usr/share/icons/mini
	install -m 644 debian/cyradm-32x32.xpm $(TMP)/usr/share/icons/cyradm.xpm
	install -m 644 debian/cyradm-16x16.xpm $(TMP)/usr/share/icons/mini/cyradm.xpm

	# Install debian-provided scripts
	install debian/cyrus-makedirs $(TMP)/usr/sbin/cyrus-makedirs

	# and logcheck files
	install -m 644 debian/logcheck.ignore $(PKGDIR)/etc/logcheck/ignore.d.workstation/cyrus21
	install -m 644 debian/logcheck.ignore $(PKGDIR)/etc/logcheck/ignore.d.server/cyrus21

	# Install the stuff needed for 1.5/1.6.x to 2.1 upgrades
	mv $(TMP)/usr/sbin/ctl_mboxlist $(PKGDIR)/usr/lib/cyrus/upgrade
	install -m 755 man/ctl_mboxlist.8 $(PKGDIR)/usr/share/doc/$(MAINPKG)/upgrade
	for i in dohash rehash undohash translatesieve upgradesieve ; do \
		install -m 755 tools/$$i $(PKGDIR)/usr/lib/cyrus/upgrade ;\
	done

	dh_movefiles

# Build architecture-independent files here.
binary-indep: build install
	dh_testdir -i
	dh_testroot -i
#	dh_installdebconf -i
	dh_installdocs -p cyrus21-admin
	dh_installexamples -p cyrus21-admin
	dh_installmenu -i
#	dh_installlogrotate -i
#	dh_installemacsen -i
#	dh_installpam -i
#	dh_installmime -i
#	dh_installcron -i
	dh_installman -i
	dh_installchangelogs -p cyrus21-admin doc/changes.html
	dh_compress -i
	dh_fixperms -i
	dh_makeshlibs -i
	dh_installdeb -i
	dh_perl -i
	dh_shlibdeps -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir -a
	dh_testroot -a
#	dh_installdebconf -a
	dh_installdocs -p $(MAINPKG) -p libcyrus-imap-perl
	dh_installexamples -p $(MAINPKG) -p libcyrus-imap-perl
	dh_installmenu -a
#	dh_installlogrotate -a
#	dh_installemacsen -a
#	dh_installpam -a
#	dh_installmime -a
	dh_installinit -p $(MAINPKG) --init-script=cyrus21
#	dh_installcron -a
	dh_installman -a
	dh_undocumented -p $(MAINPKG) cyrus-makedirs.8
#	dh_installinfo -a
	dh_installchangelogs -p $(MAINPKG) doc/changes.html
	dh_installchangelogs -p libcyrus-imap-perl perl/imap/Changes
ifeq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
	dh_strip -a
endif
	dh_link -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_perl -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

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