#!/usr/bin/make -f

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-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 perl-policy
DESC_FILES := ubuntu-policy ubuntu-menu-policy ubuntu-perl-policy \
              ubuntu-mime-policy debconf-spec.ubuntu fhs.ubuntu

# 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)
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    := 

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. \
		  body.tmp head.tmp policy.tpt

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
	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)/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 ubuntu-policy pkg must always comply with
	# itself...
	echo "ubuntu-policy:Version=$(version)"	     > debian/substvars
	$(install_file)	    $(POLICY_FILES)	     $(DOCDIR)/
	$(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
	@set -ex; \
	cd debian/tmp; \
	find . -path "./DEBIAN" -prune -o -type f -printf '%P\0' \
           | xargs -r0 md5sum > DEBIAN/md5sums
	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:
