#!/usr/bin/make -f
# Copyright  2002,2003 Colin Walters <walters@verbum.org>
# Copyright  2003 Daniel Stone <daniels@debian.org>
# Copyright  2006 Sjoerd Simons <sjoerd@debian.org>

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

CFLAGS += -Wall -g -O$(if $(findstring noopt,$(DEB_BUILD_OPTIONS)),0,2)

PYVERS := $(shell pyversions --requested --version debian/control)
PYDEFAULTVER := $(shell pyversions --default --version)

ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
	CONFIGURE_FLAGS += --build=$(DEB_BUILD_GNU_TYPE)
else
	CONFIGURE_FLAGS += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
endif

CONFIGURE_FLAGS += \
	--prefix=/usr \
	--docdir=/usr/share/doc/deleteme

# We build the documentation using Debian's default Python version, as an
# extra build pass.
build-%/configure-stamp:
	dh_testdir
	mkdir -p build-$*
	case $* in \
		*-dbg) \
			CFLAGS="$(CFLAGS) -g -O0"; \
			export CFLAGS; \
			;; \
	esac; \
	maybe_disable_doc="--disable-html-docs --disable-api-docs"; \
	PYTHON="/usr/bin/python$*"; \
	if test doc = $*; then \
		maybe_disable_doc=""; \
		PYTHON="/usr/bin/python"; \
	fi; \
	cd build-$* && PYTHON=$$PYTHON ../configure \
		$(CONFIGURE_FLAGS) $$maybe_disable_doc
	touch $@

build-%/build-stamp: build-%/configure-stamp
	dh_testdir
	PYTHON=/usr/bin/python$* $(MAKE) -C build-$*
	touch $@

build-doc/build-doc-stamp: build-doc/configure-stamp
	dh_testdir
	PYTHON=/usr/bin/python $(MAKE) -C build-doc
	touch $@

build: build-arch
#build: build-indep
build-arch: $(PYVERS:%=build-%/build-stamp) $(PYVERS:%=build-%-dbg/build-stamp)
build-indep: build-doc/build-doc-stamp

install-clean:
	dh_testdir
	dh_testroot
	dh_prep

install-%: build-%/build-stamp
	dh_testdir
	dh_testroot
	$(MAKE) -C build-$* install DESTDIR=$(CURDIR)/debian/python-dbus
	# keep a copy of /usr/include/debian-python.h and
	# /usr/lib/pkgconfig/debian-python.pc to verify they match later
	cp debian/python-dbus/usr/include/dbus-1.0/dbus/dbus-python.h debian/tmp-$*.h
	cp debian/python-dbus/usr/lib/pkgconfig/dbus-python.pc debian/tmp-$*.pc

dbg-install-%: build-%-dbg/build-stamp
	dh_testdir
	dh_testroot
	$(MAKE) -C build-$*-dbg install DESTDIR=$(CURDIR)/debian/python-dbus-dbg
	find debian/python-dbus-dbg ! -type d ! -name '*.so' -print0 | xargs -0 rm -f
	find debian/python-dbus-dbg -depth -empty -exec rmdir {} \;

install-arch: build-arch install-clean $(PYVERS:%=install-%) $(PYVERS:%=dbg-install-%)
	rm -f debian/python-dbus/usr/lib/python*/*-packages/*.la
	rm -rf debian/python-dbus/usr/share/doc/deleteme
	rm -f debian/python-dbus-dbg/usr/lib/python*/*-packages/*.la
	rm -rf debian/python-dbus-dbg/usr/share/doc/deleteme
	# compare installed .pc and .h, asserting that the ones all versions
	# wanted are the same as what we ended up with
	for v in $(PYVERS); do \
		diff --brief debian/python-dbus/usr/include/dbus-1.0/dbus/dbus-python.h \
			debian/tmp-$$v.h || exit 1; \
		diff --brief debian/python-dbus/usr/lib/pkgconfig/dbus-python.pc \
			debian/tmp-$$v.pc || exit 1; \
	done
	rm -f debian/tmp-*.pc debian/tmp-*.h
	for i in $$(find debian/python-dbus-dbg -name '*.so'); do \
		b=$$(basename $$i .so); \
		mv $$i $$(dirname $$i)/$${b}_d.so; \
	done

clean::
	dh_testdir
	dh_testroot
	rm -Rf debian/tmp-*
	rm -Rf build-*
	-test -f config.sub && \
		test -r /usr/share/misc/config.sub && \
		cp -f /usr/share/misc/config.sub config.sub
	-test -f config.guess && \
		test -r /usr/share/misc/config.guess && \
		cp -f /usr/share/misc/config.guess config.guess
	find dbus -name '*.py[co]' -print0 | xargs -0 rm -f
	dh_clean

binary-indep: build-indep
	dh_testdir
	dh_testroot
	dh_install -i
	dh_installchangelogs ChangeLog -i
	dh_installdocs -i
	dh_installexamples -i
	dh_compress -i -X.js
	dh_fixperms -i
	dh_installdeb -i
	dh_shlibdeps -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: build-arch install-arch
	dh_testdir
	dh_testroot
	dh_install -s
	dh_installdocs -s
	dh_installchangelogs ChangeLog -s
	dh_installexamples -s
	rm -rf debian/python-dbus-dbg/usr/share/doc/python-dbus-dbg
	dh_strip -ppython-dbus --dbg-package=python-dbus-dbg
	dh_link -s
	dh_compress -s -X.py -X.js
	dh_fixperms -s
	dh_python2 -s
	dh_installdeb -s
	dh_shlibdeps -s
	dh_gencontrol -s
	dh_md5sums -s
	dh_builddeb -s

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