#! /usr/bin/make -f
#
#	debian/rules file for freeradius
#

SHELL=/bin/bash
DH_COMPAT=3
export DH_COMPAT

package = freeradius
debiandir = $(shell pwd)/debian
radiusd_freeradius_dir     = $(debiandir)/radiusd-freeradius

prefix	= /
exec_prefix	= /usr
mandir	= $(exec_prefix)/share/man
libdir	= $(exec_prefix)/lib/freeradius
logdir	= /var/log/radiusd-freeradius
pkgdocdir	= $(exec_prefix)/share/doc/radiusd-freeradius
raddbdir	= $(prefix)/etc/raddb

build:
# Builds the binary package.
	dh_testdir
	# dh_testroot
	./configure --prefix=$(prefix) --exec-prefix=$(exec_prefix) --libdir=$(libdir) --mandir=$(mandir) --with-logdir=$(logdir) --with-thread-pool --with-system-libtool --enable-ltdl-install=no --enable-strict-dependencies `find src/modules -type d |grep rlm_ |sed -e "s%.*/\(rlm_[^/]*\)\(/.*\)*%\\1%" |sort |uniq |while read dir; do egrep ^$dir\$ src/modules/stable >/dev/null || echo --disable-$dir; done`
	make
	touch build

# Architecture independant files.
binary-indep: build

# Make a binary package (.deb file)
binary-arch: build
	dh_clean
	dh_installdirs
	make install prefix=$(prefix) exec_prefix=$(exec_prefix) mandir=$(mandir) libdir=$(libdir) R=$(radiusd_freeradius_dir)
	# clean up install cruft.  $$&@!%
	test ! -d $(radiusd_freeradius_dir)/$(execprefix)/include || rm -rf $(radiusd_freeradius_dir)/$(execprefix)/include
	rm $(radiusd_freeradius_dir)/$(execprefix)/usr/sbin/rc.radiusd
	# split out inconvenient/controversal modules to other places
	for modname in krb5 ldap mysql postgresql; do \
		mkdir -p $(debiandir)/radiusd-freeradius-$${modname}/$(libdir); \
		mv $(radiusd_freeradius_dir)/$(libdir)/rlm*_$${modname}* $(debiandir)/radiusd-freeradius-$${modname}/$(libdir)/; \
	done
	# man pages & docs
	dh_undocumented 
	install -g root -m 644 CREDITS $(radiusd_freeradius_dir)/$(pkgdocdir)/credits
	dh_installdocs `find doc -type f -maxdepth 1 ! -path doc/ChangeLog`
	dh_installdocs `find src/modules/rlm_sql/drivers -type f -name \*.sql`
	# dh_installchangelogs doc/ChangeLog
	dh_compress
	# supporting programs
	dh_installlogrotate
	install -g root -m 755 $(debiandir)/initscript $(radiusd_freeradius_dir)/$(prefix)/etc/init.d/freeradius
	TEMPFILE=`mktemp /tmp/radconf-XXXXXX`; \
	cp $(radiusd_freeradius_dir)/$(raddbdir)/radiusd.conf $$TEMPFILE; \
	cat $$TEMPFILE \
		| sed -e 's/        /	/g' \
		| sed -e '/^	example {/,/^	}/s/^/#/' \
		| sed -e 's/#	shadow = /shadow = /' \
		| sed -e 's/^#?group = nobody/group = freerad/' \
		| sed -e 's/^#?user = nobody/user = freerad/' \
		| sed -e 's@/run/radiusd@/run/radiusd-freeradius@' \
			> $(radiusd_freeradius_dir)/$(raddbdir)/radiusd.conf; \
	rm $$TEMPFILE
	# 
	dh_strip
	dh_installchangelogs
	dh_makeshlibs
	dh_shlibdeps
	dh_installdeb
	dh_compress
	dh_fixperms
	dh_md5sums
	dh_gencontrol
	dh_builddeb

clean:	
	rm -f build debian/{files,substvars} debian/*.debhelper
	[ -f Make.inc ] && make distclean || true
	dh_clean
	rm -rf $(radiusd_freeradius_dir) radiusd-freeradius-{ldap,postgresql,mysql,krb5}{,.substvars}

binary: binary-indep binary-arch

# for the maintainer only
sanitycheck:
	@echo -n "sanity: checking for overzealous undocumented file... "
	@find man/ -type f |grep \. |sed -e 's%man/man./%%' | { \
		while read manpage; do \
			grep $$manpage debian/radiusd-freeradius.undocumented | read filename && echo -n $$filename; \
		done; \
	} || true
	@test -n $$filename
	@echo good.

.PHONY: binary binary-arch binary-indep clean sanitycheck
