#!/usr/bin/make -f
# -*- makefile -*-

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie

# Get the supported Python versions
PY2VERS = $(shell pyversions -r -v)
PY3VERS = $(shell py3versions -r -v)

LAST_CHANGE=$(shell dpkg-parsechangelog -S Date)
BUILD_DATE=$(shell LC_ALL=C date -u "+%B %d, %Y" -d "$(LAST_CHANGE)")
SPHINXOPTS := -D today=\"$(BUILD_DATE)\"
SPHINXOPTS += -D html_last_updated_fmt=\"$(BUILD_DATE)\"

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
export CFLAGS ?= -O0
endif

ifneq ($(wildcard /usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial/libhdf5.so),)
  export HDF5_DIR := /usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial
endif

%:
	dh $@ --with python2,python3,sphinxdoc --buildsystem=python_distutils


build-python%:
	python$* setup.py build
	python$*-dbg setup.py build


override_dh_auto_build: $(PY3VERS:%=build-python%)
ifeq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS)))
	$(MAKE) PWD=$(CURDIR) SPHINXOPTS="$(SPHINXOPTS)"
	$(MAKE) -C doc PWD=$(CURDIR) SPHINXOPTS="$(SPHINXOPTS)" latexpdf
	mv doc/build/latex/usersguide-*.pdf doc/usersguide.pdf
else
	$(MAKE) ANNOUNCE.txt
	$(MAKE) -C src all
	mkdir -p doc/html
	touch doc/usersguide.pdf
endif
	dh_auto_build --buildsystem=python_distutils


install-python%:
	python$* setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb
	python$*-dbg setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb


override_dh_auto_install: $(PY3VERS:%=install-python%)
	dh_auto_install


override_dh_install:
	# Install everything excluding the *.so extensions to python(3)-tables
	dh_install -X"*.so" -X"*.h5" -X"*.xbm" -X"*.dat" -X"*.mat" "debian/tmp/usr/lib/python2*" -p python-tables
	dh_install -X"*.so" -X"*.h5" -X"*.xbm" -X"*.dat" -X"*.mat" "debian/tmp/usr/lib/python3*" -p python3-tables

	# Install the extensions to python(3)-tables-lib
	dh_install -X"*_d.so" "debian/tmp/usr/lib/python2*/*-packages/tables/*.so" -p python-tables-lib
	find debian/python-tables-lib -name '*_d.so' | xargs -r rm -f
	dh_install -X"*dmu.so" -X"*dm.so" "debian/tmp/usr/lib/python3*/*-packages/tables/*.so" -p python3-tables-lib
	find debian/python3-tables-lib -name '*.cpython-??dm-*.so' | xargs -r rm -f

	# Install the debug extensions to python(3)-tables-dbg
	dh_install "debian/tmp/usr/lib/python2*/*-packages/tables/*_d.so" -p python-tables-dbg
	dh_install "debian/tmp/usr/lib/python3*/*-packages/tables/*.cpython-??dm*.so" -p python3-tables-dbg

	# Continue with regular dh_install
	dh_install -p python-tables-doc
	dh_install -p python-tables-data

	# link data files
	for py in $(PY2VERS); do \
		for f in debian/tmp/usr/lib/python2*/*-packages/tables/tests/*.h5 \
		         debian/tmp/usr/lib/python2*/*-packages/tables/tests/*.mat; do \
			dh_link -p python-tables usr/share/python-tables/tests/$$(basename $$f) usr/lib/python$$py/dist-packages/tables/tests/$$(basename $$f); \
		done; \
		for f in debian/tmp/usr/lib/python2*/*-packages/tables/nodes/tests/*.h5 \
		         debian/tmp/usr/lib/python2*/*-packages/tables/nodes/tests/*.xbm \
		         debian/tmp/usr/lib/python2*/*-packages/tables/nodes/tests/*.dat; do \
			dh_link -p python-tables usr/share/python-tables/nodes/tests/$$(basename $$f) usr/lib/python$$py/dist-packages/tables/nodes/tests/$$(basename $$f); \
		done; \
	done

	for f in debian/tmp/usr/lib/python3*/*-packages/tables/tests/*.h5 \
	         debian/tmp/usr/lib/python3*/*-packages/tables/tests/*.mat; do \
		dh_link -p python3-tables usr/share/python-tables/tests/$$(basename $$f) usr/lib/python3/dist-packages/tables/tests/$$(basename $$f); \
	done
	for f in debian/tmp/usr/lib/python3*/*-packages/tables/nodes/tests/*.h5 \
	         debian/tmp/usr/lib/python3*/*-packages/tables/nodes/tests/*.xbm \
	         debian/tmp/usr/lib/python3*/*-packages/tables/nodes/tests/*.dat; do \
		dh_link -p python3-tables usr/share/python-tables/nodes/tests/$$(basename $$f) usr/lib/python3/dist-packages/tables/nodes/tests/$$(basename $$f); \
	done

	dh_numpy
	dh_numpy3
	# using override_dh_auto_test causes problems for dbg versions
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
	# https://github.com/PyTables/PyTables/issues/485
	mkdir -p $(CURDIR)/tmp-locales
	localedef -i /usr/share/i18n/locales/en_US -c -f UTF-8 \
		-A /usr/share/locale/locale.alias \
		$(CURDIR)/tmp-locales/en_US.UTF-8
	set -e -x; \
	for py in $(PY2VERS); do \
		cd $(CURDIR)/build/lib.*-$$py; \
		env PYTHONPATH=. \
			LOCPATH=$(CURDIR)/tmp-locales LC_ALL=en_US.UTF-8 \
			python$$py tables/tests/test_all.py -vvv; \
		cd $(CURDIR)/debian/tmp/usr/lib/python$$py/dist-packages; \
		env PYTHONPATH=. \
			LOCPATH=$(CURDIR)/tmp-locales LC_ALL=en_US.UTF-8 \
			python$$py-dbg tables/tests/test_all.py -vvv; \
	done
	set -e -x; \
	for py in $(PY3VERS); do \
		cd $(CURDIR)/build/lib.*-$$py; \
		env PYTHONPATH=. \
			LOCPATH=$(CURDIR)/tmp-locales LC_ALL=en_US.UTF-8 \
			python$$py tables/tests/test_all.py -vvv; \
		#cd $(CURDIR)/debian/tmp/usr/lib/python3/dist-packages; \
		#env PYTHONPATH=. \
		#	LOCPATH=$(CURDIR)/tmp-locales LC_ALL=en_US.UTF-8 \
		#	python$$py-dbg tables/tests/test_all.py -vvv; \
	done
endif


override_dh_auto_clean:
	# Avoid unnecessary cythonization (see
	# https://github.com/PyTables/PyTables/issues/122)
	#dh_auto_clean --buildsystem=python_distutils
	$(MAKE) distclean
	rm -f doc/*.pdf


override_dh_sphinxdoc:
ifeq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS)))
	dh_sphinxdoc -ppython-tables-doc
	rm -f $(CURDIR)/debian/python-tables-doc/usr/share/doc/python-tables-doc/html/_static/jquery.cookie.js
endif


override_dh_installchangelogs:
	dh_installchangelogs -k RELEASE_NOTES.txt


override_dh_compress:
	dh_compress -X.txt -X.pdf -X.py -X.h5


.PHONY: override_dh_auto_build override_dh_auto_install override_dh_auto_clean \
        override_dh_sphinxdoc override_dh_install \
        override_dh_installchangelogs override_dh_compress
