#!/usr/bin/make -f

subdirs_build=	ipif www-cgi
subdirs_nobuild=dyndns groupmanage misc
package=	userv-utils
packages_indep=	userv-dyndns userv-groupmanage userv-misc
packages_arch=	userv-ipif userv-cgi
packages=	$(packages_indep) $(packages_arch)

cwd=	$(shell pwd)
d=	$(cwd)/debian
t=	$d/tmp

build:
	$(checkdir)
	set -e; for s in $(subdirs_build); do $(MAKE) -C $$s all; done
	touch build

clean:
	$(checkdir)
	rm -f build
	set -e; for s in $(subdirs_build); do \
		$(MAKE) -C $$s -i distclean || \
		$(MAKE) -C $$s -f Makefile.in distclean; \
	done
	rm -rf *~ debian/tmp debian/*~ debian/files* debian/substvars*

binary-prep:
	$(checkdir)
	rm -rf debian/tmp*
	#
	#
	set -e; for s in $(subdirs_build) $(subdirs_nobuild); do \
		$(MAKE) -C $$s install install-docs install-examples \
			prefix=$t/userv-$$s/usr \
			etcdir=$t/userv-$$s/etc \
			varlib=$t/userv-$$s/var/lib; \
	done
	#
	mv debian/tmp/userv-www-cgi debian/tmp/userv-cgi
	mv debian/tmp/userv-groupmanage/usr/share/doc/groupmanage \
	   debian/tmp/userv-groupmanage/usr/share/doc/userv-groupmanage
	#
	set -e; for p in $(packages); do \
		install -d $t/$$p/DEBIAN $t/$$p/usr/share/doc/$$p; \
		cp debian/copyright debian/changelog \
			$t/$$p/usr/share/doc/$$p/; \
		ln -s changelog.gz \
			$t/$$p/usr/share/doc/$$p/changelog.Debian.gz; \
		gzip -9v $t/$$p/usr/share/doc/$$p/changelog; \
		done
	#
	rename 's/\.example$$//' $t/userv-ipif/etc/userv/vpn/*.example \
		$t/userv-dyndns/etc/userv/dyndns-service-users.example \
		$t/userv-groupmanage/etc/groupmanage.conf.example
	rename 's/\.distrib$$//' $t/*/etc/userv/services.d/*.distrib
	rename 's/$$/\.disabled/' $t/userv-misc/etc/userv/services.d/mailq
	set -e; for p in $(packages); do \
		cd $t/$$p; \
		test ! -d etc || \
		  find etc -type f -exec printf '/%s\n' '{}' ';' \
			>>DEBIAN/conffiles; \
	done
	#
	mv $t/userv-misc/usr/bin/mailq $t/userv-misc/usr/bin/mailq.userv
	#
#	gzip -9f $t/*/usr/share/man/man*/*

binary-hook-userv-misc:
binary-hook-userv-groupmanage:
binary-hook-userv-cgi:
binary-hook-userv-dyndns:
binary-hook-userv-ipif:

binary-one:
	set -e; for f in preinst postinst prerm postrm conffiles; do \
		test -f debian/$p/$$f || continue; \
		cp debian/$p/$$f $t/$p/DEBIAN/$$f; \
		chmod u=rwX,go=rX $t/$p/DEBIAN/$$f; \
	done
	dpkg-gencontrol -p$p -P$t/$p -Tdebian/sv-$p
	chown -R root.root debian/tmp
	chmod -R g-ws debian/tmp
	debian/rules binary-hook-$p
	dpkg --build $t/$p ..

binary-indep:	checkroot build binary-prep
	set -e; for p in $(packages_indep); do \
		debian/rules binary-one p=$$p; done

binary-arch:	checkroot build binary-prep
	$(checkdir)
	dpkg-shlibdeps -Tdebian/sv-userv-ipif \
		$t/userv-ipif/usr/bin/udptunnel-forwarder \
		$t/userv-ipif/usr/lib/userv/ipif
	dpkg-shlibdeps -Tdebian/sv-userv-cgi \
		$t/userv-cgi/usr/lib/userv/cgi/target \
		$t/userv-cgi/usr/lib/userv/cgi/cgi/ucgi
	set -e; for p in $(packages_arch); \
		do debian/rules binary-one p=$$p; done

define checkdir
	test -f ipif/service.c
endef

# Below here is fairly generic really

binary:		binary-indep binary-arch

source diff:
	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false

checkroot:
	$(checkdir)
	test root = "`whoami`"

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