#!/usr/bin/make -f

# Python versions (default is first)
PYVERSIONS := $(shell pyversions -v -r)
DEFAULT_PY := $(shell pyversions -v -d)
PY3VERSIONS := $(shell py3versions -v -r)
DEFAULT_PY3 := $(shell py3versions -v -d)
LIBSHIBOKEN_SOVERSION := 2.0

# CLang/LLVM
CLANG_INSTALL_DIR := $(shell llvm-config --prefix)

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

CMAKE_COMMON_OPTIONS := -DCMAKE_SKIP_RPATH=true \
			-DLIB_SUFFIX=/$(DEB_HOST_MULTIARCH) \
			-DBUILD_TESTS=0

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

#### CONFIGURE ####
override_dh_auto_configure:
	# RELEASE
	for PYX in $(shell pyversions -rv) ; do \
	    mkdir -p build-$${PYX}; \
	    CLANG_INSTALL_DIR=$(CLANG_INSTALL_DIR) dh_auto_configure -a --builddirectory=build-$${PYX} -- \
	                                           $(CMAKE_COMMON_OPTIONS) \
	                                          -DCMAKE_BUILD_TYPE:STRING="Release" \
	                                          -DPYTHON_LIBRARY=/usr/lib/$(DEB_HOST_MULTIARCH)/libpython$${PYX}.so \
	                                          -DPYTHON_INCLUDE_DIR=/usr/include/python$${PYX} \
	                                          -DPYTHON_EXECUTABLE=/usr/bin/python$${PYX} ; \
	done

	for PYX in $(shell py3versions -rv) ; do \
	    mkdir -p build-$${PYX}; \
	    CLANG_INSTALL_DIR=$(CLANG_INSTALL_DIR) dh_auto_configure -a --builddirectory=build-$${PYX} -- \
	                                          $(CMAKE_COMMON_OPTIONS) \
	                                         -DCMAKE_BUILD_TYPE:STRING="Release" \
	                                         -DPYTHON_LIBRARY=/usr/lib/$(DEB_HOST_MULTIARCH)/libpython$${PYX}m.so \
	                                         -DPYTHON_INCLUDE_DIR=/usr/include/python$${PYX}m \
	                                         -DPYTHON_EXECUTABLE=/usr/bin/python$${PYX} ; \
	done
	
	# DEBUG
	for PYX in $(shell pyversions -rv) ; do \
	    mkdir -p build-$${PYX}-dbg; \
	    CLANG_INSTALL_DIR=$(CLANG_INSTALL_DIR) dh_auto_configure -a --builddirectory=build-$${PYX}-dbg -- \
	                                         $(CMAKE_COMMON_OPTIONS) \
	                                         -DCMAKE_BUILD_TYPE:STRING="Debug" \
	                                         -DPYTHON_LIBRARY=/usr/lib/$(DEB_HOST_MULTIARCH)/libpython$${PYX}.so \
	                                         -DPYTHON_DEBUG_LIBRARY=/usr/lib/$(DEB_HOST_MULTIARCH)/libpython$${PYX}_d.so \
	                                         -DPYTHON_INCLUDE_DIR=/usr/include/python$${PYX}_d \
	                                         -DPYTHON_EXECUTABLE=/usr/bin/python$${PYX}-dbg ; \
	done

	for PYX in $(shell py3versions -rv) ; do \
	    mkdir -p build-$${PYX}-dbg; \
	    CLANG_INSTALL_DIR=$(CLANG_INSTALL_DIR) dh_auto_configure -a --builddirectory=build-$${PYX}-dbg -- \
	                                         $(CMAKE_COMMON_OPTIONS) \
	                                         -DCMAKE_BUILD_TYPE:STRING="Debug" \
	                                         -DPYTHON_LIBRARY=/usr/lib/$(DEB_HOST_MULTIARCH)/libpython$${PYX}m.so \
	                                         -DPYTHON_DEBUG_LIBRARY=/usr/lib/$(DEB_HOST_MULTIARCH)/libpython$${PYX}dm.so \
	                                         -DPYTHON_INCLUDE_DIR=/usr/include/python$${PYX}dm \
	                                         -DPYTHON_EXECUTABLE=/usr/bin/python$${PYX}dm ; \
	done

#### BUILD ####
override_dh_auto_build:
	for PYX in $(shell pyversions -rv) $(shell py3versions -rv) ; do \
	    dh_auto_build -a --builddirectory=build-$${PYX}; \
	    dh_auto_build -a --builddirectory=build-$${PYX}-dbg; \
	done

#### INSTALL ####
override_dh_auto_install:
	for PYX in $(shell pyversions -rv) ; do \
	    dh_auto_install -a --builddirectory=build-$${PYX} --destdir=debian/tmp; \
	    dh_auto_install -a --builddirectory=build-$${PYX} --destdir=debian/tmp-py2; \
	    dh_auto_install -a --builddirectory=build-$${PYX}-dbg --destdir=debian/tmp-dbg; \
	done
	for PYX in $(shell py3versions -rv) ; do \
	    dh_auto_install -a --builddirectory=build-$${PYX} --destdir=debian/tmp; \
	    dh_auto_install -a --builddirectory=build-$${PYX} --destdir=debian/tmp-py3; \
	    dh_auto_install -a --builddirectory=build-$${PYX}-dbg --destdir=debian/tmp-dbg; \
	done

#### TEST ####
override_dh_auto_test:
	@echo "Tests skipped..."

#### CLEAN ####
override_dh_auto_clean:
	rm -rf build-*
	rm -rf debian/tmp
	rm -rf debian/tmp-*
	rm -f debian/libshiboken*.symbols
	rm -f debian/libshiboken*.symbols-py*
	rm -f debian/libshiboken-py3-*.symbols
	rm -f debian/libshiboken-py3-*.symbols-py*
	- rm -f tests/py3kcompat.pyc
	- rm -f tests/__pycache__/py3k*.cpython-*.pyc

#### DEBIAN INSTALL ####
override_dh_install:
	# Install the debug variant
	dh_install -pshiboken2-dbg --sourcedir=debian/tmp-dbg --list-missing
	# Install the debug variant
	dh_install -plibshiboken2.0 --sourcedir=debian/tmp-py2 --list-missing
	# Install the debug variant
	dh_install -plibshiboken-py3-2.0 --sourcedir=debian/tmp-py3 --list-missing
	# Install the other variants
	dh_install -a --fail-missing --remaining-packages

override_dh_installdocs:
	dh_sphinxdoc -pshiboken2-doc
