#!/usr/bin/make -f
# debian/rules file for building the Debian GNU/Linux package bzip2.
# Copyright (C) 2004-2005 Anibal Monsalve Salazar <anibal@debian.org>

SHELL = /bin/bash
package = bzip2

testdir=test -x debian/rules && test -f bzip2.c
testroot=test "`id -nu`" = root

DEB_BUILD_GNU_TYPE	:= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE	:= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)

DEBCFLAGS:=
DEBSTRIP:=strip
WGET=wget
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
DEBCFLAGS += -g
endif
ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
DEBSTRIP:=:
endif

DEBVERSION:=$(shell head -n 1 debian/changelog \
		    | sed -e 's/^[^(]*(\([^)]*\)).*/\1/')
UPVERSION:=$(shell echo $(DEBVERSION) | sed -e 's/-[0-9.]*$$//')

build: build-stamp
build-stamp:
	$(testdir)
	# Add here commands to compile the package.
	$(MAKE) DEBCFLAGS="$(DEBCFLAGS)"
ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
	$(MAKE) DEBCFLAGS="$(DEBCFLAGS)" test
endif
	#makeinfo manual.texi
	touch build-stamp

clean:
	$(testdir)
	rm -f build-stamp
	-$(MAKE) clean
	rm -f debian/substvars debian/files bzip2.info*
	rm -fr debian/tmp*
	find . -name "*~" -print0 | xargs -r0 rm -f

# Build architecture-independent files here.
binary-indep: build
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build
	$(testdir)
	$(testroot)
	rm -fr debian/tmp*
	install -d debian/tmp/usr

	$(MAKE) PREFIX=`pwd`/debian/tmp/usr install

	### Split

	# Development package
	install -d debian/tmp-dev/usr/lib
	mv debian/tmp/usr/lib/libbz2.{a,so} debian/tmp-dev/usr/lib/
	mv debian/tmp/usr/include debian/tmp-dev/usr/include

	# Library package
	install -d debian/tmp-lib/usr/lib
	for i in $$(ls debian/tmp/usr/lib/libbz2.so* | sort -r); do \
	  (set -x; mv $$i debian/tmp-lib/usr/lib/); \
	done
	chmod -x debian/tmp-lib/usr/lib/*

	# Binary package
	install -d debian/tmp-run/usr
	mv debian/tmp/usr/bin debian/tmp-run/usr/bin
	install -d debian/tmp-run/usr/share
	mv debian/tmp/usr/man debian/tmp-run/usr/share/man

	### Check the install hier
	test "$$(find debian/tmp ! -type d -print | wc -l)" -eq 0
	rm -fr debian/tmp

	### Finalize documentation

	# Man pages
	#gzip -v9 debian/tmp-run/usr/share/man/man1/*.1
	#( cd debian/tmp-run/usr/share/man/man1 && \
	#  for i in bunzip2 bzcat bzip2recover; do \
	#    ln -s bzip2.1.gz $$i.1.gz; \
	#  done )

	# Info
	#install -d debian/tmp-run/usr/share/info
	#cp bzip2.info* debian/tmp-run/usr/share/info/
	#gzip -v9 debian/tmp-run/usr/share/info/*

	# Other docs in lib package
	#install -d debian/tmp-run/usr/share/doc/bzip2
	#cp *.ps *.html *.texi debian/tmp-run/usr/share/doc/bzip2
	#gzip -v9 debian/tmp-run/usr/share/doc/bzip2/*.{ps,texi}
	#cp CHANGES debian/tmp-run/usr/share/doc/bzip2/changelog
	#cp debian/changelog \
	#  debian/tmp-run/usr/share/doc/bzip2/changelog.Debian
	#gzip -v9 debian/tmp-run/usr/share/doc/bzip2/changelog*
	#cp debian/copyright debian/tmp-run/usr/share/doc/bzip2/

	# Doc-base support
	#install -d debian/tmp-run/usr/share/doc-base
	#cp debian/docbase debian/tmp-run/usr/share/doc-base/bzip2

	# Library package
	install -d debian/tmp-lib/usr/share/doc/libbz2-1.0
	cp debian/copyright debian/tmp-lib/usr/share/doc/libbz2-1.0/
	cp CHANGES debian/tmp-lib/usr/share/doc/libbz2-1.0/changelog
	cp debian/changelog \
	  debian/tmp-lib/usr/share/doc/libbz2-1.0/changelog.Debian
	gzip -v9 debian/tmp-lib/usr/share/doc/libbz2-1.0/changelog*

	# Other packages point to libbz2-1.0
	install -d debian/tmp-dev/usr/share/doc
	ln -s libbz2-1.0 debian/tmp-dev/usr/share/doc/libbz2-dev

	### Package finalize

	# Stripping
	for i in debian/tmp-run/usr/bin/*; \
	do \
	  if head -n 1 $$i | grep -vq '^#!'; \
	  then \
	    (set -x; $(DEBSTRIP) -R .note -R .comment $$i); \
	  fi; \
	done
	$(DEBSTRIP) --strip-unneeded -R .note -R .comment \
	  debian/tmp-lib/usr/lib/*.so*
	$(DEBSTRIP) --strip-debug debian/tmp-dev/usr/lib/*.a

	# Control files
	install -d debian/tmp-{lib,dev,run}/DEBIAN
	cp debian/shlibs debian/tmp-lib/DEBIAN/shlibs

	dpkg-shlibdeps debian/tmp-lib/usr/lib/*.so*
	dpkg-gencontrol -isp -Pdebian/tmp-lib -plibbz2-1.0
	rm debian/substvars
	dpkg-gencontrol -isp -Pdebian/tmp-dev -plibbz2-dev
	dpkg-shlibdeps debian/tmp-run/usr/bin/*
	dpkg-gencontrol -isp -Pdebian/tmp-run -pbzip2

	#for i in run dev lib; do \
	#  cp debian/postinst-$$i debian/tmp-$$i/DEBIAN/postinst; \
	#  cp debian/prerm-$$i debian/tmp-$$i/DEBIAN/prerm; \
	#  chmod +x debian/tmp-$$i/DEBIAN/postinst; \
	#  chmod +x debian/tmp-$$i/DEBIAN/prerm; \
	#done
	#cp debian/preinst-run debian/tmp-run/DEBIAN/preinst
	#cp debian/postrm-lib debian/tmp-lib/DEBIAN/postrm
	#chmod +x debian/tmp-run/DEBIAN/preinst debian/tmp-lib/DEBIAN/postrm

	# Fix perms
	chown -R root.root debian/tmp*
	chmod -R a+rX-wts,u+w debian/tmp*

	# Buildit
	dpkg --build debian/tmp-run ..
	dpkg --build debian/tmp-lib ..
	dpkg --build debian/tmp-dev ..

print-version:
	@@echo "Debian version:          $(DEBVERSION)"
	@@echo "Upstream version:        $(UPVERSION)"

get-orig-source:
	$(WGET) -O bzip2_$(UPVERSION).orig.tar.gz \
	  http://www.bzip.org/$(UPVERSION)/bzip2-$(UPVERSION).tar.gz

binary: binary-indep binary-arch

.PHONY: build clean binary-indep binary-arch binary print-version \
	get-orig-source
