#!/usr/bin/make -f

export CFLAGS = $(shell dpkg-buildflags --get CFLAGS)
export CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
export LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)

DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

ifeq "$(DEB_BUILD_GNU_TYPE)" "$(DEB_HOST_GNU_TYPE)"
	configure_common_flags = \
		 --build $(DEB_HOST_GNU_TYPE)
else
	configure_common_flags = \
		 --build $(DEB_BUILD_GNU_TYPE) \
		 --host $(DEB_HOST_GNU_TYPE)
endif

configure_common_flags += \
	--prefix=/usr \
	--enable-ipv6 \
	--disable-silent-rules \

configure_main_flags = \
	--enable-easy \
	--enable-doxygen \

configure_non_main_flags = \
	--disable-easy \
	--disable-doxygen \

n_jobs = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
parallel = -j$(or $(n_jobs),1)

pythons = $(shell pyversions -r) $(shell py3versions -r)

.PHONY: clean
clean:
	dh_testdir
	dh_clean
	rm -f config.log
	rm -rf obj*/ autoconf-stamp

.PHONY: build build-arch build-indep
build build-arch: build-stamp
ifeq "$(filter nocheck,$(DEB_BUILD_OPTIONS))" ""
build build-arch: test-stamp
endif

autoconf-stamp:
	dh_testdir
	autoreconf -vfi
	# Nuke pre-compiled headers:
	find include/ -name '*.in' \
	| sed -e 's/[.]in$$//' \
	| xargs rm -f
	touch $(@)

build-stamp: autoconf-stamp
build-stamp: obj/build-stamp
build-stamp: $(patsubst %,obj.%/build-stamp,$(pythons))

obj/config.status: autoconf-stamp
	mkdir -p $(dir $@)
	cd $(dir $@) \
		&& ../configure \
			$(configure_common_flags) \
			$(configure_main_flags) \
			$(configure_bindings_flags) \

obj.python%/config.status: autoconf-stamp
	mkdir -p $(dir $@)
	echo "am_cv_python_pyexecdir='/usr/lib/python$(*)/site-packages'" > $(dir $@)/config.cache
	echo "am_cv_python_pythondir='$${am_cv_python_pyexecdir}'" >> $(dir $@)/config.cache
	cd $(dir $@) \
		&& PYTHON=/usr/bin/python$(*) ../configure -C \
			$(configure_common_flags) \
			$(configure_non_main_flags) \
			--enable-python \
			--enable-python-doc \

obj/build-stamp: obj/config.status
	$(MAKE) $(parallel) -C $(dir $@)
	touch $(@)

obj.python%/build-stamp: obj.python%/config.status
	$(MAKE) $(parallel) -C $(dir $@)
	touch $(@)

test-stamp: obj/test-stamp
test-stamp: $(patsubst %,obj.%/test-stamp,$(pythons))

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

obj.python%/test-stamp: obj.python%/build-stamp
	PYTHON=/usr/bin/python$(*) $(MAKE) -C $(dir $@)/python/ check

.PHONY: binary binary-arch binary-indep
binary binary-arch: build-arch
	dh_testdir
	dh_testroot
	dh_prep -X tmp
	$(MAKE) -f debian/rules \
		obj/install-stamp \
		$(patsubst %,obj.%/install-stamp,$(pythons))
	rm -f debian/tmp/usr/lib/*.la
	cd debian/tmp/usr/share/doc/pinktrace/api/python && \
		ln -sf pinktrace-module.html index.html
	dh_install --fail-missing
	dh_installdocs
	dh_installchangelogs debian/changelog.upstream
	dh_installexamples
	dh_installman
	dh_compress -X examples
	dh_fixperms
	dh_strip
	dh_makeshlibs -- -c4
	dh_shlibdeps
	dh_pysupport -p python-pinktrace
	dh_python3 -p python3-pinktrace
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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

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

debian/changelog.upstream:
	wget -q -O - http://dev.exherbo.org/~alip/pinktrace/ \
	| sed -e "1,/<h2.*>News<\/h2>/d" -e "/<div id='menu'>/ { s///; q }" \
	| elinks -dump -no-numbering -no-references \
	| sed -e "s/^  //" \
	> $(@)

.SECONDARY:
.NOTPARALLEL:

# vim:ts=4 sw=4 noet
