#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# The default gzip compressor has been changed in dpkg >= 1.17.0.
deb_default_compress = $(shell LANG=C dpkg-deb --version | head -n1 | \
                         sed -e "s|.*version ||" -e "s| .*||" | \
                         xargs -r dpkg --compare-versions 1.17.0 lt \
                         && echo xz || echo gzip)
ifeq ($(deb_default_compress),gzip)
DEB_DH_BUILDDEB_ARGS += -- -Z$(shell dpkg-deb --help | grep -q ":.* xz[,.]" \
                               && echo xz || echo bzip2)
endif

export DEB_HOST_ARCH  		?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
export DEB_HOST_ARCH_CPU	?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
export DEB_HOST_MULTIARCH	?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

export DH_OPTIONS

PY3_PROVIDES=sip-tqt-py3api-7.0, sip-tqt-py3api-7.1
PYDIST=sip $(shell python -c "a=[i.strip() for i in '$(PY3_PROVIDES)'.split(',')]; print sorted(a, reverse=True)[0]")

INSTDIR=$(CURDIR)/debian

CFLAGS=

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0 -g
else
	CFLAGS += -O2 -g
endif

PYTHONS := $(shell py3versions -vr)

-include /usr/share/python3/python.mk
ifeq (,$(py_sitename))
py_sitename = site-packages
py_libdir = /usr/lib/python$(subst python,,$(1))/site-packages
py_sitename_sh = $(py_sitename)
py_libdir_sh = $(py_libdir)
endif


.PRECIOUS: build-%/configure-stamp dbg-build-%/configure-stamp

configure: $(PYTHONS:%=build-%/configure-stamp) $(PYTHONS:%=dbg-build-%/configure-stamp)

build-%/configure-stamp:
	dh_testdir
	mkdir -p build-$*
	cd build-$* \
		&& python$* ../configure.py \
			-d /usr/lib/python$*/$(call py_sitename,$*) \
			-u STRIP="" CFLAGS="${CFLAGS} -I/usr/include/tqt -I/usr/include/tqt3 -I/usr/include/qt3" CFLAGS_RELEASE="" CXXFLAGS="${CFLAGS} -I/usr/include/tqt -I/usr/include/tqt3 -I/usr/include/qt3" CXXFLAGS_RELEASE=""
	touch $@

dbg-build-%/configure-stamp:
	dh_testdir
	mkdir -p dbg-build-$*
	cd dbg-build-$* \
		&& python$*-dbg ../configure.py \
			-d /usr/lib/python$*/$(call py_sitename,$*) \
			-u CFLAGS="-O0 -g -I/usr/include/tqt -I/usr/include/tqt3 -I/usr/include/qt3" CFLAGS_RELEASE="" CXXFLAGS="-O0 -g -I/usr/include/tqt -I/usr/include/tqt3 -I/usr/include/qt3" CXXFLAGS_RELEASE="" STRIP=""
	touch $@


build: $(PYTHONS:%=build-%/build-stamp) $(PYTHONS:%=dbg-build-%/build-stamp)

build-%/build-stamp: build-%/configure-stamp
	dh_testdir
	$(MAKE) -C build-$*
	touch $@

dbg-build-%/build-stamp: dbg-build-%/configure-stamp
	dh_testdir
	$(MAKE) -C dbg-build-$*
	touch $@


clean:
	dh_testdir
	dh_testroot
	rm -rf *-stamp siputils.pyc $(PYTHONS:%=build-%) $(PYTHONS:%=dbg-build-%)
	dh_clean debian/python3-sip.pydist

install-arch: build
	dh_testdir
	dh_testroot
	dh_prep -a
	echo "python3:Provides=$(PY3_PROVIDES)" >> debian/python3-sip-tqt.substvars
	dh_installdirs -a
	# This is needed to enforce that the install-arch-% rules are
	# not run in parallel. Both rules install into the same directory,
	# and therefore might try to access the same files at the same time.
	# Therefore, instead of depending on the install-arch-% rules,
	# we invoke them explicitly.
	for p in $(PYTHONS) ; do \
		$(MAKE) -f debian/rules install-arch-$$p;\
	done

	for i in $$(find debian/python3-sip-tqt-dbg -name '*.so'); do \
		b=$$(basename $$i .so); \
		mv $$i $$(dirname $$i)/$${b}_d.so; \
	done
	find debian/python3-sip-tqt-dbg ! -type d ! -name '*_d.*' | xargs rm -f
	find debian/python3-sip-tqt-dbg -depth -empty -exec rmdir {} \;

	dh_install -a --sourcedir=$(CURDIR)/debian/tmp

install-arch-3.%:
	$(MAKE) -C build-3.$* install DESTDIR=$(CURDIR)/debian/tmp
	$(MAKE) -C dbg-build-3.$* install DESTDIR=$(CURDIR)/debian/python3-sip-tqt-dbg
	mkdir -p debian/python3-sip-tqt/usr/lib/python3.$*/dist-packages/
	install -m 644 -o root -g root debian/sip_tqt_config_py3.py debian/python3-sip-tqt/usr/lib/python3.$*/dist-packages/sip_tqt_config.py
	install -m 644 -o root -g root build-3.$*/sip_tqt_config.py debian/python3-sip-tqt/usr/lib/python3.$*/dist-packages/sip_tqt_config_nd.py
	install -m 644 -o root -g root dbg-build-3.$*/sip_tqt_config.py debian/python3-sip-tqt-dbg/usr/lib/python3.$*/dist-packages/sip_tqt_config_d.py
	mkdir -p debian/python3-sip-tqt-dev$$(python3.$* -c 'import sysconfig; print (sysconfig.get_path("include"))')
	install -m 644 -o root -g root siplib/sip-tqt.h debian/python3-sip-tqt-dev$$(python3.$* -c 'import sysconfig; print (sysconfig.get_path("include"))')/
	mkdir -p debian/python3-sip-tqt-dev/$$(python3.$*-dbg -c 'import sysconfig; print (sysconfig.get_path("include"))')
	ln -s ../$$(python3.$* -c 'import sysconfig; print (sysconfig.get_path("include"))' | xargs basename)/sip-tqt.h \
	    debian/python3-sip-tqt-dev/$$(python3.$*-dbg -c 'import sysconfig; print (sysconfig.get_path("include"))')/sip-tqt.h
	mkdir -p debian/python3-sip-tqt-dev/usr/lib/python3.$*/dist-packages
	install -m 644 -o root -g root sip_tqt_distutils.py debian/python3-sip-tqt-dev/usr/lib/python3.$*/dist-packages


# 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_installman
	dh_installchangelogs
	dh_installdocs -A
	dh_installexamples
	dh_link
# don't call strip twice, it's in binary-common
ifneq (,$(findstring -a, $(DH_OPTIONS)))
	DH_OPTIONS= dh_strip -ppython3-sip-tqt-dev
	DH_OPTIONS= dh_strip -ppython3-sip-tqt -Npython3-sip-tqt-dev --dbg-package=python3-sip-tqt-dbg
	rm -rf debian/python3-sip-tqt-dbg/usr/share/doc/python3-sip-tqt-dbg
	mkdir -p debian/python3-sip-tqt-dbg/usr/share/doc
	ln -s python3-sip-tqt debian/python3-sip-tqt-dbg/usr/share/doc/python3-sip-tqt-dbg
endif
	dh_compress -X.inv
	dh_fixperms
	dh_python3 --no-dbg-cleaning
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb $(DEB_DH_BUILDDEB_ARGS)

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

# Build architecture dependant packages using the common target.
binary-arch: install-arch
	$(MAKE) -f debian/rules DH_OPTIONS=-a binary-common

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