#!/usr/bin/make -f

%:
	dh $@ --with python2 --buildsystem=cmake --parallel

# Python versions
PYVERSIONS=$(shell pyversions -v -r)
DEFAULT_PY=$(shell pyversions -v -d)
LIBPYSIDE_SOVERSION=1.0

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

# G++ versions
g++-version := $(shell readlink /usr/bin/g++ | sed -e 's/g++-\(.*\)\.\(.*\)/\1\2/')
g++-version-ge-4.5 := $(shell if test $(g++-version) -ge 45; then echo "yes"; else echo "no"; fi)

#### CONFIGURE ####

override_dh_auto_configure: $(PYVERSIONS:%=override_dh_auto_configure_dbg-%) $(PYVERSIONS:%=override_dh_auto_configure-%)

override_dh_auto_configure_dbg-%:
	mkdir -p build-$*-dbg
	dh_auto_configure -a --builddirectory=build-$*-dbg -- \
	-DCMAKE_VERBOSE_MAKEFILE=OFF \
	-DCMAKE_BUILD_TYPE:STRING="Debug" \
	-DCMAKE_SKIP_RPATH=true \
	-DLIB_SUFFIX=/$(DEB_HOST_MULTIARCH) \
	-DCMAKE_USE_PYTHON_VERSION="$*-dbg;$*_d;$*" \
	-DCTEST_TESTING_TIMEOUT=600 \
	-DUSE_XVFB=true \
	-DPYTHON_BASENAME=python$*-dbg

override_dh_auto_configure-%:
	mkdir -p build-$*
	dh_auto_configure -a --builddirectory=build-$* -- \
	-DCMAKE_VERBOSE_MAKEFILE=OFF \
	-DCMAKE_BUILD_TYPE:STRING="Release" \
	-DCMAKE_SKIP_RPATH=true \
	-DLIB_SUFFIX=/$(DEB_HOST_MULTIARCH) \
	-DCMAKE_USE_PYTHON_VERSION="$*" \
	-DCTEST_TESTING_TIMEOUT=600 \
	-DUSE_XVFB=true \
	-DPYTHON_BASENAME=python$* \
	-DDEFAULT_PYTHON_BASENAME=python${DEFAULT_PY}

#### BUILD ####

override_dh_auto_build: $(PYVERSIONS:%=override_dh_auto_build_dbg-%) $(PYVERSIONS:%=override_dh_auto_build-%)

override_dh_auto_build_dbg-%:
	dh_auto_build -a --builddirectory=build-$*-dbg

override_dh_auto_build-%:
	dh_auto_build -a --builddirectory=build-$*

#### INSTALL ####

override_dh_auto_install: $(PYVERSIONS:%=override_dh_auto_install_dbg-%) $(PYVERSIONS:%=override_dh_auto_install-%)

override_dh_auto_install_dbg-%:
	dh_auto_install -a --builddirectory=build-$*-dbg --destdir=debian/tmp-dbg

override_dh_auto_install-%:
	dh_auto_install -a --builddirectory=build-$*

#### Shared libs ####
override_dh_makeshlibs: $(PYVERSIONS:%=override_dh_makeshlibs-%)
	cat debian/libpyside${LIBPYSIDE_SOVERSION}.symbols-py* > debian/libpyside${LIBPYSIDE_SOVERSION}.symbols
	dh_makeshlibs -a

override_dh_makeshlibs-%:
	echo "libpyside-python$*.so.${LIBPYSIDE_SOVERSION} libpyside${LIBPYSIDE_SOVERSION} #MINVER#" > debian/libpyside${LIBPYSIDE_SOVERSION}.symbols-py$*
	cat debian/libpyside${LIBPYSIDE_SOVERSION}.symbols.pristine >> debian/libpyside${LIBPYSIDE_SOVERSION}.symbols-py$*
ifeq ($(g++-version-ge-4.5),yes)
	# g++ version is >= 4.5, add related symbols
	sed -e 's|^ _| (ge-g++4.5)_|g' debian/libpyside${LIBPYSIDE_SOVERSION}.symbols.g++-ge-4.5 >> debian/libpyside${LIBPYSIDE_SOVERSION}.symbols-py$*
else
	# g++ version is < 4.5, add related symbols
	sed -e 's|^ _| (lt-g++4.5)_|g' debian/libpyside${LIBPYSIDE_SOVERSION}.symbols.g++-lt-4.5 >> debian/libpyside${LIBPYSIDE_SOVERSION}.symbols-py$*
endif

#### STRIP ####
override_dh_strip:
	dh_strip -a --dbg-package=python-pyside-dbg --exclude=-dbg.so --exclude=_d.so
	
#### TEST ####
override_dh_auto_test: $(PYVERSIONS:%=override_dh_auto_test_dbg-%) $(PYVERSIONS:%=override_dh_auto_test-%)

override_dh_auto_test_dbg-%:
	- dh_auto_test -a --builddirectory=build-$*-dbg

override_dh_auto_test-%:
	- dh_auto_test -a --builddirectory=build-$*

#### usr/share/doc/* symlinks ####
override_dh_link:
	# Replace doc directories by symlinks
	for p in `dh_listpackages -a -Nlibpyside${LIBPYSIDE_SOVERSION}`; do \
		rm -Rf debian/$$p/usr/share/doc/$$p; \
		ln -sf libpyside${LIBPYSIDE_SOVERSION} debian/$$p/usr/share/doc/$$p ; \
	done
	dh_link

#### CLEAN ####
override_dh_auto_clean:
	rm -rf build-*
	cd tests; rm -Rf *.pyc */*.pyc */*/*.pyc */*/*/*.pyc
	rm -rf debian/tmp-dbg
	rm -f debian/libpyside${LIBPYSIDE_SOVERSION}.symbols
	rm -f debian/libpyside${LIBPYSIDE_SOVERSION}.symbols-py*

#### DEBIAN INSTALL ####

override_dh_install: override_dh_install_3

override_dh_install_1:
ifneq (,$(filter python-pyside-dbg, $(shell dh_listpackages)))
	# Move the debug .so's right in place
	rename 's/(debian\/tmp-dbg\/)(.*)\.so(.*)$$/debian\/tmp\/$$2_d.so$$3/'\
		debian/tmp-dbg/usr/lib/python*/*-packages/PySide/*.so
	rename 's/(debian\/tmp-dbg\/)(.*)\.so(.*)$$/debian\/tmp\/$$2.so$$3/'\
		debian/tmp-dbg/usr/lib/${DEB_HOST_MULTIARCH}/*.so*
	# Move the PySideConfig snippets for the debug flavours in the standard install directory
	rename 's/(debian\/tmp-dbg\/)(.*)$$/debian\/tmp\/$$2/'\
		debian/tmp-dbg/usr/lib/${DEB_HOST_MULTIARCH}/cmake/PySide-*/*-dbg.cmake
endif
ifneq (,$(filter libpyside$(LIBPYSIDE_SOVERSION), $(shell dh_listpackages)))
	# Setup the default version symbolic links
	ln -sf libpyside-python${DEFAULT_PY}.so.${LIBPYSIDE_SOVERSION} \
		debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libpyside${LIBPYSIDE_SOVERSION}.so
	ln -sf libpyside${LIBPYSIDE_SOVERSION}.so debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libpyside.so
endif

override_dh_install_2: override_dh_install_1
	# Do the legacy install for the rest
	dh_install -a --list-missing

override_dh_install_3: override_dh_install_2
ifneq (,$(filter python-pyside-dbg, $(shell dh_listpackages)))
	# Move the debug library to the correct package.
	mkdir -p debian/python-pyside-dbg/usr/lib/${DEB_HOST_MULTIARCH}/
	rename 's/(debian\/libpyside(-dev|${LIBPYSIDE_SOVERSION}))(.*)-dbg\.so(.*)$$/debian\/python-pyside-dbg\/$$3-dbg.so$$4/' \
		debian/libpyside*/usr/lib/${DEB_HOST_MULTIARCH}/*-dbg.so*
	# Move the debug cmake files to the correct package
	mkdir -p debian/python-pyside-dbg/usr/lib/${DEB_HOST_MULTIARCH}/cmake/`basename debian/libpyside-dev/usr/lib/${DEB_HOST_MULTIARCH}/cmake/PySide-*`
	rename 's/(debian\/libpyside-dev\/)(.*)-dbg\.cmake/debian\/python-pyside-dbg\/$$2-dbg.cmake/'\
	              debian/libpyside-dev/usr/lib/${DEB_HOST_MULTIARCH}/cmake/PySide-*/*-dbg.cmake
endif

override_dh_gencontrol:
	debian/dh_pycmakedeps --modules-root=PySide/
	dh_gencontrol

override_dh_builddeb:
	# XZ-compress the huge python-pyside-dbg.
	dh_builddeb -ppython-pyside-dbg -- -Zxz
	dh_builddeb --remaining-packages
