#!/usr/bin/make -f
############################ -*- Mode: Makefile -*- ###########################
## rules ---
## Author	    : Manoj Srivastava ( srivasta@tiamat.datasync.com )
## Created On	    : Thu Oct 29 15:35:55 1998
## Created On Node  : tiamat.datasync.com
## Last Modified By : Manoj Srivastava
## Last Modified On : Tue Oct 26 15:20:25 2004
## Last Machine Used: glaurung.internal.golden-gryphon.com
## Update Count	    : 62
## Status	    : Unknown, Use with caution!
## HISTORY	    :
## Description	    :
## $Id$
###############################################################################

ifdef ARCH
  ha:=-a$(ARCH)
endif

# set the dpkg-architecture vars; but we don't use them, so we'll comment out
export DEB_BUILD_ARCH      ?= $(shell dpkg-architecture $(ha) -qDEB_BUILD_ARCH)
export DEB_BUILD_GNU_CPU   ?= $(shell dpkg-architecture $(ha) -qDEB_BUILD_GNU_CPU)
export DEB_BUILD_GNU_SYSTEM?= $(shell dpkg-architecture $(ha) -qDEB_BUILD_GNU_SYSTEM)
export DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture $(ha) -qDEB_BUILD_GNU_TYPE)
export DEB_HOST_ARCH       ?= $(shell dpkg-architecture $(ha) -qDEB_HOST_ARCH)
export DEB_HOST_GNU_CPU    ?= $(shell dpkg-architecture $(ha) -qDEB_HOST_GNU_CPU)
export DEB_HOST_GNU_SYSTEM ?= $(shell dpkg-architecture $(ha) -qDEB_HOST_GNU_SYSTEM)
export DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture $(ha) -qDEB_HOST_GNU_TYPE)

arch	:= $(shell dpkg --print-installation-architecture)

# Basic information
package := $(shell grep Source debian/control | sed 's/^Source: //')
date	:= $(shell date +"%Y-%m-%d")
version := $(shell awk -F '[()]' '/^$(package)/{ print $$2; exit }' debian/changelog)

# Location of the source dir
SRCTOP	  := $(CURDIR)
TMPTOP	  := $(SRCTOP)/debian/tmp
DOCDIR	  := $(TMPTOP)/usr/share/doc/$(package)
LIBDIR	  := $(TMPTOP)/usr/share/doc-base

sanitycheck := debian/rules policy.sgml

SGML_FILES := policy menu-policy mime-policy policy-process perl-policy
DESC_FILES := debian-policy debian-menu-policy debian-perl-policy \
              debian-mime-policy debian-policy-process debconf-spec fhs

# While we have two versions of the FHS installed in the source package,
# we need to modify this to handle it.  This is the easiest way to do it.
# FHS_ARCHIVE := $(wildcard fhs*.tar.gz)
# And with version 2.1, we have to build the text and dvi versions
# ourselves :-(
FHS_ARCHIVE  := fhs-2.3-source.tar.gz
FHS_HTML     := fhs-2.3.html
FHS_FILES    := fhs-2.3.ps.gz fhs-2.3.txt.gz fhs-2.3.pdf.gz
FHS_NEW_ARCHIVE  := 
FHS_NEW_HTML     := 
FHS_NEW_FILES    := 
# FSSTND_FILES := FSSTND-FAQ fsstnd-1.2.dvi.gz fsstnd-1.2.ps.gz fsstnd-1.2.txt.gz
POLICY_FILES = $(SGML_FILES:=.sgml) $(SGML_FILES:=.txt.gz) \
	       virtual-package-names-list.txt \
	       upgrading-checklist.txt libc6-migration.txt version.ent \
               debconf_spec/debconf_specification.html \
               debconf_spec/debconf_specification.txt.gz \
               policy.ps.gz policy.pdf.gz

# policy.{pdf,ps,tpt,txt} are generated files
FILES_TO_CLEAN  = debian/files debian/buildinfo  debian/substvars \
		  debian/postinst debian/prerm \
		  version.ent upgrading-checklist.txt \
		  $(SGML_FILES:=.txt.gz) $(SGML_FILES:=.html.tar.gz) \
		  policy.pdf.gz policy.ps.gz \
		  debconf_specification.xml.tar.gz \
                  policy.pdf policy.ps policy.txt policy.

STAMPS_TO_CLEAN := stamp-policy stamp-build
DIRS_TO_CLEAN   := debian/tmp fhs $(SGML_FILES:=.html)


install_file    := install -p	-o root -g root	 -m  644
install_program := install -p	-o root -g root	 -m  755
make_directory  := install -p -d	-o root -g root	 -m  755


all build: stamp-build
stamp-build: version.ent $(sanitycheck)
	$(MAKE) $(SGML_FILES:=.sgml.validate) \
		$(SGML_FILES:=.html.tar.gz) \
		$(SGML_FILES:=.txt.gz) \
		policy.ps.gz policy.pdf.gz
	# Need to use a patched tmac.m macro file if we're using a pre-1.16
	# groff; version 1.16 is apparently fixed
	if dpkg --compare-versions "$(shell dpkg -s groff | sed -n -e 's/Version: //p')" lt 1.16; then \
	    cp /usr/share/groff/tmac/tmac.m fhs && \
	    cd fhs && patch -p1 < ../mm1.32-patch; \
	fi
	# The extra '.' in the tmac path won't harm if unnecessary
	#GROFF_TMAC_PATH=. GROFF_NO_SGR=1 $(MAKE) -C fhs fhs.ps fhs.pdf fhs.txt
	#links -dump fhs-changes-2.1.html | perl -pe 's/[\r\0]//g' > \
        #            fhs/fhs-changes-2.1.txt
	links -dump upgrading-checklist.html | perl -pe 's/[\r\0]//g' > \
                    upgrading-checklist.txt
	$(MAKE) -C debconf_spec all
	touch stamp-build

configure: version.ent
version.ent: debian/changelog
	rm -f $@
	echo "<!entity version \"$(version)\">" >> $@
	echo "<!entity date    \"$(date)\">"	>> $@

clean: $(sanitycheck)
# Undoes the effect of `make -f debian/rules build'.
	$(MAKE) -C debconf_spec clean
	rm -f  $(FILES_TO_CLEAN) $(STAMPS_TO_CLEAN)
	rm -rf $(DIRS_TO_CLEAN)
	rm -f core `find . \( -name '*.orig' -o -name '*.rej' -o \
	  -name '*~' -o -name '*.bak' -o -name '#*#' -o \
	  -name '.*.orig' -o -name '.*.rej' -o -name '.SUMS' -o \
	  -size 0 \) -print` TAGS


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

binary-indep:	stamp-policy
stamp-policy:  build $(sanitycheck)
	@test $$(id | sed -e 's/(.*$$//' -e 's/^uid=//') || \
		(echo need root priviledges; exit 1)
#	This is unnecessary; commenting out
#	test -f stamp-build	|| $(MAKE) -f	     debian/rules build
	rm -rf			$(TMPTOP)
	$(make_directory)	$(TMPTOP)/DEBIAN
#	$(make_directory)	$(DOCDIR)/fsstnd
	$(make_directory)	$(DOCDIR)/fhs
	$(make_directory)	$(LIBDIR)
	# create a substvar to reference from debian/control so that
	# we don't hardcode the policy compliance of the policy
	# package.  I guess some might question this but I take it as
	# a given that the debian-policy pkg must always comply with
	# itself...
	echo "debian-policy:Version=$(version)"	     > debian/substvars
	$(install_file)	    $(POLICY_FILES)	     $(DOCDIR)/
#	$(install_file)	    $(FSSTND_FILES)	     $(DOCDIR)/fsstnd/
	$(install_file)	    debian/changelog	     $(DOCDIR)/
	# Be more specific with file compression
	gzip -f9	    $(DOCDIR)/*.txt $(DOCDIR)/*.sgml \
				$(DOCDIR)/changelog
# These are allready compressed
	#$(install_file)    $(FHS_NEW_FILES)	     $(DOCDIR)/fhs/
	$(install_file)	    $(FHS_FILES)	     $(DOCDIR)/fhs/
	$(install_file)	    debian/copyright	     $(DOCDIR)/
	GZIP=-9 cd debconf_spec && \
	  tar -zcf ../debconf_specification.xml.tar.gz *
	$(install_file)	    debconf_specification.xml.tar.gz $(DOCDIR)/
	@set -ex; \
	for file in $(DESC_FILES); do \
	  $(install_file) $$file.desc $(LIBDIR)/$$file; \
	done
	@set -ex; \
	for file in $(SGML_FILES); do \
	  tar -C $(DOCDIR) -zxf $$file.html.tar.gz; \
	done
	$(install_file)     $(FHS_HTML)   $(DOCDIR)/fhs
	sed -e 's/#PACKAGE#/$(package)/g' debian/postinst.in > debian/postinst
	sed -e 's/#PACKAGE#/$(package)/g' debian/prerm.in > debian/prerm
	$(install_program)  debian/postinst          debian/tmp/DEBIAN/
	$(install_program)  debian/prerm             debian/tmp/DEBIAN/
	dpkg-gencontrol	    -p$(package) -Pdebian/tmp -isp
	chown		    -R root:root debian/tmp
	chmod		    -R go=rX debian/tmp
	dpkg		    --build debian/tmp ..
	touch		    stamp-policy


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

#Local variables:
#mode: makefile
#End:
