#!/usr/bin/make -f
# rules file for developers-reference
#
# I do not use debstd, debhelper, or any of that stuff.
# I believe in stripped down rules files; nothing that is not required
# I believe in readability through abstraction

package		:= developers-reference

# directory abstraction
prefix		:= debian/tmp
docdir		:= $(prefix)/usr/doc/$(package)
libdir		:= $(prefix)/usr/lib/$(package)
sharedir	:= $(prefix)/usr/share/$(package)
docbasedir	:= $(prefix)/usr/share/doc-base

# tool abstraction
install_file	:= install -o root -g root -m 644
install_script	:= install -o root -g root -m 755
make_directory	:= install -d -o root -g root -m 755
compress	:= gzip -9f

# version abstraction
DEB_VERSION	:= $(shell LC_ALL=C dpkg-parsechangelog | grep '^Version: ' | sed 's/^Version: *//')
# pretty-print the date
DATE		:= $(shell date --date="`dpkg-parsechangelog | grep '^Date: ' | sed 's/^Date: *//'`" '+%d %B, %Y')

# source depends -- check if these packages are installed
SRC_DEPENDS	:= debiandoc-sgml lout psutils

.PHONY: source-depends
source-depends:
	@set -e								;\
	for dep in $(SRC_DEPENDS); do					\
	    echo "checking if package \`$$dep' is installed..."		;\
	    dpkg --get-selections | grep "$$dep\W\+install" ||	\
		exit 1							;\
	done
	@echo "all source-depends seem to be installed, good"

build:	developers-reference.sgml
	$(checkdir)
	#./debian/rules source-depends
	rm -f version.ent
	echo "<!entity version \"$(DEB_VERSION)\">" >> version.ent
	echo "<!entity date    \"$(DATE)\">"        >> version.ent
	nsgmls -wall -s -E20 developers-reference.sgml	# check SGML syntax
	debiandoc2html developers-reference.sgml
	debiandoc2text developers-reference.sgml
	debiandoc2ps -pletter -1 developers-reference.sgml
	touch build

clean:
	$(checkdir)
	rm -f build
	rm -rf developers-reference.html
	rm -f developers-reference.text*
	rm -f developers-reference.ps
	rm -f developers-reference.lout* lout.li
	rm -f developers-reference.sasp*
	rm -f version.ent
	rm -f `find . -name "*~"`
	rm -rf $(prefix)
	rm -f debian/files* core debian/substvars

binary-indep:	build
	$(checkdir)
	rm -rf $(prefix)
	$(make_directory) $(prefix)/DEBIAN
	$(make_directory) $(docdir) $(libdir) $(sharedir) $(docbasedir)

	$(make_directory) $(docdir)/developers-reference.html
	$(install_file) developers-reference.html/*			\
		$(docdir)/developers-reference.html/
	$(install_file) developers-reference.text $(docdir)
	$(install_file) developers-reference.sgml version.ent $(docdir)
	$(install_file) debian/copyright $(docdir)
	$(install_file) debian/changelog $(docdir)
	$(install_file) developers-reference.desc $(docbasedir)/$(package)

	# make sure control files are good
	sh -n debian/postinst
	sh -n debian/prerm
	# install the control files
	$(install_script) debian/control debian/postinst debian/prerm	\
		$(prefix)/DEBIAN/

	# compress docdir (policy)	
	find $(docdir) -type f \( -size +4k -or -iname "change*" \)	\
		! -name "*.html" ! -name "*.gif"			\
		! -name "copyright" | xargs $(compress)

	dpkg-gencontrol -isp
	dpkg --build $(prefix) ..

	# some extra-package files
	$(install_file) developers-reference.ps ../
	$(compress) ../developers-reference.ps
	dpkg-distaddfile -fdebian/files developers-reference.ps.gz byhand -
	GZIP=-9v tar czf ../developers-reference.html.tar.gz		\
		developers-reference.html
	dpkg-distaddfile -fdebian/files developers-reference.html.tar.gz\
		byhand -
	$(install_file) developers-reference.text ..
	$(compress) developers-reference.text
	dpkg-distaddfile -fdebian/files developers-reference.text.gz byhand -

binary-arch:	build
# There are no architecture-dependent files to be uploaded
# generated by this package.  If there were any they would be
# made here.

define checkdir
	test -f debian/rules
endef

define checkroot
	test `id -u` = 0
endef

# Below here is fairly generic really

binary:		binary-indep binary-arch

.PHONY: binary binary-arch binary-indep clean
