#!/usr/bin/make -f
# debian/rules for WvStreams, using debhelper.
#
# Based on the sample debian/rules under GNU copyright 1997 to 1999 by
# Joey Hess, with revisions by Bill Allombert in 2001.

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

# This has to be exported to make some magic below work.
export DH_OPTIONS

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

version:=$(shell awk -F= '/SO_VERSION=/{print $$2}' $(CURDIR)/configure.ac)
base=libwvstreams$(version)
# This is used the wvstreams makefile to set the .so links
PKG=$(CURDIR)/debian/${base}t64
PKGDEV=$(CURDIR)/debian/libwvstreams-dev
PKGDOC=$(CURDIR)/debian/${base}-doc
DOCDIR=$(PKGDOC)/usr/share/doc/$(base)-doc
# The embedded jquery.js is generated by Doxygen and can not be replaced 
# by the one provided by libjs-jquery.  
# For a rationale please see src::Doxygen/debian/README.jquery. 

CFLAGS = -Wall $(shell dpkg-buildflags --get CFLAGS; dpkg-buildflags --get CPPFLAGS)
LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)

ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -fno-tree-dce -fno-optimize-sibling-calls
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	INSTALL_PROGRAM += -s
endif

MAKEFLAGS += -j1 # parallel build broken

config.status:
	dh_testdir
	dh_autoreconf
	cp -f /usr/share/misc/config.sub config.sub
	cp -f /usr/share/misc/config.guess config.guess
	CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure \
		--host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
		--prefix=/usr --mandir=\$${prefix}/share/man \
		--infodir=\$${prefix}/share/info \
		--sysconfdir=/etc --localstatedir=/var \
		--disable-debug --disable-verbose \
		--with-openslp --with-dbus \
		--without-valgrind \
		--without-readline \

#Architecture
build: build-arch build-indep

build-arch: build-arch-stamp
build-arch-stamp: config.status

	# Add here commands to compile the arch part of the package.
	$(MAKE) VERBOSE=1 CXXOPTS="$(CFLAGS) -fPIC -DPIC -fno-tree-dce -fno-optimize-sibling-calls" COPTS="$(CFLAGS) -fPIC -DPIC"
	$(MAKE) VERBOSE=1 CXXOPTS="$(CFLAGS) -fPIC -DPIC" COPTS="$(CFLAGS) -fPIC -DPIC" uniconf/tests/uni
	touch build-arch-stamp

build-indep: build-stamp-indep
build-stamp-indep: config.status

	# Add here commands to compile the indep part of the package.
	#$(MAKE) doc
	$(MAKE) doxygen
	@# Don't build the SGML documentation, as it is uncompilable.
	@#$(MAKE) -C Docs/sgmlmanual html ps pdf
	touch build-stamp-indep

clean:
	dh_testdir
	dh_testroot
	rm -f configure include/wvautoconf.h.in argp/configure
	rm -f build-stamp build-arch-stamp build-stamp-indep #CONFIGURE-STAMP#

	# Add here commands to clean up after the build process.
	[ ! -f Docs/sgmlmanual/Makefile ] || $(MAKE) -C Docs/sgmlmanual clean
	rm -rf Docs/doxy-html
	[ ! -f xplc/Makefile ] || $(MAKE) -C xplc distclean
	[ ! -f Makefile ] || $(MAKE) distclean

	rm -f config.sub config.guess
	dh_clean
	dh_autoreconf_clean

install: install-indep install-arch
install-indep:
	dh_testdir
	dh_testroot
	dh_prep -i
	dh_installdirs -i

	# Add here commands to install the indep part of the package into
	# debian/<package>-doc.
	#INSTALLDOC#
	install -d $(DOCDIR)
	install -d $(DOCDIR)/html-api
	find Docs/doxy-html -type f -exec install -m644 '{}' $(DOCDIR)/html-api/ ';'
	find $(DOCDIR)/html-api/ -name "*.md5" -exec rm {} \; 

	dh_install -i
	install -Dm644 debian/libwvstreams$(version)-doc.lintian-override debian/libwvstreams$(version)-doc/usr/share/lintian/overrides/libwvstreams$(version)-doc


install-arch:
	dh_testdir
	dh_testroot
	dh_prep -s
	dh_installdirs -s

	# Add here commands to install the arch part of the package into
	# debian/tmp.
	#$(MAKE) install prefix=$(CURDIR)/debian/wvstreams/usr

	# Install library package

	# Temporary Fix to work around a bug in Debhelper
	$(MAKE) install-shared DESTDIR=$(CURDIR)/debian/tmp

	# Install development package
	$(MAKE) install-dev DESTDIR=$(PKGDEV)

	# Install lintian overrides
	dh_lintian
	install -Dm644 debian/libwvstreams-dev.lintian-override debian/libwvstreams-dev/usr/share/lintian/overrides/libwvstreams-dev


	dh_install -s

# Must not depend on anything. This is to be called by
# binary-arch/binary-indep
# in another 'make' thread.
binary-common:
	dh_testdir
	dh_testroot
	dh_installchangelogs ChangeLog
	dh_installdocs
	dh_installexamples
	dh_installinit
	dh_installman
	dh_link
	dh_strip --exclude=libwvtest.a
	dh_compress
	dh_fixperms
	dh_makeshlibs -plibwvstreams$(version)t64-base \
		      -plibwvstreams$(version)t64-extras \
		      -plibuniconf$(version)t64
	dh_installdeb
	dh_shlibdeps -L libwvstreams$(version)t64-base \
		     -L libwvstreams$(version)t64-extras \
		     -L libuniconf$(version)t64 \
		     -l debian/libwvstreams$(version)t64-base/usr/lib:debian/libwvstreams$(version)t64-extras/usr/lib:debian/libuniconf$(version)t64/usr/lib

# Build architecture independant packages using the common target.
binary-indep: build-indep install-indep
	$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture dependant packages using the common target.
binary-arch: build-arch install-arch
	$(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
	chmod a-x $(CURDIR)/debian/libwvstreams-dev/usr/lib/valgrind/wvstreams.supp
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

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