#!/usr/bin/make -f

SOURCE_DIR = $(dir $(firstword $(MAKEFILE_LIST)))/..

ifneq ($(shell dh_testversion '<<' 7.4.10 2>/dev/null && echo old),old)
dh_parallel = --parallel
endif

UPSTREAM_VERSION = $(shell cd $(SOURCE_DIR) && dpkg-parsechangelog | sed -n -r -e '/^Version: ([0-9.]+)([+]dfsg).*/ { s//\1/; p; q; }')
CMAKE_OPTIONS = -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON
CMAKE_PYTHON_OPTIONS = -DPYTHON_EXECUTABLE=/usr/bin/python$(1) -DPYTHON_INCLUDE_DIR=/usr/include/python$(1)/ -DPYTHON_LIBRARY=/usr/lib/libpython$(1).so -DBoost_PYTHON_LIBRARY_RELEASE=/usr/lib/libboost_python-py$$(echo $(1) | tr -d .).so
LDFLAGS = -Wl,--as-needed

# build target
# ============

.PHONY: build
build:
	+ dh build $(dh_parallel)

.PHONY: override_dh_auto_configure
override_dh_auto_configure: obj/CMakeCache.txt
override_dh_auto_configure: $(patsubst %,obj.%/CMakeCache.txt,$(shell pyversions -r))

obj/CMakeCache.txt:
	mkdir -p $(dir $(@))
	cd $(dir $(@)) && cmake .. $(CMAKE_OPTIONS) -DWITH_VIGRANUMPY=0

obj.python%/CMakeCache.txt:
	mkdir -p $(dir $(@))
	cd $(dir $(@)) && cmake .. $(CMAKE_OPTIONS) $(call CMAKE_PYTHON_OPTIONS,$(*))
	# We don't want to link with libpythonX.Y
	find $(dir $(@))/vigranumpy/ -name 'link.txt' -exec sed -i -e 's/ -lpython[0-9.]\+ / /g' {} +

.PHONY: override_dh_auto_build
override_dh_auto_build: obj/build-stamp
override_dh_auto_build: $(patsubst %,obj.%/build-stamp,$(shell pyversions -r))

obj/build-stamp: obj/CMakeCache.txt
	$(MAKE) -C $(dir $(@))
	chmod a-x vigranumpy/test/*.py # nosetest would skip executable *.py
	touch $(@)

obj.python%/build-stamp: obj.python%/CMakeCache.txt obj/build-stamp
	cd obj && find . -name '*.o' -o -name '*.so' -o -name '*.so.*' | xargs cp -v --parents -t ../$(dir $(@))
	$(MAKE) -C $(dir $(@))
	touch $(@)

.PHONY: override_dh_auto_test
ifeq ($(filter nocheck,$(DEB_BUILD_OPTIONS)),)
override_dh_auto_test: obj/test-stamp
override_dh_auto_test: $(patsubst %,obj.%/test-stamp,$(shell pyversions -r))
endif

obj/test-stamp: obj/build-stamp
	$(MAKE) check -C $(dir $(@))
	touch $(@)

obj.python%/test-stamp:: obj.python%/build-stamp
	$(MAKE) vigranumpytest -C $(dir $(@))
	touch $(@)

# binary and binary-* targets
# ===========================

.PHONY: binary
binary: binary-arch binary-indep

.PHONY: binary-arch
binary-arch:
	dh binary-arch

.PHONY: binary-indep
binary-indep:
	dh binary-indep

.PHONY: override_dh_auto_install
override_dh_auto_install: obj/install-stamp
override_dh_auto_install: $(patsubst %,obj.%/install-stamp,$(shell pyversions -r))

%/install-stamp: %/build-stamp
	$(MAKE) -C $(dir $(@)) install DESTDIR=$(CURDIR)/debian/tmp/
	touch $(@)

.PHONY: override_dh_shlibdeps
override_dh_shlibdeps:
	dh_shlibdeps
	# See <http://lists.debian.org/debian-python/2010/07/msg00042.html>:
	$(or $(wildcard /usr/bin/dh_numpy),debian/dh_numpy) -p python-vigra

.PHONY: override_dh_installdocs
ifneq ($(shell dh_listpackages | grep -x -F libvigraimpex-doc),)
override_dh_installdocs: doc/vigra/build-stamp
endif
ifneq ($(shell dh_listpackages | grep -x -F python-vigra-doc),)
override_dh_installdocs: doc/vigranumpy/build-stamp
endif
override_dh_installdocs:
	dh_installdocs -XLICENSE.txt -Xobjects.inv -Xdoctrees -X.buildinfo -Xbuild-stamp
	if cd debian/libvigraimpex-doc/usr/share/doc/libvigraimpex-doc/ && [ -d vigra ]; then \
		rm -Rf html; \
		mv vigra html; \
		sed -r -i \
			-e 's!(<a href=")LICENSE.txt(">)!\1/usr/share/doc/libvigraimpex-doc/copyright\2!g' \
			html/index.html; \
	fi
	if cd debian/python-vigra-doc/usr/share/doc/python-vigra-doc/ && [ -d vigranumpy ]; then \
		rm -Rf html; \
		mv vigranumpy html; \
	fi

doc/vigra/build-stamp: obj/build-stamp
	$(MAKE) doc_cpp -C obj/
	touch $(@)

doc/vigranumpy/build-stamp: obj.$(shell pyversions -d)/build-stamp doc/vigra/build-stamp
	ln -sf $(CURDIR)/vigranumpy/docsrc/c_api_replaces.txt obj.$(shell pyversions -d)/vigranumpy/docsrc/
	$(MAKE) doc_python -C obj.$(shell pyversions -d)/
	touch $(@)

.PHONY: override_dh_installchangelogs
override_dh_installchangelogs:
	sh debian/convert-changelog.sh < docsrc/credits_changelog.dxx > doc/changelog
	dh_installchangelogs doc/changelog

.PHONY: override_dh_installexamples
override_dh_installexamples:
	dh_installexamples
	find -path './debian/*/usr/share/doc/*/examples/*' -exec chmod a-x '{}' +

.PHONY: override_dh_compress
override_dh_compress:
	dh_compress -X.js -X_sources

# clean target
# ============

.PHONY: clean
clean:
	dh clean

.PHONY: override_dh_auto_clean
override_dh_auto_clean:
	rm -Rf obj*/
	find doc/ -type f -delete

# get-orig-source target
# ======================

.PHONY: get-orig-source
get-orig-source:
	sh $(SOURCE_DIR)/debian/get-orig-source.sh $(UPSTREAM_VERSION)

.NOTPARALLEL:

# vim:ts=4 sw=4 noet
