#!/usr/bin/make -f
# 
# Script for building YAZ from source to .deb-packages.
#
# Created by Morten Hendriksen <mgh@dbc.dk> based on sample
# debhelper script from Joey Hess. GPL copyright 1997 to 1999 by Joey Hess.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# This is the debhelper compatability version to use.
export DH_COMPAT=2

YAZ_WITH_SSL?=1
CONFIG_FLAGS=--enable-static --enable-shared --enable-tcpd --prefix=/usr

# Enable parallel builds if CONCURRENCY_LEVEL is set
ifdef CONCURRENCY_LEVEL
MCFLAGS=-j$(CONCURRENCY_LEVEL)
else
MCFLAGS=
endif

ifeq ($(YAZ_WITH_SSL),1)
export BUILD_SSL=1
SSL_FLAGS=--with-openssl
else
SSL_FLAGS=
endif

YAZ_VERSION=1.9.1
YAZSRCDIR?=$(shell pwd)
# If this is not IndexData's release, then it is a cvs-checkout. Go cheat!
#   YAZ_VERSION:=$(YAZ_VERSION)-$(shell date -r$(YAZSRCDIR)/CVS +"CVS%Y%m%d")
export YAZ_VERSION

# Local library path for linking with right dependencies
LOCAL_LINK=-ldebian/yaz-runtime/usr/lib:debian/yaz-ssl/usr/lib

$(YAZSRCDIR)/configure: $(YAZSRCDIR)/configure.in
	cd $(YAZSRCDIR); sh buildconf.sh

stamp-configure: $(YAZSRCDIR)/configure
	dh_testdir

	-rm -rf build
	mkdir build
	cd build; $(YAZSRCDIR)/configure $(CONFIG_FLAGS) $(SSL_FLAGS)
	touch stamp-configure

build: stamp-build
stamp-build: stamp-configure
	dh_testdir

	# Add here commands to compile the package.
	$(MAKE) -C build $(MCFLAGS)

	touch stamp-build

clean:
	dh_testdir
	#dh_testroot
	-rm -f stamp-*
	-rm -rf build

	dh_clean
	-rm -rf debian/yaz-runtime debian/yaz-ssl debian/yaz-devel \
	        debian/with-ssl debian/*.debhelper debian/substvars debian/shlibs.yaz-*

install: stamp-install
stamp-install: stamp-build
	dh_testdir
	dh_testroot
	dh_clean -k -a
	dh_installdirs -a

	# Add here commands to install the package into debian/tmp.
	-mkdirhier debian/tmp/usr
	$(MAKE) -C build install prefix=`pwd`/debian/tmp/usr

	touch stamp-install

# Build architecture-independent files here.
binary-indep: build install
	dh_testdir
	dh_testroot
	dh_installdocs -p yaz-doc doc/*.html doc/*.pdf doc/*.png
	dh_installchangelogs -p yaz-doc
	dh_link -p yaz-doc
	dh_strip -p yaz-doc
	dh_compress -p yaz-doc
	dh_fixperms -p yaz-doc
	dh_gencontrol -p yaz-doc
	dh_md5sums -p yaz-doc

	dh_builddeb -p yaz-doc

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
ifeq ($(YAZ_WITH_SSL),1)
	dh_movefiles -p yaz-ssl usr/bin/*ssl usr/lib/libyazssl* 
endif
	dh_movefiles -p yaz-devel  usr/share/aclocal usr/lib/*.a usr/lib/*.la usr/lib/*.so usr/include usr/bin/yaz-config usr/bin/yaz-comp
	dh_movefiles -p yaz-runtime usr/lib usr/share/yaz usr/bin
	dh_installexamples -p yaz-devel

	cp LICENSE debian/copyright
	cp CHANGELOG changelog
	dh_installdocs --all README TODO changelog debian/copyright

	dh_installchangelogs
	dh_link
	dh_strip
	dh_compress -a
	dh_fixperms -a

	dh_installdeb -p yaz-runtime
	dh_installdeb -p yaz-devel
	dh_installman -p yaz-devel doc/yaz-config.1
	dh_undocumented -p yaz-devel yaz-comp.1
	dh_installman -p yaz-runtime doc/yaz-client.1 doc/yaz-ztest.8 doc/yaz.7 doc/zoomsh.1
	echo "libyaz 1 yaz-runtime" > debian/yaz-runtime/DEBIAN/shlibs
	echo "libyazthread 1 yaz-runtime" >> debian/yaz-runtime/DEBIAN/shlibs
	echo "libyazmalloc 1 yaz-runtime" >> debian/yaz-runtime/DEBIAN/shlibs
	chmod 644 debian/yaz-runtime/DEBIAN/shlibs
	dh_shlibdeps -p yaz-runtime $(LOCAL_LINK) 
ifeq ($(YAZ_WITH_SSL),1)
	dh_installdeb -p yaz-ssl
	dh_installman -p yaz-ssl doc/yaz-client-ssl.1 doc/yaz-ztest-ssl.8
	echo "libyazssl 1 yaz-ssl" >> debian/yaz-ssl/DEBIAN/shlibs
	chmod 644 debian/yaz-ssl/DEBIAN/shlibs
	dh_shlibdeps -p yaz-ssl $(LOCAL_LINK)
	cat debian/postinst >> debian/yaz-ssl/DEBIAN/postinst
endif
	cat debian/postinst >> debian/yaz-runtime/DEBIAN/postinst

	dh_gencontrol -p yaz-runtime
	dh_md5sums -p yaz-runtime

	dh_gencontrol -p yaz-devel
	dh_md5sums -p yaz-devel

ifeq ($(YAZ_WITH_SSL),1)
	dh_gencontrol -p yaz-ssl
	dh_md5sums -p yaz-ssl
endif
	# Go kill those CVS-dirs before build
	-find debian/tmp -type d -name CVS | xargs rm -rf
	# For some reason it is necessary to remove empty-dirs in yaz-doc
	-rm -rf debian/tmp/usr/include debian/tmp/usr/share/aclocal debian/tmp/usr/lib debian/tmp/usr/bin \
	        debian/tmp/usr/share/yaz

	dh_builddeb -p yaz-runtime
	dh_builddeb -p yaz-devel
ifeq ($(YAZ_WITH_SSL),1)
	dh_builddeb -p yaz-ssl
endif


binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install install-stamp configure

yazrelease:
	# Conveniency target for building both SSL and non-ssl versions
	dh_testdir
	# Non-ssl version and source
	dpkg-buildpackage $(EXTRA_OPTS) -rfakeroot
	# SSL version
	-YAZ_WITH_SSL=1 dpkg-buildpackage $(EXTRA_OPTS) -rfakeroot -B
