#!/usr/bin/make -f

VERSION:=$(shell LC_ALL=C dpkg-parsechangelog | grep '^Version:' | \
		 sed -e 's/^Version: *//' -e 's/-.*$$//' -e 's/^.*://')
SONAME=1

include debian/vars
BUILD_TREE = $(SOURCE_DIR)/$(TAR_DIR)

DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
DEB_BUILD_GNU_CPU := $(shell dpkg-architecture -qDEB_BUILD_GNU_CPU)
DEB_BUILD_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)
DEB_BUILD_GNU_TYPE=$(DEB_BUILD_GNU_CPU)-$(DEB_BUILD_GNU_SYSTEM)
DEB_HOST_ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_GNU_CPU=$(shell dpkg-architecture -qDEB_BUILD_GNU_CPU)
DEB_HOST_GNU_SYSTEM=$(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)
DEB_HOST_GNU_TYPE=$(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DH_OPTIONS=

ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
TESTS=test
endif

COMPAT-ARCHS=
ifneq (,$(findstring $(DEB_HOST_ARCH), $(COMPAT-ARCHS)))
DOBUILDCOMPAT	:= $(STAMP_DIR)/build-libc5
DOBINARYCOMPAT	:= binary-libc5
endif
ifeq ($(DEB_HOST_ARCH),i386)
DEB_HOST_LIBC5_ARCH := i486
else
DEB_HOST_LIBC5_ARCH=$(DEB_HOST_ARCH)
endif

PACKAGE=$(shell dh_listpackages | grep -- -udeb$$)
DVERSION=$(shell dpkg-parsechangelog | grep ^Version: | cut -d ':' -f 3)
ARCH=$(shell dpkg --print-architecture)
UFILENAME=$(PACKAGE)_$(DVERSION)_$(ARCH).udeb

clean:
	dh_testdir
	$(MAKE) -f /usr/share/dbs/sys-build.mk source.clean
	dh_clean
	rm -rf debian/libc5-tmp
	rm -rf debian/nopic-tmp

$(STAMP_DIR)/source.make:
	$(MAKE) -f /usr/share/dbs/sys-build.mk source.make

build: $(STAMP_DIR)/build
$(STAMP_DIR)/build: $(STAMP_DIR)/source.make $(DOBUILDCOMPAT)
	dh_testdir
	cd $(BUILD_TREE) && CC=$(DEB_HOST_GNU_TYPE)-gcc ./configure --shared
	$(MAKE) -C $(BUILD_TREE) all libz.a $(TESTS)
	$(MAKE) CC=$(DEB_HOST_GNU_TYPE)-gcc -C $(BUILD_TREE)/contrib/minizip
	touch $@

$(STAMP_DIR)/build-nopic: $(STAMP_DIR)/source.make
	dh_testdir
	mkdir -p debian/nopic-tmp
	cd $(BUILD_TREE) && CC=$(DEB_HOST_GNU_TYPE)-gcc ./configure
	$(MAKE) -C $(BUILD_TREE) clean
	$(MAKE) -C $(BUILD_TREE) all libz.a $(TESTS)
	$(MAKE) -C $(BUILD_TREE) install prefix=$(CURDIR)/debian/nopic-tmp
	install -m 644 $(BUILD_TREE)/libz.a debian/nopic-tmp/lib/libz.a
	$(MAKE) -C $(BUILD_TREE) clean
	touch $@

$(STAMP_DIR)/build-libc5: $(STAMP_DIR)/source.make
	dh_testdir
	mkdir -p debian/libc5-tmp
	cd $(BUILD_TREE) && CC=$(DEB_HOST_LIBC5_ARCH)-linuxlibc1-gcc ./configure --shared
	$(MAKE) -C $(BUILD_TREE) CC=$(DEB_HOST_LIBC5_ARCH)-linuxlibc1-gcc \
	CPP=/usr/$(DEB_HOST_LIBC5_ARCH)-linuxlibc1/bin/cpp all libz.a
	LD_LIBRARY_PATH=debian/libc5-tmp/lib:$(LD_LIBRARY_PATH) $(MAKE) -C $(BUILD_TREE) test
	$(MAKE) -C $(BUILD_TREE) install prefix=$(CURDIR)/debian/libc5-tmp
	install -m 644 $(BUILD_TREE)/libz.a debian/libc5-tmp/lib/libz.a
	$(MAKE) -C $(BUILD_TREE) clean
	touch $@

binary-indep:

binary-arch: binary-zlib1g-udeb binary-zlib1g binary-zlib1g-dev binary-zlib-bin $(DOBINARYCOMPAT)

pkg = $(patsubst binary-%,%,$@)

middle-binary-zlib1: tmpdir = $(CURDIR)/debian/zlib1
middle-binary-zlib1-altdev: tmpdir = $(CURDIR)/debian/zlib1-altdev
middle-binary-zlib1g-dev: tmpdir = $(CURDIR)/debian/zlib1g-dev
middle-binary-zlib-bin: tmpdir = $(CURDIR)/debian/zlib-bin
middle-binary-zlib1g: tmpdir = $(CURDIR)/debian/tmp
middle-binary-zlib1g-udeb: tmpdir = $(CURDIR)/debian/zlib1g-udeb
#post-binary-zlib1: tmpdir = $(CURDIR)/debian/zlib1
#post-binary-zlib1-altdev: tmpdir = $(CURDIR)/debian/zlib1-altdev
post-binary-zlib1g-dev: tmpdir = $(CURDIR)/debian/zlib1g-dev
post-binary-zlib-bin: tmpdir = $(CURDIR)/debian/zlib-bin
#post-binary-zlib1g: tmpdir = $(CURDIR)/debian/tmp

post-binary-zlib1g: changelog = $(BUILD_TREE)/ChangeLog
post-binary-zlib1g: docs = $(BUILD_TREE)/README

post-binary-zlib1g-dev: docs = $(BUILD_TREE)/FAQ $(BUILD_TREE)/README $(BUILD_TREE)/algorithm.txt
post-binary-zlib1g-dev: examples = $(BUILD_TREE)/example.c $(BUILD_TREE)/minigzip.c
post-binary-zlib1g-dev: changelog = $(BUILD_TREE)/ChangeLog
post-binary-zlib1g-dev: manpages3 = $(BUILD_TREE)/zlib.3

post-binary-zlib-bin: changelog =  $(BUILD_TREE)/contrib/minizip/ChangeLogUnzip
post-binary-zlib-bin: manpages1 = debian/minizip.1 debian/miniunzip.1

post-binary-zlib1: docs = $(BUILD_TREE)/README
post-binary-zlib1: changelog = $(BUILD_TREE)/ChangeLog

allpkgs = zlib1 zlib1-altdev zlib1g-dev zlib1g zlib-bin
$(patsubst %,binary-%,$(allpkgs)): DH_OPTIONS += -p $(pkg)

$(patsubst %,binary-%,$(allpkgs)): binary-%: pre-binary-%
$(patsubst %,binary-%,$(allpkgs)): binary-%: middle-binary-%
$(patsubst %,binary-%,$(allpkgs)): binary-%: post-binary-%

$(patsubst %,pre-binary-%,$(allpkgs)): pkg = $(patsubst pre-binary-%,%,$@)
$(patsubst %,middle-binary-%,$(allpkgs)): pkg = $(patsubst middle-binary-%,%,$@)
$(patsubst %,post-binary-%,$(allpkgs)): pkg = $(patsubst post-binary-%,%,$@)

binary-zlib1g-udeb: DH_OPTIONS += -pzlib1g-udeb
binary-zlib1g-udeb: pre-binary-zlib1g-udeb
binary-zlib1g-udeb: middle-binary-zlib1g-udeb
binary-zlib1g-udeb: post-binary-zlib1g-udeb

post-binary-zlib1-altdev: nodocs=\#

pre-binary-%: $(STAMP_DIR)/build
	dh_testdir $(DH_OPTIONS)
	dh_testroot $(DH_OPTIONS)
	dh_clean -k $(DH_OPTIONS)
	dh_installdirs $(DH_OPTIONS)
	dh_link $(DH_OPTIONS)

pre-binary-udeb: $(STAMP_DIR)/build
	dh_testdir $(DH_OPTIONS)
	dh_testroot $(DH_OPTIONS)
	dh_clean -k $(DH_OPTIONS)
	dh_installdirs $(DH_OPTIONS)

post-binary-%: $(STAMP_DIR)/build
	$(nodocs)if [ "$(manpages1)" != "" ]; then cp $(manpages1) $(tmpdir)/usr/share/man/man1 ; fi
	$(nodocs)if [ "$(manpages3)" != "" ]; then cp $(manpages3) $(tmpdir)/usr/share/man/man3 ; fi
	$(nodocs)dh_installexamples $(DH_OPTIONS) $(examples)
	$(nodocs)dh_installchangelogs $(DH_OPTIONS) $(changelog)
	$(nodocs)dh_installdocs $(DH_OPTIONS) $(docs)
	dh_shlibdeps $(DH_OPTIONS) -l$(BUILD_TREE)
	dh_compress $(DH_OPTIONS)
	dh_strip $(DH_OPTIONS)
	dh_md5sums $(DH_OPTIONS)
	dh_fixperms $(DH_OPTIONS)
	dh_installdeb $(DH_OPTIONS)
	dh_gencontrol $(DH_OPTIONS)
	dh_builddeb $(DH_OPTIONS)

post-binary-zlib1g-udeb: $(STAMP_DIR)/build
	dh_shlibdeps $(DH_OPTIONS) -l$(BUILD_TREE)
	dh_compress $(DH_OPTIONS)
	dh_strip $(DH_OPTIONS)
	dh_fixperms $(DH_OPTIONS)
	dh_installdeb $(DH_OPTIONS)
	dh_gencontrol $(DH_OPTIONS) -- -fdebian/files~
	dpkg-distaddfile $(UFILENAME) debian-installer optional
	dh_builddeb $(DH_OPTIONS) --filename=$(UFILENAME)

middle-binary-zlib1g: $(STAMP_DIR)/build
	install -m 644 -s $(BUILD_TREE)/libz.so.$(VERSION) $(tmpdir)/usr/lib/libz.so.$(VERSION)
	ln -s libz.so.$(VERSION) $(tmpdir)/usr/lib/libz.so.$(SONAME)

middle-binary-zlib1g-udeb: $(STAMP_DIR)/build
	install -m 644 -s $(BUILD_TREE)/libz.so.$(VERSION) $(tmpdir)/usr/lib/libz.so.$(VERSION)
	ln -s libz.so.$(VERSION) $(tmpdir)/usr/lib/libz.so.$(SONAME)

middle-binary-zlib1g-dev: $(STAMP_DIR)/build-nopic
	install -m 644 debian/nopic-tmp/lib/libz.a \
		$(tmpdir)/usr/lib/libz.a
	ln -s libz.so.1 $(tmpdir)/usr/lib/libz.so
	install -m 644 $(BUILD_TREE)/zlib.h $(BUILD_TREE)/zconf.h $(tmpdir)/usr/include/
	tar cf $(tmpdir)/usr/share/doc/zlib1g-dev/examples/contrib.tar --force-local -C $(BUILD_TREE)/contrib .

middle-binary-zlib-bin: $(STAMP_DIR)/build
	install -m 755 $(BUILD_TREE)/contrib/minizip/minizip $(tmpdir)/usr/bin/
	install -m 755 $(BUILD_TREE)/contrib/minizip/miniunz $(tmpdir)/usr/bin/miniunzip

binary-libc5: binary-zlib1 binary-zlib1-altdev

middle-binary-zlib1: $(STAMP_DIR)/build-libc5
	install -d $(tmpdir)/usr/lib/libc5-compat
	install -m 644 debian/libc5-tmp/lib/libz.so.$(VERSION) \
		$(tmpdir)/usr/lib/libc5-compat/libz.so.$(VERSION)
	ln -s libz.so.$(VERSION) \
		$(tmpdir)/usr/lib/libc5-compat/libz.so.$(SONAME)

middle-binary-zlib1-altdev: $(STAMP_DIR)/build-libc5
	install -d $(tmpdir)/usr/$(DEB_HOST_LIBC5_ARCH)-linuxlibc1/lib
	install -m 644 debian/libc5-tmp/lib/libz.a \
		$(tmpdir)/usr/$(DEB_HOST_LIBC5_ARCH)-linuxlibc1/lib/libz.a
	ln -s ../../lib/libc5-compat/libz.so.$(SONAME) \
		$(tmpdir)/usr/$(DEB_HOST_LIBC5_ARCH)-linuxlibc1/lib/libz.so

	install -d $(tmpdir)/usr/$(DEB_HOST_LIBC5_ARCH)-linuxlibc1/include
	install -m 644 debian/libc5-tmp/include/zlib.h debian/libc5-tmp/include/zconf.h \
		$(tmpdir)/usr/$(DEB_HOST_LIBC5_ARCH)-linuxlibc1/include/

	install -d $(tmpdir)/usr/share/doc

# 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 clean checkroot
